Topic.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\topic\shop\controller;
  11. use app\shop\controller\BaseShop;
  12. use addon\topic\model\Topic as TopicModel;
  13. /**
  14. * 专题活动
  15. * @author Administrator
  16. *
  17. */
  18. class Topic extends BaseShop
  19. {
  20. /**
  21. * 专题活动列表
  22. */
  23. public function lists()
  24. {
  25. if (request()->isAjax()) {
  26. $page = input('page', 1);
  27. $page_size = input('page_size', PAGE_LIST_ROWS);
  28. $topic_name = input('topic_name', '');
  29. $condition[] = [ 'site_id', '=', $this->site_id ];
  30. if ($topic_name) {
  31. $condition[] = [ 'topic_name', 'like', '%' . $topic_name . '%' ];
  32. }
  33. $status = input('status', '');
  34. if ($status !== '') {
  35. $condition[] = [ 'status', '=', $status ];
  36. }
  37. $order = 'create_time desc';
  38. $field = '*';
  39. $start_time = input('start_time', '');
  40. $end_time = input('end_time', '');
  41. if ($start_time && !$end_time) {
  42. $condition[] = [ 'end_time', '>=', date_to_time($start_time) ];
  43. } elseif (!$start_time && $end_time) {
  44. $condition[] = [ 'start_time', '<=', date_to_time($end_time) ];
  45. } elseif ($start_time && $end_time) {
  46. $start_timestamp = date_to_time($start_time);
  47. $end_timestamp = date_to_time($end_time);
  48. $sql = "start_time between {$start_timestamp} and {$end_timestamp}";
  49. $sql .= " or end_time between {$start_timestamp} and {$end_timestamp}";
  50. $sql .= " or (start_time <= {$start_timestamp} and end_time >= {$end_timestamp})";
  51. $condition[] = [ '', 'exp', \think\facade\Db::raw($sql) ];
  52. }
  53. $topic_model = new TopicModel();
  54. $res = $topic_model->getTopicPageList($condition, $page, $page_size, $order, $field);
  55. return $res;
  56. } else {
  57. return $this->fetch("topic/lists");
  58. }
  59. }
  60. /**
  61. * 添加专题活动
  62. */
  63. public function add()
  64. {
  65. if (request()->isAjax()) {
  66. $topic_name = input("topic_name", '');
  67. $start_time = input("start_time", 0);
  68. $end_time = input("end_time", 0);
  69. $remark = input("remark", '');
  70. $topic_adv = input("topic_adv", '');
  71. $bg_color = input("bg_color", '#ffffff');
  72. $goods = input("goods", '{}');
  73. $topic_model = new TopicModel();
  74. $data = array (
  75. 'site_id' => $this->site_id,
  76. "topic_name" => $topic_name,
  77. "start_time" => $start_time,
  78. "end_time" => $end_time,
  79. "remark" => $remark,
  80. "topic_adv" => $topic_adv,
  81. 'bg_color' => $bg_color,
  82. 'goods' => json_decode($goods, true),
  83. 'create_time' => time()
  84. );
  85. $res = $topic_model->addTopic($data);
  86. return $res;
  87. } else {
  88. return $this->fetch("topic/add");
  89. }
  90. }
  91. /**
  92. * 编辑专题活动
  93. */
  94. public function edit()
  95. {
  96. $topic_id = input("topic_id", '');
  97. $topic_model = new TopicModel();
  98. if (request()->isAjax()) {
  99. $topic_name = input("topic_name", '');
  100. $start_time = input("start_time", 0);
  101. $end_time = input("end_time", 0);
  102. $remark = input("remark", '');
  103. $topic_adv = input("topic_adv", '');
  104. $bg_color = input("bg_color", '#ffffff');
  105. $goods = input("goods", '{}');
  106. $del_id = input('del_id', '');
  107. $data = array (
  108. "topic_name" => $topic_name,
  109. "start_time" => $start_time,
  110. "end_time" => $end_time,
  111. "remark" => $remark,
  112. "topic_adv" => $topic_adv,
  113. "topic_id" => $topic_id,
  114. 'bg_color' => $bg_color,
  115. 'goods' => json_decode($goods, true),
  116. 'modify_time' => time()
  117. );
  118. $res = $topic_model->editTopic($data, $this->site_id, $del_id);
  119. return $res;
  120. } else {
  121. $condition = array (
  122. [ "topic_id", "=", $topic_id ]
  123. );
  124. $topic_info_result = $topic_model->getTopicDetail($condition);
  125. if (empty($topic_info_result[ 'data' ])) $this->error('未获取到活动数据', addon_url('topic://shop/topic/lists'));
  126. $this->assign("info", $topic_info_result[ "data" ]);
  127. $this->assign('sku_ids', implode(',', array_column($topic_info_result[ 'data' ][ 'goods_list' ], 'sku_id')));
  128. return $this->fetch("topic/edit");
  129. }
  130. }
  131. /**
  132. * 查看专题活动
  133. */
  134. public function detail()
  135. {
  136. $topic_id = input("topic_id", '');
  137. $topic_model = new TopicModel();
  138. $condition = array (
  139. [ "topic_id", "=", $topic_id ]
  140. );
  141. $topic_info_result = $topic_model->getTopicDetail($condition);
  142. if (empty($topic_info_result[ 'data' ])) $this->error('未获取到活动数据', addon_url('topic://shop/topic/lists'));
  143. $this->assign("info", $topic_info_result[ "data" ]);
  144. $this->assign('sku_ids', implode(',', array_column($topic_info_result[ 'data' ][ 'goods_list' ], 'sku_id')));
  145. return $this->fetch("topic/detail");
  146. }
  147. /**
  148. * 删除专题活动
  149. */
  150. public function delete()
  151. {
  152. $topic_id = input("topic_id", '');
  153. $topic_model = new TopicModel();
  154. $res = $topic_model->deleteTopic($topic_id, $this->site_id);
  155. return $res;
  156. }
  157. }