Pinfan.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\pinfan\shop\controller;
  11. use addon\pinfan\model\PinfanOrder;
  12. use app\shop\controller\BaseShop;
  13. use addon\pinfan\model\Pinfan as PinfanModel;
  14. use addon\pinfan\model\PinfanGroup as PinfanGroupModel;
  15. /**
  16. * 拼团控制器
  17. */
  18. class Pinfan extends BaseShop
  19. {
  20. /*
  21. * 拼团活动列表
  22. */
  23. public function lists()
  24. {
  25. if (request()->isAjax()) {
  26. $model = new PinfanModel();
  27. $condition = [
  28. [ 'p.site_id', '=', $this->site_id ],
  29. [ 'g.goods_state', '=', 1 ],
  30. [ 'g.is_delete', '=', 0 ]
  31. ];
  32. $status = input('status', '');//拼团状态
  33. if ($status) {
  34. if ($status == 6) {
  35. $condition[] = [ 'p.status', '=', 0 ];
  36. } else {
  37. $condition[] = [ 'p.status', '=', $status ];
  38. }
  39. }
  40. $goods_name = input('goods_name', '');
  41. if ($goods_name) {
  42. $condition[] = [ 'g.goods_name', 'like', '%' . $goods_name . '%' ];
  43. }
  44. $start_time = input('start_time', '');
  45. $end_time = input('end_time', '');
  46. if ($start_time && !$end_time) {
  47. $condition[] = [ 'p.start_time', '>=', date_to_time($start_time) ];
  48. } elseif (!$start_time && $end_time) {
  49. $condition[] = [ 'p.end_time', '<=', date_to_time($end_time) ];
  50. } elseif ($start_time && $end_time) {
  51. $condition[] = [ 'p.start_time', '>=', date_to_time($start_time) ];
  52. $condition[] = [ 'p.end_time', '<=', date_to_time($end_time) ];
  53. }
  54. //排序
  55. $order = input('order', 'create_time');
  56. $sort = input('sort', 'desc');
  57. if ($order == 'create_time') {
  58. $order_by = 'p.' . $order . ' ' . $sort;
  59. } else {
  60. $order_by = 'p.' . $order . ' ' . $sort . ',p.create_time desc';
  61. }
  62. $page = input('page', 1);
  63. $page_size = input('page_size', PAGE_LIST_ROWS);
  64. $list = $model->getPinfanPageList($condition, $page, $page_size, $order_by);
  65. return $list;
  66. } else {
  67. $this->forthMenu();
  68. return $this->fetch("pinfan/lists");
  69. }
  70. }
  71. /**
  72. * 添加活动
  73. */
  74. public function add()
  75. {
  76. if (request()->isAjax()) {
  77. $pintuan_data = [
  78. 'site_id' => $this->site_id,
  79. 'site_name' => '',
  80. 'pintuan_name' => input('pintuan_name', ''),//活动名称
  81. 'is_virtual_goods' => input('is_virtual_goods', ''),//是否是虚拟商品
  82. 'pintuan_num' => input('pintuan_num', ''),//参团人数
  83. 'chengtuan_num' => input('chengtuan_num', ''),//实际成功人数
  84. 'reward_type' => input('reward_type', ''),//拼团成功但是未发货奖励 类型
  85. 'reward_type_num' => input('reward_type_num', ''),//奖励类型数量
  86. 'pintuan_time' => input('pintuan_time', ''),//拼团有效期
  87. 'remark' => input('remark', ''),//活动规则
  88. 'create_time' => time(),//
  89. 'is_recommend' => input('is_recommend', ''),//是否推荐
  90. 'start_time' => date_to_time(input('start_time', '')),//开始时间
  91. 'end_time' => date_to_time(input('end_time', '')),//结束时间
  92. 'pintuan_price' => input('pintuan_price', ''),//拼团价
  93. 'buy_num' => input('buy_num', ''),//拼团限制购买
  94. 'is_single_buy' => input('is_single_buy', ''),//是否单独购买
  95. 'is_virtual_buy' => input('is_virtual_buy', ''),//是否虚拟成团
  96. 'is_promotion' => input('is_promotion', ''),//是否团长优惠
  97. ];
  98. $goods = [
  99. 'goods_ids' => input('goods_ids', ''),
  100. 'sku_ids' => input('sku_ids', ''),
  101. ];
  102. $sku_list = input('sku_list', '');
  103. $pinfan_model = new PinfanModel();
  104. return $pinfan_model->addPinfan($pintuan_data, $goods, $sku_list);
  105. } else {
  106. $pintuan_name = '拼团返利 ' . date('Y-m-d');
  107. $this->assign('pintuan_name', $pintuan_name);
  108. return $this->fetch("pinfan/add");
  109. }
  110. }
  111. /**
  112. * 编辑活动
  113. */
  114. public function edit()
  115. {
  116. $pinfan_model = new PinfanModel();
  117. if (request()->isAjax()) {
  118. $pintuan_data = [
  119. 'pintuan_id' => input('pintuan_id', ''),
  120. 'site_id' => $this->site_id,
  121. 'pintuan_name' => input('pintuan_name', ''),//活动名称
  122. 'goods_id' => input('goods_id', ''),//商品ID
  123. 'is_virtual_goods' => input('is_virtual_goods', ''),//是否是虚拟商品
  124. 'pintuan_num' => input('pintuan_num', ''),//参团人数
  125. 'chengtuan_num' => input('chengtuan_num', ''),//实际成功人数
  126. 'reward_type' => input('reward_type', ''),//拼团成功但是未发货奖励 类型
  127. 'reward_type_num' => input('reward_type_num', ''),//奖励类型数量
  128. 'modify_time' => time(),
  129. 'pintuan_time' => input('pintuan_time', ''),//拼团有效期
  130. 'remark' => input('remark', ''),//活动规则
  131. 'is_recommend' => input('is_recommend', ''),//是否推荐
  132. 'start_time' => date_to_time(input('start_time', '')),//开始时间
  133. 'end_time' => date_to_time(input('end_time', '')),//结束时间
  134. 'buy_num' => input('buy_num', ''),//拼团限制购买
  135. 'is_single_buy' => input('is_single_buy', ''),//是否单独购买
  136. 'is_virtual_buy' => input('is_virtual_buy', ''),//是否虚拟成团
  137. 'is_promotion' => input('is_promotion', ''),//是否团长优惠
  138. ];
  139. $sku_list = input('sku_list', '');
  140. $goods = [
  141. 'goods_id' => input('goods_id', ''),
  142. 'sku_ids' => input('sku_ids', ''),
  143. ];
  144. return $pinfan_model->editPinfan($pintuan_data, $goods, $sku_list);
  145. } else {
  146. $pintuan_id = input('pintuan_id', '');
  147. //获取拼团信息
  148. $pintuan_info = $pinfan_model->getPinfanDetail($pintuan_id, $this->site_id);
  149. if (empty($pintuan_info[ 'data' ])) $this->error('未获取到活动数据', addon_url('pinfan://shop/pinfan/lists'));
  150. $this->assign('pintuan_info', $pintuan_info);
  151. return $this->fetch("pinfan/edit");
  152. }
  153. }
  154. /*
  155. * 拼团详情
  156. */
  157. public function detail()
  158. {
  159. $pinfan_model = new PinfanModel();
  160. $pintuan_id = input('pintuan_id', '');
  161. //获取拼团信息
  162. $pintuan_info = $pinfan_model->getPinfanJoinGoodsList($pintuan_id, $this->site_id)[ 'data' ] ?? [];
  163. if (empty($pintuan_info)) $this->error('未获取到活动数据', addon_url('pintuan://shop/pintuan/lists'));
  164. $this->assign('info', $pintuan_info);
  165. return $this->fetch("pinfan/detail");
  166. }
  167. /*
  168. * 删除拼团活动
  169. */
  170. public function delete()
  171. {
  172. $pintuan_id = input('pintuan_id', '');
  173. $site_id = $this->site_id;
  174. $pinfan_model = new PinfanModel();
  175. return $pinfan_model->deletePinfan($pintuan_id, $site_id);
  176. }
  177. /*
  178. * 拼团活动失效
  179. */
  180. public function invalid()
  181. {
  182. $pintuan_id = input('pintuan_id', '');
  183. $site_id = $this->site_id;
  184. $pinfan_model = new PinfanModel();
  185. return $pinfan_model->invalidPinfanTo($pintuan_id, $site_id);
  186. }
  187. /********************************** 开团团队 ******************************************************/
  188. /*
  189. * 开团团队列表
  190. */
  191. public function group()
  192. {
  193. $model = new PinfanGroupModel();
  194. $condition[] = [ 'pg.site_id', '=', $this->site_id ];
  195. $pintuan_id = input('pintuan_id', '');
  196. if ($pintuan_id) {
  197. $condition[] = [ 'pg.pintuan_id', '=', $pintuan_id ];
  198. }
  199. //获取续签信息
  200. if (request()->isAjax()) {
  201. $goods_name = input('goods_name', '');
  202. $nickname = input('nickname', '');
  203. $start_time = input('start_time', '');
  204. $end_time = input('end_time', '');
  205. $status = input('status', '');//拼团状态
  206. $page = input('page', 1);
  207. $page_size = input('page_size', PAGE_LIST_ROWS);
  208. if ($goods_name) {
  209. $condition[] = [ 'g.goods_name', 'like', '%' . $goods_name . '%' ];
  210. }
  211. if ($nickname) {
  212. $condition[] = [ 'm.nickname', 'like', '%' . $nickname . '%' ];
  213. }
  214. if ($start_time && !$end_time) {
  215. $condition[] = [ 'pg.create_time', '>=', date_to_time($start_time) ];
  216. } elseif (!$start_time && $end_time) {
  217. $condition[] = [ 'pg.create_time', '<=', date_to_time($end_time) ];
  218. } elseif ($start_time && $end_time) {
  219. $condition[] = [ 'pg.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  220. }
  221. if ($status) {
  222. if ($status == 6) {
  223. $condition[] = [ 'pg.status', '=', 0 ];
  224. } else {
  225. $condition[] = [ 'pg.status', '=', $status ];
  226. }
  227. }
  228. $list = $model->getPinfanGroupPageList($condition, $page, $page_size, 'pg.group_id desc');
  229. return $list;
  230. } else {
  231. $this->assign('pintuan_id', $pintuan_id);
  232. $this->forthMenu();
  233. return $this->fetch("pinfan/group");
  234. }
  235. }
  236. /*
  237. * 拼团组成员订单列表
  238. */
  239. public function groupOrder()
  240. {
  241. $model = new PinfanOrder();
  242. $condition = [];
  243. // $condition[] = ['ppo.pintuan_status', 'in', '2,3'];
  244. $group_id = input('group_id', '');
  245. if ($group_id) {
  246. $condition[] = [ 'ppo.group_id', '=', $group_id ];
  247. }
  248. //获取续签信息
  249. if (request()->isAjax()) {
  250. $page = input('page', 1);
  251. $page_size = input('page_size', PAGE_LIST_ROWS);
  252. $list = $model->getPinfanOrderPageList($condition, $page, $page_size, 'ppo.id desc');
  253. return $list;
  254. } else {
  255. $this->assign('group_id', $group_id);
  256. //获取团长信息
  257. $pinfan_group_model = new PinfanGroupModel();
  258. $info = $pinfan_group_model->getPinfanGroupDetail([ [ 'pg.group_id', '=', $group_id ], [ 'pg.site_id', '=', $this->site_id ] ]);
  259. if (empty($info[ 'data' ])) $this->error('未获取到成团数据', addon_url('pinfan://shop/pinfan/group'));
  260. $this->assign('info', $info[ 'data' ]);
  261. return $this->fetch("pinfan/group_order");
  262. }
  263. }
  264. /**
  265. * 获取商品列表
  266. * @return array
  267. */
  268. public function getSkuList()
  269. {
  270. if (request()->isAjax()) {
  271. $pintuan_id = input('pintuan_id', '');
  272. $pinfan_model = new PinfanModel();
  273. $pintuan_info = $pinfan_model->getPinfanGoodsList($pintuan_id, $this->site_id);
  274. return $pintuan_info;
  275. }
  276. }
  277. /**
  278. * 拼团推广
  279. */
  280. public function pintuanUrl()
  281. {
  282. $pinfan_id = input('pintuan_id', '');
  283. $pinfan_model = new PinfanModel();
  284. // $pintuan_info = $pinfan_model->getPinfanInfo([['pintuan_id', '=', $pintuan_id]]);
  285. // $pintuan_info = $pintuan_info['data'];
  286. // $res = $pinfan_model->qrcode($pintuan_info['pintuan_id'], $pintuan_info['pintuan_name'], $this->site_id);
  287. $res = $pinfan_model->urlQrcode('/pages_promotion/pinfan/detail', [ 'id' => $pinfan_id ], 'pinfan', $this->site_id);
  288. return $res;
  289. }
  290. }