Discount.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\discount\shop\controller;
  11. use addon\discount\model\Discount as DiscountModel;
  12. /**
  13. * 限时折扣控制器
  14. */
  15. class Discount extends BaseController
  16. {
  17. /**
  18. * 添加活动
  19. */
  20. public function add()
  21. {
  22. if (request()->isAjax()) {
  23. $data = [
  24. 'discount_name' => input('discount_name', ''),
  25. 'remark' => input('remark', ''),
  26. 'start_time' => strtotime(input('start_time', '')),
  27. 'end_time' => strtotime(input('end_time', '')),
  28. 'site_id' => $this->site_id,
  29. 'goods_data' => input('goods_data', '')
  30. ];
  31. $discount_model = new DiscountModel();
  32. return $discount_model->addDiscount($data);
  33. } else {
  34. return $this->fetch("discount/add");
  35. }
  36. }
  37. /**
  38. * 编辑活动
  39. */
  40. public function edit()
  41. {
  42. $discount_model = new DiscountModel();
  43. if (request()->isAjax()) {
  44. $data = [
  45. 'discount_name' => input('discount_name', ''),
  46. 'remark' => input('remark', ''),
  47. 'start_time' => strtotime(input('start_time', '')),
  48. 'end_time' => strtotime(input('end_time', '')),
  49. 'discount_id' => input('discount_id', 0),
  50. 'goods_id' => input('goods_id', 0),
  51. 'site_id' => $this->site_id,
  52. 'sku_list' => input('sku_list', ''),
  53. 'cancel_sku_list' => input('cancel_sku_list', ''),
  54. ];
  55. return $discount_model->editDiscount($data);
  56. } else {
  57. $discount_id = input('discount_id', 0);
  58. $this->assign('discount_id', $discount_id);
  59. $discount_info = $discount_model->getDiscountDetail($discount_id, $this->site_id);
  60. if (empty($discount_info[ 'data' ])) $this->error('未获取到活动数据', addon_url('discount://shop/discount/lists'));
  61. $this->assign('discount_info', $discount_info[ 'data' ]);
  62. return $this->fetch("discount/edit");
  63. }
  64. }
  65. /**
  66. * 限时折扣详情
  67. */
  68. public function detail()
  69. {
  70. $discount_model = new DiscountModel();
  71. if (request()->isAjax()) {
  72. //活动商品
  73. $discount_id = input('discount_id', 0);
  74. $list = $discount_model->getDiscountGoods($discount_id);
  75. foreach ($list[ 'data' ] as $key => $val) {
  76. if ($val[ 'price' ] != 0) {
  77. $discount_rate = floor($val[ 'discount_price' ] / $val[ 'price' ] * 100);
  78. } else {
  79. $discount_rate = 100;
  80. }
  81. $list[ 'data' ][ $key ][ 'discount_rate' ] = $discount_rate;
  82. }
  83. return $list;
  84. } else {
  85. $discount_id = input('discount_id', 0);
  86. $this->assign('discount_id', $discount_id);
  87. //活动详情
  88. $discount_info = $discount_model->getDiscountInfo($discount_id, $this->site_id);
  89. if (empty($discount_info[ 'data' ])) $this->error('未获取到活动数据', addon_url('discount://shop/discount/lists'));
  90. $this->assign('discount_info', $discount_info[ 'data' ]);
  91. return $this->fetch("discount/detail");
  92. }
  93. }
  94. /**
  95. * 活动列表
  96. */
  97. public function lists()
  98. {
  99. $discount_model = new DiscountModel();
  100. if (request()->isAjax()) {
  101. $page = input('page', 1);
  102. $page_size = input('page_size', PAGE_LIST_ROWS);
  103. $goods_name = input('goods_name', '');
  104. $status = input('status', '');
  105. $condition = [];
  106. if ($status !== "") {
  107. $condition[] = [ 'd.status', '=', $status ];
  108. }
  109. $condition[] = [ 'd.site_id', '=', $this->site_id ];
  110. $condition[] = [ 'g.is_delete', '=', 0 ];
  111. $condition[] = [ 'g.goods_name', 'like', '%' . $goods_name . '%' ];
  112. $order = 'd.create_time desc';
  113. $field = 'd.*,g.goods_name,g.goods_image,g.price';
  114. $discount_status_arr = $discount_model->getDiscountStatus();
  115. $alias = 'd';
  116. $join = [
  117. [ 'goods g', 'd.goods_id = g.goods_id', 'inner' ]
  118. ];
  119. $start_time = input('start_time', '');
  120. $end_time = input('end_time', '');
  121. if ($start_time && !$end_time) {
  122. $condition[] = [ 'd.end_time', '>=', date_to_time($start_time) ];
  123. } elseif (!$start_time && $end_time) {
  124. $condition[] = [ 'd.start_time', '<=', date_to_time($end_time) ];
  125. } elseif ($start_time && $end_time) {
  126. $start_timestamp = date_to_time($start_time);
  127. $end_timestamp = date_to_time($end_time);
  128. $sql = "d.start_time between {$start_timestamp} and {$end_timestamp}";
  129. $sql .= " or d.end_time between {$start_timestamp} and {$end_timestamp}";
  130. $sql .= " or (d.start_time <= {$start_timestamp} and d.end_time >= {$end_timestamp})";
  131. $condition[] = [ '', 'exp', \think\facade\Db::raw($sql) ];
  132. }
  133. $res = $discount_model->getDiscountPageList($condition, $page, $page_size, $order, $field, $alias, $join);
  134. foreach ($res[ 'data' ][ 'list' ] as $key => $val) {
  135. $res[ 'data' ][ 'list' ][ $key ][ 'status_name' ] = $discount_status_arr[ $val[ 'status' ] ];
  136. }
  137. return $res;
  138. } else {
  139. //限时折扣状态
  140. $discount_status_arr = $discount_model->getDiscountStatus();
  141. $this->assign('discount_status_arr', $discount_status_arr);
  142. return $this->fetch("discount/lists");
  143. }
  144. }
  145. /**
  146. * 关闭活动
  147. */
  148. public function close()
  149. {
  150. if (request()->isAjax()) {
  151. $discount_id = input('discount_id', 0);
  152. $discount_model = new DiscountModel();
  153. return $discount_model->closeDiscount($discount_id, $this->site_id);
  154. }
  155. }
  156. /**
  157. * 删除活动
  158. */
  159. public function delete()
  160. {
  161. if (request()->isAjax()) {
  162. $discount_id = input('discount_id', 0);
  163. $discount_model = new DiscountModel();
  164. return $discount_model->deleteDiscount($discount_id, $this->site_id);
  165. }
  166. }
  167. /**
  168. * 获取商品列表
  169. * @return array
  170. */
  171. public function getSkuList()
  172. {
  173. if (request()->isAjax()) {
  174. $discount_model = new DiscountModel();
  175. $discount_id = input('discount_id', '');
  176. $goods_list = $discount_model->getDiscountGoodsList($discount_id);
  177. return $goods_list;
  178. }
  179. }
  180. }