Queue.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <?php
  2. namespace app\common\logic;
  3. use think\facade\Db;
  4. /**
  5. * ============================================================================
  6. *
  7. * ============================================================================
  8. * 版权所有 2014-2028 浙江惠利玛产业互联网有限公司,并保留所有权利。
  9. * 网站地址: https://www.valimart.net/
  10. * ----------------------------------------------------------------------------
  11. *
  12. * ============================================================================
  13. * 逻辑层模型
  14. */
  15. class Queue
  16. {
  17. /**
  18. * 添加会员积分
  19. * @param unknown $member_info
  20. */
  21. public function addPoint($member_info)
  22. {
  23. $points_model = model('points');
  24. $points_model->savePointslog('login', array(
  25. 'pl_memberid' => $member_info['member_id'], 'pl_membername' => $member_info['member_name']
  26. ), true);
  27. return ds_callback(true);
  28. }
  29. /**
  30. * 添加会员经验值
  31. * @param unknown $member_info
  32. */
  33. public function addExppoint($member_info)
  34. {
  35. $exppoints_model = model('exppoints');
  36. $exppoints_model->saveExppointslog('login', array(
  37. 'explog_memberid' => $member_info['member_id'], 'explog_membername' => $member_info['member_name']
  38. ), true);
  39. return ds_callback(true);
  40. }
  41. /**
  42. * 更新抢购信息
  43. * @param unknown $groupbuy_info
  44. * @throws Exception
  45. */
  46. public function editGroupbuySaleCount($groupbuy_info)
  47. {
  48. $groupbuy_model = model('groupbuy');
  49. $data = array();
  50. $data['groupbuy_buyer_count'] = Db::raw('groupbuy_buyer_count+1');
  51. $data['groupbuy_buy_quantity'] = Db::raw('groupbuy_buy_quantity+'.$groupbuy_info['quantity']);
  52. $update = $groupbuy_model->editGroupbuy($data, array('groupbuy_id' => $groupbuy_info['groupbuy_id']));
  53. if (!$update) {
  54. return ds_callback(false, '更新抢购信息失败groupbuy_id:' . $groupbuy_info['groupbuy_id']);
  55. }
  56. else {
  57. return ds_callback(true);
  58. }
  59. }
  60. /**
  61. * 根据商品id更新促销价格
  62. *
  63. * @param int /array $goods_commonid
  64. * @return boolean
  65. */
  66. public function updateGoodsPromotionPriceByGoodsId($goods_id)
  67. {
  68. if(!is_array($goods_id)){
  69. $goods_id=(string)$goods_id;
  70. }
  71. $condition = array();
  72. $condition[] = array('goods_id','in', $goods_id);
  73. $update = model('goods')->editGoodsPromotionPrice($condition);
  74. if (!$update) {
  75. return ds_callback(false, '根据商品ID更新促销价格失败');
  76. }
  77. else {
  78. return ds_callback(true);
  79. }
  80. }
  81. /**
  82. * 根据商品公共id更新促销价格
  83. *
  84. * @param int /array $goods_commonid
  85. * @return boolean
  86. */
  87. public function updateGoodsPromotionPriceByGoodsCommonId($goods_commonid)
  88. {
  89. if(!is_array($goods_commonid)){
  90. $goods_commonid=(string)$goods_commonid;
  91. }
  92. $condition = array();
  93. $condition[] = array('goods_commonid','in', $goods_commonid);
  94. $update = model('goods')->editGoodsPromotionPrice($condition);
  95. if (!$update) {
  96. return ds_callback(false, '根据商品公共id更新促销价格失败');
  97. }
  98. else {
  99. return ds_callback(true);
  100. }
  101. }
  102. /**
  103. * 发送店铺消息
  104. */
  105. public function sendStoremsg($param)
  106. {
  107. $send = new \sendmsg\sendStoremsg();
  108. $send->set('code', $param['code']);
  109. $send->set('store_id', $param['store_id']);
  110. $send->send($param['param'],isset($param['weixin_param'])?$param['weixin_param']:array(),isset($param['ali_param'])?$param['ali_param']:array(),isset($param['ten_param'])?$param['ten_param']:array());
  111. return ds_callback(true);
  112. }
  113. /**
  114. * 发送会员消息
  115. */
  116. public function sendMemberMsg($param)
  117. {
  118. $send = new \sendmsg\sendMemberMsg();
  119. $send->set('code', $param['code']);
  120. $send->set('member_id', $param['member_id']);
  121. if (!empty($param['number']['mobile']))
  122. $send->set('mobile', $param['number']['mobile']);
  123. if (!empty($param['number']['email']))
  124. $send->set('email', $param['number']['email']);
  125. $send->send($param['param'],isset($param['weixin_param'])?$param['weixin_param']:array(),isset($param['ali_param'])?$param['ali_param']:array(),isset($param['ten_param'])?$param['ten_param']:array());
  126. return ds_callback(true);
  127. }
  128. /**
  129. * 清理特殊商品促销信息
  130. */
  131. public function clearSpecialGoodsPromotion($param)
  132. {
  133. // 抢购
  134. model('groupbuy')->delGroupbuy(array('goods_commonid' => $param['goods_commonid']));
  135. // 显示折扣
  136. $condition = array();
  137. $condition[] = array('goods_id','in', $param['goodsid_array']);
  138. model('pxianshigoods')->delXianshigoods($condition);
  139. // 优惠套装
  140. $condition = array();
  141. $condition[] = array('goods_id','in', $param['goodsid_array']);
  142. model('pbundling')->delBundlingGoods($condition);
  143. // 更新促销价格
  144. model('goods')->editGoods(array('goods_promotion_price' => Db::raw('goods_price'),'goods_promotion_type' => 0), array('goods_commonid' => $param['goods_commonid']));
  145. return ds_callback(true);
  146. }
  147. /**
  148. * 删除(买/卖家)订单全部数量缓存
  149. * @param array $data 订单信息
  150. * @return boolean
  151. */
  152. public function delOrderCountCache($order_info)
  153. {
  154. if (empty($order_info))
  155. return ds_callback(true);
  156. $order_model = model('order');
  157. if (isset($order_info['order_id'])) {
  158. $order_info = $order_model->getOrderInfo(array('order_id' => $order_info['order_id']), array(), 'buyer_id,store_id');
  159. }
  160. if(isset($order_info['buyer_id'])) {
  161. $order_model->delOrderCountCache('buyer', $order_info['buyer_id']);
  162. }
  163. if (isset($order_info['store_id'])) {
  164. $order_model->delOrderCountCache('store', $order_info['store_id']);
  165. }
  166. return ds_callback(true);
  167. }
  168. /**
  169. * 发送提货码短信消息
  170. */
  171. public function sendPickupcode($param)
  172. {
  173. $order_common_info = model('order')->getOrdercommonInfo(array('order_id' => $param['order_id']),'reciver_info');
  174. if($order_common_info){
  175. $order_common_info['reciver_info'] = @unserialize($order_common_info['reciver_info']);
  176. $tpl_info = model('mailtemplates')->getTplInfo(array('mailmt_code' => 'send_pickup_code'));
  177. $data = array();
  178. $data['pickup_code'] = $param['pickup_code'];
  179. $ten_data=array($data['pickup_code']);
  180. $message = ds_replace_text($tpl_info['mailmt_content'], $data);
  181. $smslog_param=array(
  182. 'ali_template_code'=>$tpl_info['ali_template_code'],
  183. 'ali_template_param'=>$data,
  184. 'ten_template_code'=>$tpl_info['ten_template_code'],
  185. 'ten_template_param'=>$ten_data,
  186. 'message'=>$message,
  187. );
  188. $result = model('smslog')->sendSms($order_common_info['reciver_info']['mob_phone'], $smslog_param);
  189. if (!$result) {
  190. return ds_callback(false, '发送提货码短信消息失败order_id:' . $param['order_id']);
  191. }
  192. else {
  193. return ds_callback(true);
  194. }
  195. }else{
  196. return ds_callback(false, '发送提货码短信消息失败order_id:' . $param['order_id']);
  197. }
  198. }
  199. /**
  200. * 生成卡密代金券
  201. */
  202. public function build_pwdvoucher($t_id)
  203. {
  204. $t_id = intval($t_id);
  205. if ($t_id <= 0) {
  206. return ds_callback(false, '参数错误');
  207. }
  208. $voucher_model = model('voucher');
  209. //查询代金券详情
  210. $where = array();
  211. $where[] = array('vouchertemplate_id','=',$t_id);
  212. $gettype_arr = $voucher_model->getVoucherGettypeArray();
  213. $where[] = array('vouchertemplate_gettype','=',$gettype_arr['pwd']['sign']);
  214. $where[] = array('vouchertemplate_isbuild','=',0);
  215. $where[] = array('vouchertemplate_state','=',1);
  216. $t_info = $voucher_model->getVouchertemplateInfo($where);
  217. $t_total = intval($t_info['vouchertemplate_total']);
  218. if ($t_total <= 0) {
  219. return ds_callback(false, '代金券模板信息错误');
  220. }
  221. while ($t_total > 0) {
  222. $is_succ = false;
  223. $insert_arr = array();
  224. $step = $t_total > 1000 ? 1000 : $t_total;
  225. for ($t = 0; $t < $step; $t++) {
  226. $voucher_code = $voucher_model->getVoucherCode(0);
  227. if (!$voucher_code) {
  228. continue;
  229. }
  230. $voucher_pwd_arr = $voucher_model->createVoucherPwd($t_info['vouchertemplate_id']);
  231. if (!$voucher_pwd_arr) {
  232. continue;
  233. }
  234. $tmp = array();
  235. $tmp['voucher_code'] = $voucher_code;
  236. $tmp['vouchertemplate_id'] = $t_info['vouchertemplate_id'];
  237. $tmp['voucher_title'] = $t_info['vouchertemplate_title'];
  238. $tmp['voucher_desc'] = $t_info['vouchertemplate_desc'];
  239. $tmp['voucher_startdate'] = $t_info['vouchertemplate_startdate'];
  240. $tmp['voucher_enddate'] = $t_info['vouchertemplate_enddate'];
  241. $tmp['voucher_price'] = $t_info['vouchertemplate_price'];
  242. $tmp['voucher_limit'] = $t_info['vouchertemplate_limit'];
  243. $tmp['voucher_store_id'] = $t_info['vouchertemplate_store_id'];
  244. $tmp['voucher_state'] = 1;
  245. $tmp['voucher_activedate'] = TIMESTAMP;
  246. $tmp['voucher_owner_id'] = 0;
  247. $tmp['voucher_owner_name'] = '';
  248. $tmp['voucher_order_id'] = 0;
  249. $tmp['voucher_pwd'] = $voucher_pwd_arr[0];//md5
  250. $tmp['voucher_pwd2'] = $voucher_pwd_arr[1];
  251. $insert_arr[] = $tmp;
  252. $t_total--;
  253. }
  254. $result = $voucher_model->addVoucherBatch($insert_arr);
  255. if ($result && $is_succ == false) {
  256. $is_succ = true;
  257. }
  258. }
  259. //更新代金券模板
  260. if ($is_succ) {
  261. $voucher_model->editVouchertemplate(array('vouchertemplate_id' => $t_info['vouchertemplate_id']), array('vouchertemplate_isbuild' => 1));
  262. return ds_callback(true);
  263. }
  264. else {
  265. return ds_callback(false);
  266. }
  267. }
  268. /**
  269. * 上架
  270. *
  271. * @param int $goods_commonid
  272. */
  273. public function editProducesOnline($goods_commonid){
  274. $condition = array(array('goods_commonid','=',$goods_commonid));
  275. $update = model('goods')->editProducesOnline($condition);
  276. if (!$update){
  277. return ds_callback(false);
  278. }
  279. return ds_callback(true);
  280. }
  281. /**
  282. * 优惠套装过期
  283. *
  284. * @param int $store_id
  285. */
  286. public function editBundlingQuotaClose($store_id) {
  287. $pbundling_model=model('pbundling');
  288. if(intval(config('ds_config.promotion_bundling_price'))!=0){
  289. //如果没有购买过套餐,则将之前添加的优惠组合关闭
  290. Db::name('pbundling')->alias('pbundling')->join('pbundlingquota pbundlingquota', 'pbundling.store_id = pbundlingquota.store_id','LEFT')->where('pbundlingquota.store_id',null)->update(array('bl_state'=>$pbundling_model::STATE0));
  291. }
  292. $condition = array(array('store_id','=', $store_id));
  293. $update = $pbundling_model->editBundlingQuotaClose($condition);
  294. if (!$update) {
  295. return ds_callback(false);
  296. }
  297. return ds_callback(true);
  298. }
  299. /**
  300. * 推荐展位过期
  301. *
  302. * @param int $store_id
  303. */
  304. public function editBoothClose($store_id) {
  305. $pbooth_model=model('pbooth');
  306. if(intval(config('ds_config.promotion_bundling_price'))!=0){
  307. //如果没有购买过套餐,则将之前添加的优惠组合关闭
  308. Db::name('pboothgoods')->alias('pboothgoods')->join('pboothquota pboothquota', 'pboothgoods.store_id = pboothquota.store_id','LEFT')->where('pboothquota.store_id',null)->update(array('boothgoods_state'=>$pbooth_model::STATE0));
  309. }
  310. $condition = array(array('store_id','=', $store_id));
  311. $update = $pbooth_model->editBoothClose($condition);
  312. if (!$update) {
  313. return ds_callback(false);
  314. }
  315. return ds_callback(true);
  316. }
  317. /**
  318. * 抢购开始更新商品促销价格
  319. *
  320. * @param int $goods_commonid
  321. */
  322. public function editGoodsGroupbuyPrice($goods_commonid) {
  323. $condition = array();
  324. $condition[] = array('goods_commonid','=', $goods_commonid);
  325. $condition[] = array('groupbuy_starttime','<', TIMESTAMP);
  326. $condition[] = array('groupbuy_endtime','>', TIMESTAMP);
  327. $groupbuy = model('groupbuy')->getGroupbuyList($condition);
  328. $update=true;
  329. foreach ($groupbuy as $val) {
  330. $flag=model('goods')->editGoods(array('goods_promotion_price' => $val['groupbuy_price'], 'goods_promotion_type' => 1), array('goods_commonid' => $val['goods_commonid']));
  331. if(!$flag){
  332. $update=false;
  333. }
  334. }
  335. if (!$update) {
  336. return ds_callback(false);
  337. }
  338. return ds_callback(true);
  339. }
  340. /**
  341. * 抢购过期
  342. *
  343. * @param int $goods_commonid
  344. */
  345. public function editExpireGroupbuy($goods_commonid) {
  346. $condition = array(array('goods_commonid','=', $goods_commonid));
  347. //抢购活动过期
  348. $update = model('groupbuy')->editExpireGroupbuy($condition);
  349. if (!$update) {
  350. return ds_callback(false);
  351. }
  352. return ds_callback(true);
  353. }
  354. /**
  355. * 秒杀过期
  356. *
  357. * @param int $xianshi_id
  358. */
  359. public function editExpireXianshi($xianshi_id) {
  360. $condition = array(array('xianshi_id','=', $xianshi_id));
  361. //秒杀过期
  362. $update = model('pxianshi')->editExpireXianshi($condition);
  363. if (!$update) {
  364. return ds_callback(false);
  365. }
  366. return ds_callback(true);
  367. }
  368. /**
  369. * 批发过期
  370. *
  371. * @param int $wholesale_id
  372. */
  373. public function editExpireWholesale($wholesale_id) {
  374. $condition = array(array('wholesale_id','=', $wholesale_id));
  375. //秒杀过期
  376. $update = model('wholesale')->editExpireWholesale($condition);
  377. if (!$update) {
  378. return ds_callback(false);
  379. }
  380. return ds_callback(true);
  381. }
  382. /**
  383. * 更新使用的平台代金券状态
  384. * @param $input_voucher_list
  385. * @throws Exception
  386. */
  387. public function editMallVoucherState($mallvoucher_info)
  388. {
  389. $mallvoucheruser_model = model('mallvouchertemplate');
  390. $update = $mallvoucheruser_model->editMallVoucherUser(array('mallvoucheruser_state' => $mallvoucher_info['mallvoucheruser_state']), array('mallvoucheruser_id' => $mallvoucher_info['mallvoucheruser_id']), $mallvoucher_info['mallvoucheruser_ownerid']);
  391. return ds_callback(true);
  392. }
  393. }