Groupbuy.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\groupbuy\model;
  11. use app\model\BaseModel;
  12. use app\model\goods\Goods;
  13. use app\model\system\Config as ConfigModel;
  14. use app\model\system\Cron;
  15. use think\facade\Cache;
  16. use think\facade\Db;
  17. /**
  18. * 团购活动
  19. */
  20. class Groupbuy extends BaseModel
  21. {
  22. /**
  23. * 添加团购
  24. * @param $groupbuy_data
  25. * @param $goods_list
  26. * @param $goods_ids
  27. * @return array
  28. */
  29. public function addGroupbuy($groupbuy_data, $goods_list, $goods_ids)
  30. {
  31. //查询该商品是否存在团购
  32. $count = model('promotion_groupbuy')->getCount(
  33. [
  34. [ 'site_id', '=', $groupbuy_data[ 'site_id' ] ],
  35. [ 'status', 'in', '1,2' ],
  36. [ 'goods_id', 'in', $goods_ids ],
  37. [ '', 'exp', Db::raw('not ( (`start_time` > ' . $groupbuy_data[ 'end_time' ] . ' and `start_time` > ' . $groupbuy_data[ 'start_time' ] . ' ) or (`end_time` < ' . $groupbuy_data[ 'start_time' ] . ' and `end_time` < ' . $groupbuy_data[ 'end_time' ] . '))') ]
  38. ]
  39. );
  40. if ($count > 0) {
  41. return $this->error('', "当前时间段内有商品存在团购活动");
  42. }
  43. // 当前时间
  44. $time = time();
  45. if ($time > $groupbuy_data[ 'end_time' ]) {
  46. return $this->error('', '当前时间不能大于结束时间');
  47. }
  48. if ($time > $groupbuy_data[ 'start_time' ] && $time < $groupbuy_data[ 'end_time' ]) {
  49. $groupbuy_data[ 'status' ] = 2;
  50. } else {
  51. $groupbuy_data[ 'status' ] = 1;
  52. }
  53. model('promotion_groupbuy')->startTrans();
  54. try {
  55. $groupbuy_data[ 'create_time' ] = $time;
  56. foreach ($goods_list as $v) {
  57. $groupbuy_id = model("promotion_groupbuy")->add(array_merge($v, $groupbuy_data));
  58. $cron = new Cron();
  59. if ($groupbuy_data[ 'status' ] == 2) {
  60. $goods = new Goods();
  61. $goods->modifyPromotionAddon($v[ 'goods_id' ], [ 'groupbuy' => $groupbuy_id ]);
  62. $cron->addCron(1, 0, "团购活动关闭", "CloseGroupbuy", $groupbuy_data[ 'end_time' ], $groupbuy_id);
  63. } else {
  64. $cron->addCron(1, 0, "团购活动开启", "OpenGroupbuy", $groupbuy_data[ 'start_time' ], $groupbuy_id);
  65. $cron->addCron(1, 0, "团购活动关闭", "CloseGroupbuy", $groupbuy_data[ 'end_time' ], $groupbuy_id);
  66. }
  67. }
  68. model('promotion_groupbuy')->commit();
  69. return $this->success();
  70. } catch (\Exception $e) {
  71. model('promotion_groupbuy')->rollback();
  72. return $this->error();
  73. }
  74. }
  75. /**
  76. * 编辑团购
  77. * @param $groupbuy_id
  78. * @param $site_id
  79. * @param $groupbuy_data
  80. * @return array|\multitype
  81. */
  82. public function editGroupbuy($groupbuy_id, $site_id, $groupbuy_data)
  83. {
  84. //查询该商品是否存在团购
  85. $count = model('promotion_groupbuy')->getCount(
  86. [
  87. [ 'site_id', '=', $site_id ],
  88. [ 'status', 'in', '1,2' ],
  89. [ 'groupbuy_id', '<>', $groupbuy_id ],
  90. [ 'goods_id', '=', $groupbuy_data[ 'goods_id' ] ],
  91. [ '', 'exp', Db::raw('not ( (`start_time` > ' . $groupbuy_data[ 'end_time' ] . ' and `start_time` > ' . $groupbuy_data[ 'start_time' ] . ' ) or (`end_time` < ' . $groupbuy_data[ 'start_time' ] . ' and `end_time` < ' . $groupbuy_data[ 'end_time' ] . '))') ]
  92. ]
  93. );
  94. if ($count > 0) {
  95. return $this->error('', "当前时间段内该商品存在团购活动");
  96. }
  97. // 当前时间
  98. $time = time();
  99. if ($time > $groupbuy_data[ 'end_time' ]) {
  100. return $this->error('', '当前时间不能大于结束时间');
  101. }
  102. if ($time > $groupbuy_data[ 'start_time' ] && $time < $groupbuy_data[ 'end_time' ]) {
  103. $groupbuy_data[ 'status' ] = 2;
  104. } else {
  105. $groupbuy_data[ 'status' ] = 1;
  106. }
  107. $groupbuy_data[ 'modify_time' ] = time();
  108. $res = model("promotion_groupbuy")->update($groupbuy_data, [ [ 'groupbuy_id', '=', $groupbuy_id ], [ 'site_id', '=', $site_id ] ]);
  109. $cron = new Cron();
  110. if ($groupbuy_data[ 'status' ] == 2) {
  111. //活动商品启动
  112. $this->cronOpenGroupbuy($groupbuy_id);
  113. $cron->deleteCron([ [ 'event', '=', 'OpenGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  114. $cron->deleteCron([ [ 'event', '=', 'CloseGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  115. $cron->addCron(1, 0, "团购活动关闭", "CloseGroupbuy", $groupbuy_data[ 'end_time' ], $groupbuy_id);
  116. } else {
  117. $cron->deleteCron([ [ 'event', '=', 'OpenGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  118. $cron->deleteCron([ [ 'event', '=', 'CloseGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  119. $cron->addCron(1, 0, "团购活动开启", "OpenGroupbuy", $groupbuy_data[ 'start_time' ], $groupbuy_id);
  120. $cron->addCron(1, 0, "团购活动关闭", "CloseGroupbuy", $groupbuy_data[ 'end_time' ], $groupbuy_id);
  121. }
  122. return $this->success($res);
  123. }
  124. /**
  125. * 删除团购活动
  126. * @param $groupbuy_id
  127. * @param $site_id
  128. * @return array|\multitype
  129. */
  130. public function deleteGroupbuy($groupbuy_id, $site_id)
  131. {
  132. //团购信息
  133. $groupbuy_info = model('promotion_groupbuy')->getInfo([ [ 'groupbuy_id', '=', $groupbuy_id ], [ 'site_id', '=', $site_id ] ], 'groupbuy_id,status,goods_id');
  134. if ($groupbuy_info) {
  135. if (in_array($groupbuy_info[ 'status' ], [ 1, 3 ])) {
  136. $res = model('promotion_groupbuy')->delete([ [ 'groupbuy_id', '=', $groupbuy_id ] ]);
  137. if ($res) {
  138. $cron = new Cron();
  139. $cron->deleteCron([ [ 'event', '=', 'OpenGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  140. $cron->deleteCron([ [ 'event', '=', 'CloseGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  141. }
  142. return $this->success($res);
  143. } else {
  144. return $this->error('', '团购活动进行中或已结束');
  145. }
  146. } else {
  147. return $this->error('', '团购活动不存在');
  148. }
  149. }
  150. /**
  151. * 结束团购活动
  152. * @param $groupbuy_id
  153. * @param $site_id
  154. * @return array
  155. */
  156. public function finishGroupbuy($groupbuy_id, $site_id)
  157. {
  158. //团购信息
  159. $groupbuy_info = model('promotion_groupbuy')->getInfo([ [ 'groupbuy_id', '=', $groupbuy_id ], [ 'site_id', '=', $site_id ] ], 'groupbuy_id,status,goods_id');
  160. if (!empty($groupbuy_info)) {
  161. $goods = new Goods();
  162. $goods->modifyPromotionAddon($groupbuy_info[ 'goods_id' ], [ 'groupbuy' => $groupbuy_id ], true);
  163. if ($groupbuy_info[ 'status' ] != 3) {
  164. $res = model('promotion_groupbuy')->update([ 'status' => 3 ], [ [ 'groupbuy_id', '=', $groupbuy_id ] ]);
  165. if ($res) {
  166. $cron = new Cron();
  167. $cron->deleteCron([ [ 'event', '=', 'OpenGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  168. $cron->deleteCron([ [ 'event', '=', 'CloseGroupbuy' ], [ 'relate_id', '=', $groupbuy_id ] ]);
  169. }
  170. return $this->success($res);
  171. } else {
  172. $this->error('', '该团购活动已结束');
  173. }
  174. } else {
  175. $this->error('', '该团购活动不存在');
  176. }
  177. }
  178. /**
  179. * 获取团购信息
  180. * @param array $condition
  181. * @param string $field
  182. * @return array
  183. */
  184. public function getGroupbuyInfo($condition = [], $field = 'pg.groupbuy_id,pg.site_id,pg.goods_id,pg.groupbuy_price,pg.buy_num,pg.create_time,pg.start_time,pg.end_time,pg.sell_num,pg.status,pg.rule,g.goods_name,g.goods_image,g.price,g.goods_stock')
  185. {
  186. $alias = 'pg';
  187. $join = [
  188. [ 'goods g', 'g.goods_id = pg.goods_id', 'inner' ]
  189. ];
  190. $groupbuy_info = model("promotion_groupbuy")->getInfo($condition, $field, $alias, $join);
  191. if (!empty($groupbuy_info)) {
  192. if (isset($groupbuy_info[ 'goods_stock' ])) {
  193. $groupbuy_info[ 'goods_stock' ] = numberFormat($groupbuy_info[ 'goods_stock' ]);
  194. }
  195. }
  196. return $this->success($groupbuy_info);
  197. }
  198. /**
  199. * 团购商品详情
  200. * @param array $condition
  201. * @return array
  202. */
  203. public function getGroupbuyGoodsDetail($condition = [])
  204. {
  205. $alias = 'pg';
  206. $field = 'pg.groupbuy_id,pg.groupbuy_price,pg.buy_num,pg.start_time,pg.end_time,pg.sell_num,pg.status,pg.rule,
  207. sku.sku_id,sku.site_id,sku.sku_name,sku.price,sku.sku_spec_format,
  208. sku.promotion_type,sku.stock,sku.click_num,(g.sale_num + g.virtual_sale) as sale_num,sku.collect_num,sku.sku_image,sku.sku_images,sku.goods_id,sku.site_id,sku.goods_content,
  209. sku.goods_state,sku.is_virtual,sku.is_free_shipping,sku.goods_spec_format,sku.goods_attr_format,sku.introduction,sku.unit,sku.video_url,g.evaluate,sku.goods_id,
  210. sku.goods_service_ids,sku.support_trade_type,g.goods_image,g.goods_stock,g.goods_name,sku.qr_id,g.stock_show,g.sale_show,g.label_name,g.category_id';
  211. $join = [
  212. [ 'goods_sku sku', 'pg.goods_id = sku.goods_id', 'inner' ],
  213. [ 'goods g', 'g.goods_id = sku.goods_id', 'inner' ],
  214. ];
  215. $goods_info = model('promotion_groupbuy')->getInfo($condition, $field, $alias, $join);
  216. if (!empty($goods_info)) {
  217. $goods_info[ 'sale_num' ] = numberFormat($goods_info[ 'sale_num' ]);
  218. $goods_info[ 'stock' ] = numberFormat($goods_info[ 'stock' ]);
  219. $goods_info[ 'goods_stock' ] = numberFormat($goods_info[ 'goods_stock' ]);
  220. }
  221. return $this->success($goods_info);
  222. }
  223. /**
  224. * 团购商品
  225. * @param array $condition
  226. * @return array
  227. */
  228. public function getGroupbuyGoodsSkuList($condition = [], $limit = null)
  229. {
  230. $alias = 'pg';
  231. $field = 'pg.groupbuy_id,pg.groupbuy_price,pg.buy_num,pg.start_time,pg.end_time,pg.sell_num,pg.status,g.goods_id,g.goods_name,g.goods_stock,
  232. sku.sku_id,sku.sku_name,sku.price,sku.sku_spec_format,sku.stock,sku.sku_image,sku.sku_images,sku.goods_spec_format,g.goods_image';
  233. $join = [
  234. [ 'goods_sku sku', 'pg.goods_id = sku.goods_id', 'inner' ],
  235. [ 'goods g', 'g.goods_id = sku.goods_id', 'inner' ],
  236. ];
  237. $list = model('promotion_groupbuy')->getList($condition, $field, 'pg.groupbuy_id asc', $alias, $join, '', $limit);
  238. foreach ($list as $k => $v) {
  239. $list[ $k ][ 'stock' ] = numberFormat($list[ $k ][ 'stock' ]);
  240. $list[ $k ][ 'goods_stock' ] = numberFormat($list[ $k ][ 'goods_stock' ]);
  241. }
  242. return $this->success($list);
  243. }
  244. /**
  245. * 获取团购列表
  246. * @param array $condition
  247. * @param string $field
  248. * @param string $order
  249. * @param string $limit
  250. */
  251. public function getGroupbuyList($condition = [], $field = '*', $order = '', $limit = null)
  252. {
  253. $list = model('promotion_groupbuy')->getList($condition, $field, $order, '', '', '', $limit);
  254. return $this->success($list);
  255. }
  256. /**
  257. * 获取团购分页列表
  258. * @param array $condition
  259. * @param number $page
  260. * @param string $page_size
  261. * @param string $order
  262. * @param string $field
  263. */
  264. public function getGroupbuyPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '')
  265. {
  266. $field = 'pg.groupbuy_id,pg.site_id,pg.goods_id,pg.groupbuy_price,pg.buy_num,pg.create_time,
  267. pg.start_time,pg.end_time,pg.sell_num,pg.status,
  268. g.goods_name,g.goods_image,g.price,g.goods_stock,g.recommend_way';
  269. $alias = 'pg';
  270. $join = [
  271. [ 'goods g', 'g.goods_id = pg.goods_id', 'inner' ],
  272. ];
  273. $res = model('promotion_groupbuy')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
  274. foreach ($res[ 'list' ] as $k => $v) {
  275. $res[ 'list' ][ $k ][ 'goods_stock' ] = numberFormat($res[ 'list' ][ $k ][ 'goods_stock' ]);
  276. }
  277. return $this->success($res);
  278. }
  279. /**
  280. * 获取团购商品分页列表
  281. * @param array $condition
  282. * @param number $page
  283. * @param string $page_size
  284. * @param string $order
  285. * @param string $field
  286. */
  287. public function getGroupbuyGoodsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'pg.groupbuy_id desc', $field = '')
  288. {
  289. if (empty($field)) {
  290. $field = 'pg.groupbuy_id,pg.groupbuy_price,pg.sell_num,pg.site_id,pg.buy_num,
  291. sku.sku_id,sku.price,sku.sku_name,sku.sku_image,g.goods_id,g.goods_name,g.goods_image,g.goods_stock,g.recommend_way';
  292. }
  293. $alias = 'pg';
  294. $join = [
  295. [ 'goods g', 'pg.goods_id = g.goods_id', 'inner' ],
  296. [ 'goods_sku sku', 'g.sku_id = sku.sku_id', 'inner' ]
  297. ];
  298. $res = model('promotion_groupbuy')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
  299. foreach ($res[ 'list' ] as $k => $v) {
  300. if (isset($v[ 'goods_stock' ])) {
  301. $res[ 'list' ][ $k ][ 'goods_stock' ] = numberFormat($res[ 'list' ][ $k ][ 'goods_stock' ]);
  302. }
  303. }
  304. return $this->success($res);
  305. }
  306. /**
  307. * 获取团购商品列表
  308. * @param array $condition
  309. * @param string $order
  310. * @param string $field
  311. */
  312. public function getGroupbuyGoodsList($condition = [], $field = '', $order = 'pg.groupbuy_id desc', $limit = null)
  313. {
  314. if (empty($field)) {
  315. $field = 'pg.groupbuy_id,pg.groupbuy_price,pg.sell_num,pg.site_id,pg.buy_num,
  316. sku.sku_id,sku.price,sku.sku_name,sku.sku_image,g.goods_id,g.goods_name,g.goods_image,g.goods_stock,g.recommend_way';
  317. }
  318. $alias = 'pg';
  319. $join = [
  320. [ 'goods g', 'pg.goods_id = g.goods_id', 'inner' ],
  321. [ 'goods_sku sku', 'g.sku_id = sku.sku_id', 'inner' ]
  322. ];
  323. $list = model('promotion_groupbuy')->getList($condition, $field, $order, $alias, $join, '', $limit);
  324. foreach ($list as $k => $v) {
  325. if (isset($v[ 'goods_stock' ])) {
  326. $list[ $k ][ 'goods_stock' ] = numberFormat($list[ $k ][ 'goods_stock' ]);
  327. }
  328. }
  329. return $this->success($list);
  330. }
  331. /**
  332. * 开启团购活动
  333. * @param $groupbuy_id
  334. * @return array|\multitype
  335. */
  336. public function cronOpenGroupbuy($groupbuy_id)
  337. {
  338. $groupbuy_info = model('promotion_groupbuy')->getInfo([ [ 'groupbuy_id', '=', $groupbuy_id ] ], 'start_time,status,goods_id');
  339. if (!empty($groupbuy_info)) {
  340. $goods = new Goods();
  341. $goods->modifyPromotionAddon($groupbuy_info[ 'goods_id' ], [ 'groupbuy' => $groupbuy_id ]);
  342. if ($groupbuy_info[ 'start_time' ] <= time() && $groupbuy_info[ 'status' ] == 1) {
  343. $res = model('promotion_groupbuy')->update([ 'status' => 2 ], [ [ 'groupbuy_id', '=', $groupbuy_id ] ]);
  344. return $this->success($res);
  345. } else {
  346. return $this->error("", "团购活动已开启或者关闭");
  347. }
  348. } else {
  349. return $this->error("", "团购活动不存在");
  350. }
  351. }
  352. /**
  353. * 关闭团购活动
  354. * @param $groupbuy_id
  355. * @return array|\multitype
  356. */
  357. public function cronCloseGroupbuy($groupbuy_id)
  358. {
  359. $groupbuy_info = model('promotion_groupbuy')->getInfo([ [ 'groupbuy_id', '=', $groupbuy_id ] ], 'start_time,status,goods_id');
  360. if (!empty($groupbuy_info)) {
  361. $goods = new Goods();
  362. $goods->modifyPromotionAddon($groupbuy_info[ 'goods_id' ], [ 'groupbuy' => $groupbuy_id ], true);
  363. if ($groupbuy_info[ 'status' ] != 3) {
  364. $res = model('promotion_groupbuy')->update([ 'status' => 3 ], [ [ 'groupbuy_id', '=', $groupbuy_id ] ]);
  365. return $this->success($res);
  366. } else {
  367. return $this->error("", "该活动已结束");
  368. }
  369. } else {
  370. return $this->error("", "团购活动不存在");
  371. }
  372. }
  373. /**
  374. * 订单支付
  375. * @param $param
  376. * @return mixed
  377. */
  378. public function orderPay($param)
  379. {
  380. $order_goods = model('order_goods')->getInfo([ [ 'order_id', '=', $param[ 'order_id' ] ] ], 'goods_id,num');
  381. if (!empty($order_goods)) {
  382. //获取团购id
  383. $groupbuy_id = model('promotion_groupbuy')->getValue(
  384. [ [ 'goods_id', '=', $order_goods[ 'goods_id' ] ], [ 'status', '=', 2 ] ],
  385. 'groupbuy_id'
  386. );
  387. if ($groupbuy_id != 0) {
  388. //增加销售量
  389. model('promotion_groupbuy')->setInc([ [ 'groupbuy_id', '=', $groupbuy_id ] ], 'sell_num', $order_goods[ 'num' ]);
  390. }
  391. }
  392. return $this->success();
  393. }
  394. /**
  395. * 生成团购二维码
  396. * @param $groupbuy_id
  397. * @param string $app_type all为全部
  398. * @param string $type 类型 create创建 get获取
  399. * @return mixed|array
  400. */
  401. public function qrcode($groupbuy_id, $name, $site_id, $type = 'create')
  402. {
  403. $data = [
  404. 'site_id' => $site_id,
  405. 'app_type' => "all", // all为全部
  406. 'type' => $type, // 类型 create创建 get获取
  407. 'data' => [
  408. "groupbuy_id" => $groupbuy_id
  409. ],
  410. 'page' => '/pages_promotion/groupbuy/detail',
  411. 'qrcode_path' => 'upload/qrcode/groupbuy',
  412. 'qrcode_name' => "groupbuy_qrcode_" . $groupbuy_id
  413. ];
  414. event('Qrcode', $data, true);
  415. $app_type_list = config('app_type');
  416. $path = [];
  417. foreach ($app_type_list as $k => $v) {
  418. switch ( $k ) {
  419. case 'h5':
  420. $wap_domain = getH5Domain();
  421. $path[ $k ][ 'status' ] = 1;
  422. $path[ $k ][ 'url' ] = $wap_domain . $data[ 'page' ] . '?id=' . $groupbuy_id;
  423. $path[ $k ][ 'img' ] = "upload/qrcode/groupbuy/groupbuy_qrcode_" . $groupbuy_id . "_" . $k . ".png";
  424. break;
  425. case 'weapp' :
  426. $config = new ConfigModel();
  427. $res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'WEAPP_CONFIG' ] ]);
  428. if (!empty($res[ 'data' ])) {
  429. if (empty($res[ 'data' ][ 'value' ][ 'qrcode' ])) {
  430. $path[ $k ][ 'status' ] = 2;
  431. $path[ $k ][ 'message' ] = '未配置微信小程序';
  432. } else {
  433. $path[ $k ][ 'status' ] = 1;
  434. $path[ $k ][ 'img' ] = $res[ 'data' ][ 'value' ][ 'qrcode' ];
  435. }
  436. } else {
  437. $path[ $k ][ 'status' ] = 2;
  438. $path[ $k ][ 'message' ] = '未配置微信小程序';
  439. }
  440. break;
  441. case 'wechat' :
  442. $config = new ConfigModel();
  443. $res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'WECHAT_CONFIG' ] ]);
  444. if (!empty($res[ 'data' ])) {
  445. if (empty($res[ 'data' ][ 'value' ][ 'qrcode' ])) {
  446. $path[ $k ][ 'status' ] = 2;
  447. $path[ $k ][ 'message' ] = '未配置微信公众号';
  448. } else {
  449. $path[ $k ][ 'status' ] = 1;
  450. $path[ $k ][ 'img' ] = $res[ 'data' ][ 'value' ][ 'qrcode' ];
  451. }
  452. } else {
  453. $path[ $k ][ 'status' ] = 2;
  454. $path[ $k ][ 'message' ] = '未配置微信公众号';
  455. }
  456. break;
  457. }
  458. }
  459. $return = [
  460. 'path' => $path,
  461. 'name' => $name,
  462. ];
  463. return $this->success($return);
  464. }
  465. /**
  466. * 商品用到的分类
  467. * @param $condition
  468. * @return array
  469. */
  470. public function getGoodsCategoryIds($condition)
  471. {
  472. $cache_name = "shop_groupbuy_goods_category_" . md5(json_encode($condition));
  473. $cache_time = 60;
  474. $cache_res = Cache::get($cache_name);
  475. if (empty($cache_res) || time() - $cache_res[ 'time' ] > $cache_time) {
  476. $list = Db::name('promotion_groupbuy')
  477. ->alias('pg')
  478. ->join('goods g', 'pg.goods_id = g.goods_id', 'inner')
  479. ->where($condition)
  480. ->group('g.category_id')
  481. ->column('g.category_id');
  482. $category_ids = trim(join('0', $list), ',');
  483. $category_id_arr = array_unique(explode(',', $category_ids));
  484. Cache::set($cache_name, [ 'time' => time(), 'data' => $category_id_arr ]);
  485. } else {
  486. $category_id_arr = $cache_res[ 'data' ];
  487. }
  488. return $this->success($category_id_arr);
  489. }
  490. public function urlQrcode($page, $qrcode_param, $promotion_type, $site_id)
  491. {
  492. $params = [
  493. 'site_id' => $site_id,
  494. 'data' => $qrcode_param,
  495. 'page' => $page,
  496. 'promotion_type' => $promotion_type,
  497. 'h5_path' => $page . '?id=' . $qrcode_param[ 'id' ],
  498. 'qrcode_path' => 'upload/qrcode/groupbuy',
  499. 'qrcode_name' => 'groupbuy_qrcode_' . $promotion_type . '_' . $qrcode_param[ 'id' ] . '_' . $site_id
  500. ];
  501. $solitaire = event('ExtensionInformation', $params, true);
  502. return $this->success($solitaire);
  503. }
  504. }