Exchange.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\pointexchange\shop\controller;
  11. use addon\coupon\model\CouponType as CouponTypeModel;
  12. use addon\pointexchange\model\Exchange as ExchangeModel;
  13. use app\shop\controller\BaseShop;
  14. use app\model\express\ExpressTemplate as ExpressTemplateModel;
  15. /**
  16. * 积分兑换
  17. * @author Administrator
  18. *
  19. */
  20. class Exchange extends BaseShop
  21. {
  22. /**
  23. * 积分兑换列表
  24. */
  25. public function lists()
  26. {
  27. if (request()->isAjax()) {
  28. $page = input('page', 1);
  29. $page_size = input('page_size', PAGE_LIST_ROWS);
  30. $search_text = input('search_text', '');
  31. $type = input('type', '');
  32. $state = input('state', '');
  33. $sort = input('sort', 'asc');
  34. $condition[] = [ 'peg.site_id', '=', $this->site_id ];
  35. if ($search_text) {
  36. $condition[] = [ 'peg.name', 'like', '%' . $search_text . '%' ];
  37. }
  38. if ($type) {
  39. $condition[] = [ 'peg.type', '=', $type ];
  40. }
  41. if ($state != '') {
  42. $condition[] = [ 'peg.state', '=', $state ];
  43. }
  44. $field = 'peg.*';
  45. $alias = 'peg';
  46. $join = [];
  47. //排序
  48. $order = input('order', 'create_time');
  49. $sort = input('sort', 'desc');
  50. if ($order == 'sort') {
  51. $order_by = 'peg.' . $order . ' ' . $sort;
  52. } else {
  53. $order_by = 'peg.' . $order . ' ' . $sort . ',peg.sort desc';
  54. }
  55. $exchange_model = new ExchangeModel();
  56. //兑换名称 兑换图片 兑换库存 兑换价格
  57. $lists = $exchange_model->getExchangeGoodsPageList($condition, $page, $page_size, $order_by, $field, $alias, $join);
  58. return $lists;
  59. }
  60. $this->forthMenu();
  61. return $this->fetch("exchange/lists");
  62. }
  63. /**
  64. * 添加积分兑换
  65. */
  66. public function add()
  67. {
  68. if (request()->isAjax()) {
  69. $type = input('type', '1');//兑换类型 1 商品 2 优惠券 3 红包
  70. $data = [
  71. 'site_id' => $this->site_id,
  72. 'type' => $type,//兑换类型 1 商品 2 优惠券 3 红包
  73. 'point' => input('point', ''),//积分
  74. 'state' => input('state', ''),
  75. 'is_free_shipping' => input('is_free_shipping', ''),
  76. 'delivery_type' => input('delivery_type', ''),
  77. 'delivery_price' => input('delivery_price', ''),
  78. 'shipping_template' => input('shipping_template', ''),
  79. ];
  80. if ($type == 1) {
  81. $data[ 'goods_data' ] = input('goods_data', '');
  82. $data[ 'rule' ] = input('content', '');
  83. $data[ 'type_name' ] = '商品';
  84. } elseif ($type == 2) {
  85. $data[ 'coupon_type_id' ] = input('coupon_type_id', '0');//优惠券id
  86. $data[ 'content' ] = input('content', '');
  87. $data[ 'type_name' ] = '优惠券';
  88. $data[ 'stock' ] = input('stock', '');
  89. } elseif ($type == 3) {
  90. $data[ 'name' ] = input('name', '');
  91. $data[ 'image' ] = input('image', '');
  92. $data[ 'stock' ] = input('stock', '');
  93. $data[ 'balance' ] = input('balance', '0');
  94. $data[ 'content' ] = input('content', '');
  95. $data[ 'type_name' ] = '红包';
  96. } else {
  97. return error(-1, '');
  98. }
  99. $exchange_model = new ExchangeModel();
  100. $res = $exchange_model->addExchange($data);
  101. return $res;
  102. } else {
  103. //获取运费模板
  104. $express_template_model = new ExpressTemplateModel();
  105. $express_template_list = $express_template_model->getExpressTemplateList([ [ 'site_id', "=", $this->site_id ] ], 'template_id,template_name', 'is_default desc');
  106. $express_template_list = $express_template_list[ 'data' ];
  107. $this->assign("express_template_list", $express_template_list);
  108. return $this->fetch("exchange/add");
  109. }
  110. }
  111. /**
  112. * 编辑积分兑换
  113. */
  114. public function edit()
  115. {
  116. $id = input("id", 0);
  117. $exchange_model = new ExchangeModel();
  118. if (request()->isAjax()) {
  119. $type = input('type', '1');//兑换类型 1 商品 2 优惠券 3 红包
  120. $data = [
  121. 'site_id' => $this->site_id,
  122. 'type' => $type,//兑换类型 1 商品 2 优惠券 3 红包
  123. 'point' => input('point', ''),//积分
  124. 'state' => input('state', ''),
  125. 'id' => $id,
  126. 'is_free_shipping' => input('is_free_shipping', ''),
  127. 'delivery_type' => input('delivery_type', ''),
  128. 'delivery_price' => input('delivery_price', ''),
  129. 'shipping_template' => input('shipping_template', ''),
  130. ];
  131. if ($type == 1) {
  132. $data[ 'goods_data' ] = input('goods_data', '');
  133. $data[ 'rule' ] = input('content', '');
  134. $data[ 'type_name' ] = '商品';
  135. } elseif ($type == 2) {
  136. $data[ 'coupon_type_id' ] = input('coupon_type_id', '0');//优惠券id
  137. $data[ 'content' ] = input('content', '');
  138. $data[ 'type_name' ] = '优惠券';
  139. $data[ 'stock' ] = input('stock', '');
  140. } elseif ($type == 3) {
  141. $data[ 'name' ] = input('name', '');
  142. $data[ 'image' ] = input('image', '');
  143. $data[ 'stock' ] = input('stock', '');
  144. $data[ 'balance' ] = input('balance', '0');
  145. $data[ 'content' ] = input('content', '');
  146. $data[ 'type_name' ] = '红包';
  147. } else {
  148. return error(-1, '');
  149. }
  150. $res = $exchange_model->editExchange($data);
  151. return $res;
  152. } else {
  153. $exchange_info = $exchange_model->getExchangeGoodsDetail($id, $this->site_id);
  154. if (empty($exchange_info[ 'data' ][ 'id' ])) {
  155. $this->error('对应的积分兑换活动商品/优惠券已经不存在了!');
  156. }
  157. $this->assign("exchange_info", $exchange_info[ 'data' ]);
  158. //获取运费模板
  159. $express_template_model = new ExpressTemplateModel();
  160. $express_template_list = $express_template_model->getExpressTemplateList([ [ 'site_id', "=", $this->site_id ] ], 'template_id,template_name', 'is_default desc');
  161. $express_template_list = $express_template_list[ 'data' ];
  162. $this->assign("express_template_list", $express_template_list);
  163. return $this->fetch("exchange/edit");
  164. }
  165. }
  166. /**
  167. *关闭积分兑换
  168. */
  169. public function delete()
  170. {
  171. $id = input("id", 0);
  172. $exchange_model = new ExchangeModel();
  173. $res = $exchange_model->deleteExchange($id);
  174. return $res;
  175. }
  176. /**
  177. * 修改排序
  178. */
  179. public function modifySort()
  180. {
  181. $sort = input('sort', 0);
  182. $id = input('id', 0);
  183. $exchange_model = new ExchangeModel();
  184. return $exchange_model->modifyExchangeSort($sort, $id);
  185. }
  186. /**
  187. * 获取商品列表
  188. * @return array
  189. */
  190. public function getSkuList()
  191. {
  192. if (request()->isAjax()) {
  193. $exchange_model = new ExchangeModel();
  194. $exchange_id = input('exchange_id', '');
  195. $field = 'pe.*,sku.sku_name,sku.price as market_price,sku.sku_image,sku.stock';
  196. $alias = 'pe';
  197. $join = [
  198. [
  199. 'promotion_exchange_goods peg',
  200. 'peg.id = pe.exchange_goods_id',
  201. 'inner'
  202. ],
  203. [
  204. 'goods_sku sku',
  205. 'sku.sku_id = pe.type_id',
  206. 'inner'
  207. ]
  208. ];
  209. $condition = [
  210. [ 'peg.id', '=', $exchange_id ],
  211. [ 'sku.is_delete', '=', 0 ],
  212. [ 'sku.goods_state', '=', 1 ],
  213. [ 'peg.state', '=', 1 ],
  214. ];
  215. $goods_list = $exchange_model->getExchangeList($condition, $field, '', null, $alias, $join);
  216. foreach ($goods_list[ 'data' ] as $k => $v) {
  217. $goods_list[ 'data' ][ $k ][ 'stock' ] = numberFormat($goods_list[ 'data' ][ $k ][ 'stock' ]);
  218. }
  219. return $goods_list;
  220. }
  221. }
  222. /**
  223. * 获取优惠券列表
  224. */
  225. public function getCouponList()
  226. {
  227. $coupon_type_model = new CouponTypeModel();
  228. if (request()->isAjax()) {
  229. $page = input('page', 1);
  230. $page_size = input('page_size', PAGE_LIST_ROWS);
  231. $status = input('status', '');
  232. $condition = [];
  233. if ($status !== "") {
  234. $condition[] = [ 'status', '=', $status ];
  235. }
  236. $condition[] = [ 'site_id', '=', $this->site_id ];
  237. $order = 'sort asc';
  238. $field = '*';
  239. $res = $coupon_type_model->getCouponTypePageList($condition, $page, $page_size, $order, $field);
  240. $exchange_model = new ExchangeModel();
  241. //兑换名称 兑换图片 兑换库存 兑换价格
  242. $exchange_list = $exchange_model->getExchangeList([ [ 'type', '=', 2 ] ], 'type_id')[ 'data' ] ?? [];
  243. if ($exchange_list) {
  244. $exchange_list = array_column($exchange_list, 'type_id');
  245. }
  246. if ($res[ 'data' ][ 'list' ]) {
  247. foreach ($res[ 'data' ][ 'list' ] as $key => $val) {
  248. if (in_array($val[ 'coupon_type_id' ], $exchange_list)) {
  249. $res[ 'data' ][ 'list' ][ $key ][ 'is_exit' ] = 1;
  250. } else {
  251. $res[ 'data' ][ 'list' ][ $key ][ 'is_exit' ] = 0;
  252. }
  253. }
  254. }
  255. return $res;
  256. }
  257. }
  258. }