Coupon.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\api\controller;
  13. // use app\api\model\Coupon as CouponModel;
  14. use app\common\model\coupon\Usercoupon as UsercouponModel;
  15. use app\api\service\User as UserService;
  16. use app\common\model\coupon\Usercoupondetail as UsercoupondetailModel;
  17. use app\common\model\coupon\Couponcard as CouponcardModel;
  18. use app\api\model\Order as OrderModel;
  19. use app\common\model\OrderAddress as OrderAddressModel;
  20. use app\common\model\User as UserModel;
  21. use app\common\model\OrderGoods as OrderGoodsModel;
  22. use app\common\model\GoodsSku as GoodsSkuModel;
  23. use app\common\model\Goods as GoodsModel;
  24. use app\api\service\Cart as CartService;
  25. use app\api\service\order\Checkout as CheckoutService;
  26. use app\api\validate\order\Checkout as CheckoutValidate;
  27. use app\common\exception\BaseException;
  28. use app\common\enum\order\PayType as OrderPayTypeEnum;
  29. use app\common\enum\order\PayStatus as PayStatusEnum;
  30. use think\cache\driver\Redis;
  31. use think\Facade\Cache;
  32. use app\api\model\Coupon as CouponModel;
  33. /**
  34. * 优惠券中心 米卡 已废弃
  35. * Class Coupon
  36. * @package app\api\controller
  37. */
  38. class Coupon extends Controller
  39. {
  40. /* @var CheckoutValidate $validate */
  41. private $validate;
  42. /**
  43. * 构造方法
  44. * @throws BaseException
  45. */
  46. public function initialize()
  47. {
  48. parent::initialize();
  49. // 用户信息
  50. // 验证类
  51. $this->validate = new CheckoutValidate;
  52. }
  53. //领券中心 v1.3.2
  54. public function couponlist(){
  55. $model = new CouponModel;
  56. $type = $this->request->get('cptype',null);
  57. $userinfo = UserService::getCurrentLoginUser(false);
  58. $list = $model->getList(1000, true,0,$type,1);
  59. return $this->renderSuccess(compact('list'));
  60. }
  61. /**
  62. * 优惠券落地页
  63. * @param $couponId
  64. * @return array|\think\response\Json
  65. */
  66. public function couponDetail($couponId)
  67. {
  68. $detail = CouponModel::getDetail($couponId);
  69. if (empty($detail)) {
  70. return $this->renderError('优惠券不存在');
  71. }
  72. return $this->renderSuccess(compact('detail'));
  73. }
  74. //领券中心 限时抢购
  75. public function limitcouponlist(){
  76. $model = new CouponModel;
  77. $userinfo = UserService::getCurrentLoginUser(false);
  78. $is_limit_hour = 1;
  79. $oldlist = $model->getLimitList(1000, true, $is_limit_hour);
  80. $list = [];
  81. $h = str_pad(Date("H",time()),2,"0",STR_PAD_LEFT);
  82. foreach($oldlist as $row){
  83. $today_end = Date("Y-m-d",time())." ".$row['end_hour']."00:00";
  84. if(!empty($row['start_hour'])&&!empty($row['start_hour'])){
  85. $now = Date("Y-m-d H:i:s",time());
  86. if($now> $today_end){
  87. continue;
  88. }
  89. }
  90. $list[] = $row;
  91. }
  92. return $this->renderSuccess(compact('list'));
  93. }
  94. //我的优惠券
  95. public function list(int $type =0){
  96. $model = new UsercouponModel;
  97. $userinfo = UserService::getCurrentLoginUser(true);
  98. $list = $model->getList($userinfo->user_id,$type);
  99. return $this->renderSuccess(compact('list'));
  100. }
  101. //激活
  102. public function activation(){
  103. $userinfo = UserService::getCurrentLoginUser(true);
  104. $param = $this->request->param();
  105. $coupon_code = $param['coupon_code']??'';
  106. $key = 'activation:user_id:'.$userinfo->user_id;
  107. $rds = new Redis(config('cache.stores.redis'));
  108. $num = $rds->get($key);
  109. if($num==10){
  110. return $this->renderError('你验证的次数太多了,请稍后再试');
  111. }
  112. if($num==null){
  113. $num = 1;
  114. }else{
  115. $num++;
  116. }
  117. $rds->set($key,$num,600);
  118. $coupon = UsercouponModel::where('coupon_code',$coupon_code)->find();
  119. if(empty($coupon)){
  120. return $this->renderError('激活码有误');
  121. }
  122. if($coupon->activation_state==1||$coupon->user_id>0){
  123. return $this->renderError('激活码已被使用');
  124. }
  125. $now = Date("Y-m-d H:i:s",time());
  126. $coupon_card_id = $coupon->coupon_card_id;
  127. $card = CouponcardModel::where("id",$coupon_card_id)->find();
  128. $day = $card->expire_day??1;
  129. $deadline_at = Date("Y-m-d H:i:s",time()+86400*$day);//先写死一个月
  130. $coupon->user_id = $userinfo->user_id;
  131. $coupon->get_at = $now;
  132. $coupon->activation_state = 1;
  133. $coupon->activation_at = $now;
  134. $coupon->deadline_at = $deadline_at;
  135. $coupon->save();
  136. return $this->renderSuccess('米卡已激活');
  137. }
  138. //兑换明细
  139. public function details($user_coupon_id =0){
  140. $userinfo = UserService::getCurrentLoginUser(true);
  141. $couponArr = UsercouponModel::field('id')->where('id',$user_coupon_id)->select();
  142. $card_name = '';
  143. $user_coupon_id_arr = [];
  144. foreach($couponArr as $row){
  145. $user_coupon_id_arr[] = $row->id;
  146. }
  147. $model = new UsercoupondetailModel;
  148. $list = $model->getList($user_coupon_id_arr);
  149. foreach($list as $row){
  150. $order = OrderGoodsModel::where("order_id",$row->order_id)->find();
  151. $row->express_no = $order->express_no;
  152. $order_address = OrderAddressModel::where("order_id",$row->order_id)->find();
  153. $full_address = '';
  154. $address_name = $order_address->name??'';
  155. $address_phone = $order_address->phone??'';
  156. $row->address_name = $address_name;
  157. $row->address_phone = $address_phone;
  158. //$row->address = $order_address;
  159. if($order_address){
  160. $full_address = $order_address['region']['province'] . $order_address['region']['city'] . $order_address['region']['region'] . $order_address['detail'];
  161. }
  162. $row->full_address = $full_address;
  163. $row->coupon_card_name = $coupon->coupon_card_name??'';
  164. if($row->user_id==$userinfo->user_id){
  165. $row->coupon_is_self = true;//如果是当前登录用户用的,就不显示赠送好友
  166. }else{
  167. $row->coupon_is_self = $row->parent_id==0?true:false;
  168. }
  169. }
  170. return $this->renderSuccess(compact('list'));
  171. }
  172. //领取转赠卡的信息
  173. public function receiveinfo($sign){
  174. $userinfo = UserService::getCurrentLoginUser(true);
  175. $coupon = UsercouponModel::where('sign',$sign)->find();
  176. if(!$coupon){
  177. return $this->renderError('找不到信息');
  178. }
  179. if($coupon->effect_state==2){
  180. return $this->renderError('该卡已失效');
  181. }
  182. if($coupon->frozen_state==1){
  183. return $this->renderError("该卡已冻结");
  184. }
  185. $parent_id = $coupon->parent_id;
  186. $parent = UsercouponModel::where('id',$parent_id)->find();
  187. $user = UserModel::detail($parent->user_id);
  188. $nick_name = $user->nick_name??'';
  189. $info['id'] = $coupon->id;
  190. $info['coupon_user_id'] = $parent->user_id;
  191. $info['good_id'] = $coupon->good_id;
  192. $info['nick_name'] = $nick_name;
  193. $info['coupon_card_name'] = $coupon->coupon_card_name;
  194. $info['coupon_category'] = $coupon->coupon_category;
  195. $info['coupon_category_text'] = $coupon->coupon_category_text;
  196. $info['isall_trans'] = $coupon->isall_trans;
  197. $info['coupon_no'] = $coupon->coupon_no;
  198. if($coupon->good_sku_id>0){
  199. $goodsku = GoodsSkuModel::where('goods_sku_id',$coupon->good_sku_id)->where('goods_id',$coupon->good_id)->find();
  200. }
  201. $goods = GoodsModel::field('goods_name')->where("goods_id",$coupon->good_id)->find();
  202. $info['sku_name'] = $goodsku->goods_props[0]['value']['name']??'';
  203. $info['good_name'] = $goods->goods_name??'';
  204. $info['good_num'] = $coupon->good_num;
  205. return $this->renderSuccess(compact('info'));
  206. }
  207. //领取卡
  208. public function receive($sign){
  209. $param = $this->request->param();
  210. $sign = $param['sign']??'';
  211. if(empty($sign)){
  212. return $this->renderError('参数有误');
  213. }
  214. $userinfo = UserService::getCurrentLoginUser(true);
  215. $coupon = UsercouponModel::where('sign',$sign)->find();
  216. $now = Date("Y-m-d H:i:s",time());
  217. if(!$coupon){
  218. return $this->renderError('找不到信息');
  219. }
  220. if($coupon->effect_state==2){
  221. return $this->renderError('该卡已失效');
  222. }
  223. if($coupon->frozen_state==1){
  224. return $this->renderError("该卡已冻结");
  225. }
  226. if($coupon->user_id>0){
  227. return $this->renderError("该卡已被领取");
  228. }
  229. if($coupon->avaiable_good_num==0){
  230. return $this->renderError("该卡余额已用完");
  231. }
  232. if(time()>strtotime($coupon->deadline_at)){
  233. return $this->renderError("该卡已过期");
  234. }
  235. $isall_trans = $coupon->isall_trans;
  236. $parent_coupon = UsercouponModel::where('id',$coupon->parent_id)->find();
  237. if($isall_trans==1){
  238. $coupon->user_id = $userinfo->user_id;
  239. $coupon->get_at = $now;
  240. $coupon->activation_at = $now;
  241. $coupon->save();
  242. //原米卡改为失效
  243. UsercouponModel::where('id',$coupon->parent_id)->update(['effect_state'=>2]);
  244. return $this->renderSuccess('领取成功');
  245. }else{
  246. $Checkout = new CheckoutService;
  247. // 订单结算api参数
  248. $params['goodsId'] = $coupon->good_id;
  249. $params['goodsSkuId'] = $coupon->good_sku_id;
  250. $params['goodsNum'] = $coupon->good_num;
  251. $params['staffUserId'] =0;
  252. $params = array_merge($this->request->param(),$params);
  253. $Checkout->setParam($params);
  254. // 表单验证
  255. if (!$this->validate->scene('buyNow')->check($params)) {
  256. return $this->renderError($this->validate->getError(), ['is_created' => false]);
  257. }
  258. //立即购买:获取订单商品列表
  259. $model = new OrderModel;
  260. $goodsList = $model->getOrderGoodsListByNow(
  261. (int)$params['goodsId'],
  262. (string)$params['goodsSkuId'],
  263. (int)$params['goodsNum'],
  264. (int)$params['staffUserId']
  265. );
  266. // // 获取订单确认信息
  267. $orderInfo = $Checkout->onCheckout($goodsList);
  268. if ($Checkout->hasError()) {
  269. $status = $Checkout->getErrorStatus();
  270. if($status==423){
  271. return $this->renderError('很抱歉,您的收货地址不在商家的配送范围内', ['is_created' => false]);
  272. }else{
  273. // return $this->renderError($Checkout->getError(), ['is_created' => false]);
  274. return $this->renderError('商品暂无法兑换,请到“我的”页面联系客服', ['is_created' => false]);
  275. }
  276. }
  277. $orderInfo['couponId'] = 0;
  278. $orderInfo['couponMoney'] = $orderInfo['orderPrice'];
  279. $orderInfo['orderPayPrice'] = 0;
  280. $orderInfo['payType'] = OrderPayTypeEnum::MICAH_EXCHANGE;
  281. $orderInfo['pay_status'] = PayStatusEnum::SUCCESS;
  282. // 创建订单
  283. if(!$Checkout->createOrder($orderInfo)) {
  284. return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]);
  285. }
  286. $order_id = $Checkout->model['order_id'];
  287. $coupon->user_id = $userinfo->user_id;
  288. $coupon->get_at = $now;
  289. $coupon->activation_at = $now;
  290. $coupon->avaiable_good_num = 0;
  291. $coupon->save();
  292. $detail['user_coupon_id'] = $coupon->parent_id;
  293. $detail['good_num'] = $coupon->good_num;
  294. $detail['good_id'] = $coupon->good_id;
  295. $detail['good_sku_id'] = $coupon->good_sku_id;
  296. $detail['created_at'] = $now;
  297. $detail['coupon_user_id'] = $parent_coupon->user_id??0;
  298. $detail['user_id'] = $userinfo->user_id;
  299. $detail['order_id'] = $order_id;
  300. $detail['good_name'] = $goodsList[0]['goods_name']??'';
  301. $detail['tmp_id'] = 1000000+intval($order_id);
  302. $detail['parent_id'] = $coupon->parent_id;
  303. $detailModel = new UsercoupondetailModel;
  304. $detailModel->save($detail);
  305. $good_num = UsercoupondetailModel::where("user_coupon_id",$coupon->parent_id)->sum('good_num');
  306. if($parent_coupon->good_num==$good_num){
  307. //兑换完成了,状态改为已失效
  308. $parent_coupon->effect_state = 2;
  309. $parent_coupon->save();
  310. }
  311. return $this->renderSuccess([
  312. 'orderId' => $order_id, // 订单id
  313. ]);
  314. }
  315. }
  316. //商品详情页 自己兑换
  317. public function exchange(){
  318. $userinfo = UserService::getCurrentLoginUser(true);
  319. $p = $this->request->param();
  320. $user_coupon_id = $p['user_coupon_id']??0;
  321. $good_num = $p['good_num']??1;
  322. $coupon = UsercouponModel::where('id',$user_coupon_id)->where('user_id',$userinfo->user_id)->find();
  323. $now = Date("Y-m-d H:i:s",time());
  324. if(!$coupon){
  325. return $this->renderError('找不到信息');
  326. }
  327. if($coupon->effect_state!=1){
  328. return $this->renderError('该卡已失效');
  329. }
  330. if($coupon->frozen_state==1){
  331. return $this->renderError("该卡已冻结");
  332. }
  333. if($coupon->avaiable_good_num==0){
  334. return $this->renderError("该卡余额已用完");
  335. }
  336. if($coupon->avaiable_good_num<$good_num){
  337. return $this->renderError("该卡余额不够本次兑换");
  338. }
  339. if(time()>strtotime($coupon->deadline_at)){
  340. return $this->renderError("该卡已过期");
  341. }
  342. $isall_trans = $coupon->isall_trans;
  343. $Checkout = new CheckoutService;
  344. // 订单结算api参数
  345. $params['goodsId'] = $coupon->good_id;
  346. $params['goodsSkuId'] = $coupon->good_sku_id;
  347. $params['goodsNum'] = $good_num;
  348. $params['staffUserId'] =0;
  349. $params = array_merge($this->request->param(),$params);
  350. $Checkout->setParam($params);
  351. // 表单验证
  352. if (!$this->validate->scene('buyNow')->check($params)) {
  353. return $this->renderError($this->validate->getError(), ['is_created' => false]);
  354. }
  355. //立即购买:获取订单商品列表
  356. $model = new OrderModel;
  357. $goodsList = $model->getOrderGoodsListByNow(
  358. (int)$params['goodsId'],
  359. (string)$params['goodsSkuId'],
  360. (int)$params['goodsNum'],
  361. (int)$params['staffUserId']
  362. );
  363. // 获取订单确认信息
  364. $orderInfo = $Checkout->onCheckout($goodsList);
  365. if ($Checkout->hasError()) {
  366. $status = $Checkout->getErrorStatus();
  367. if($status==423){
  368. return $this->renderError('很抱歉,您的收货地址不在商家的配送范围内', ['is_created' => false]);
  369. }else{
  370. // return $this->renderError($Checkout->getError(), ['is_created' => false]);
  371. return $this->renderError('商品暂无法兑换,请到“我的”页面联系客服', ['is_created' => false]);
  372. }
  373. }
  374. $orderInfo['couponId'] = 0;
  375. $orderInfo['couponMoney'] = $orderInfo['orderPrice'];
  376. $orderInfo['orderPayPrice'] = 0;
  377. $orderInfo['payType'] = OrderPayTypeEnum::MICAH_EXCHANGE;
  378. $orderInfo['pay_status'] = PayStatusEnum::SUCCESS;
  379. // 创建订单
  380. if(!$Checkout->createOrder($orderInfo)) {
  381. return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]);
  382. }
  383. $order_id = $Checkout->model['order_id'];
  384. $coupon->user_id = $userinfo->user_id;
  385. $coupon->get_at = $now;
  386. $coupon->activation_at = $now;
  387. $coupon->avaiable_good_num = $coupon->avaiable_good_num - $good_num;
  388. // if($coupon->avaiable_good_num==0){
  389. // $coupon->effect_state = 2;
  390. // }
  391. $coupon->save();
  392. $coupon_user_id = 0;
  393. if($coupon->parent_id>0){
  394. $parent_coupon = UsercouponModel::where("id",$coupon->parent_id)->find();
  395. $coupon_user_id = $parent_coupon->user_id??0;
  396. }else{
  397. $coupon_user_id = $coupon->user_id;
  398. }
  399. $detail['user_coupon_id'] = $coupon->id;
  400. $detail['good_num'] = $good_num;
  401. $detail['good_id'] = $coupon->good_id;
  402. $detail['good_sku_id'] = $coupon->good_sku_id;
  403. $detail['created_at'] = $now;
  404. $detail['coupon_user_id'] = $coupon_user_id;
  405. $detail['user_id'] = $userinfo->user_id;
  406. $detail['order_id'] = $order_id;
  407. $detail['good_name'] = $goodsList[0]['goods_name']??'';
  408. $detail['tmp_id'] = 1000000+intval($order_id);
  409. $detail['parent_id'] = $coupon->parent_id;
  410. $detailModel = new UsercoupondetailModel;
  411. $detailModel->save($detail);
  412. $good_num = UsercoupondetailModel::where("user_coupon_id",$coupon->id)->sum('good_num');
  413. if($coupon->good_num==$good_num){
  414. //兑换完成了,状态改为已失效
  415. UsercouponModel::where("id",$coupon->id)->update(['effect_state'=>2]);
  416. }
  417. return $this->renderSuccess([
  418. 'orderId' => $order_id, //订单id
  419. ]);
  420. }
  421. //一条米卡信息
  422. public function one($user_coupon_id=0){
  423. $userinfo = UserService::getCurrentLoginUser(true);
  424. $info = UsercouponModel::where('id',$user_coupon_id)->where("user_id",$userinfo->user_id)->find();
  425. $now = Date("Y-m-d H:i:s",time());
  426. if(!$info){
  427. return $this->renderError('找不到信息');
  428. }
  429. if($info->effect_state==2){
  430. return $this->renderError('该卡已失效');
  431. }
  432. if($info->frozen_state==1){
  433. return $this->renderError("该卡已冻结");
  434. }
  435. if($info->good_sku_id>0){
  436. $goodsku = GoodsSkuModel::where('goods_sku_id',$info->good_sku_id)->where('goods_id',$info->good_id)->find();
  437. }
  438. $goods = GoodsModel::field('goods_name')->where("goods_id",$info->good_id)->find();
  439. $info->good_name = $goods->goods_name??'';
  440. $info->sku_name = $goodsku->goods_props[0]['value']['name']??'';
  441. return $this->renderSuccess(compact("info"));
  442. }
  443. //卡转赠, 整卡转赠
  444. public function shareto($user_coupon_id,$isall=1,$trans_good_num=1){
  445. $userinfo = UserService::getCurrentLoginUser(true);
  446. $coupon = UsercouponModel::where('id',$user_coupon_id)->where("user_id",$userinfo->user_id)->find();
  447. if($coupon->effect_state==2){
  448. return $this->renderError('该卡已失效');
  449. }
  450. if($coupon->frozen_state==1){
  451. return $this->renderError("该卡已冻结");
  452. }
  453. if($coupon->activation_state==0){
  454. return $this->renderError("该卡未激活");
  455. }
  456. if($isall==1){
  457. if($coupon->good_num!=$coupon->avaiable_good_num){
  458. return $this->renderError("该卡不能整体转赠");
  459. }
  460. }else{
  461. if($coupon->avaiable_good_num<$trans_good_num){
  462. return $this->renderError("该卡转赠数量不能超过剩余可用数量");
  463. }
  464. }
  465. if($coupon->avaiable_good_num<=0){
  466. return $this->renderError("该卡没有可用余额");
  467. }
  468. $now = Date("Y-m-d H:i:s",time());
  469. $value = $coupon->id."|".$userinfo->user_id.'|'.time();
  470. $sign = md5($value);
  471. if($isall==1){
  472. $data['good_num'] = $coupon->good_num;
  473. $data['avaiable_good_num'] = $coupon->avaiable_good_num;
  474. }else{
  475. $data['good_num'] = $trans_good_num;
  476. $data['avaiable_good_num'] = $trans_good_num;
  477. $data['is_delete'] = 1;
  478. }
  479. $data['isall_trans'] = $isall;
  480. $data['coupon_card_id'] = $coupon->coupon_card_id;
  481. $data['coupon_card_name'] = $coupon->coupon_card_name;
  482. $data['coupon_no'] = $coupon->coupon_no;
  483. $data['coupon_code'] = $coupon->coupon_code;
  484. $data['coupon_type'] = $coupon->coupon_type;
  485. $data['coupon_category'] = $coupon->coupon_category;
  486. $data['good_id'] = $coupon->good_id;
  487. $data['good_sku_id'] = $coupon->good_sku_id;
  488. $data['created_at'] = $now;
  489. $data['effect_state'] = 1;
  490. $data['sign'] = $sign;
  491. $data['parent_id'] = $coupon->id;
  492. $data['deadline_at'] = $coupon->deadline_at;
  493. $data['activation_state']=1;
  494. $model = new UsercouponModel;
  495. $model->save($data);// 写一张新的米卡记录,未领取
  496. if($isall==1){
  497. $coupon->effect_state = 0;//原卡变更为已失效
  498. $coupon->avaiable_good_num =0;
  499. }else{
  500. $coupon->avaiable_good_num = $coupon->avaiable_good_num - $trans_good_num;
  501. }
  502. $coupon->save();
  503. return $this->renderSuccess(compact('sign'));
  504. }
  505. //
  506. public function index(){
  507. $t = 86400;
  508. // $t = 120;
  509. //整卡转赠
  510. $list = UsercouponModel::field("id")->where('effect_state',0)->select();
  511. // return $list;
  512. $idarr = [];
  513. foreach($list as $row){
  514. $idarr[] = $row['id'];
  515. }
  516. foreach($idarr as $id){
  517. $coupon = UsercouponModel::where('parent_id',$id)->find();
  518. if($coupon){
  519. $add_time = strtotime($coupon['created_at']) + $t;//加一天的时
  520. $now = time();
  521. //过期了没领
  522. if($now>$add_time){
  523. //整卡赠送
  524. if($coupon->isall_trans==1){
  525. $coupon->effect_state = 2;//已失效
  526. $coupon->save();//该卡改为已失效
  527. $pcouponModel = UsercouponModel::where('id',$coupon->parent_id)->where('effect_state',0)->find();
  528. $pcouponModel->effect_state = 1;//原卡改为生效中,
  529. $pcouponModel->avaiable_good_num = $pcouponModel->good_num;//可用数量改为原来的值
  530. $pcouponModel->save();
  531. }
  532. }
  533. }
  534. }
  535. //部分转赠 未被领取
  536. $list = UsercouponModel::where('user_id',0)->where('isall_trans',0)->where('effect_state',1)->select();
  537. foreach($list as $row){
  538. $add_time = strtotime($row['created_at']) + $t;//加一天的时间
  539. $now = time();
  540. //过期了没领
  541. if($now>$add_time){
  542. $id = $row['id'];
  543. $coupon = UsercouponModel::where("id",$id)->find();
  544. $coupon->effect_state = 2;
  545. $coupon->save();
  546. $parent_coupon = UsercouponModel::where('id',$coupon->parent_id)->find();
  547. if($parent_coupon->effect_state==1){
  548. $parent_coupon->avaiable_good_num = $parent_coupon->avaiable_good_num+$coupon->avaiable_good_num;
  549. if($parent_coupon->avaiable_good_num<=$parent_coupon->good_num){
  550. $parent_coupon->save();
  551. }
  552. }
  553. }
  554. }
  555. echo 'success';
  556. echo 't:'.$t;
  557. }
  558. }