AllwinGiftData.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 支付有礼
  7. */
  8. namespace app\allwin\model;
  9. use think\Model;
  10. use app\allwin\model\Coupon;
  11. use app\allwin\model\CouponUser;
  12. use app\allwin\model\AllwinGiftStore;
  13. use app\allwin\model\Vip;
  14. use app\common\facade\Inform;
  15. use think\facade\Request;
  16. class AllwinGiftData extends Model{
  17. protected $pk = 'id';
  18. //关联用户信息
  19. public function user(){
  20. return $this->hasOne('app\common\model\SystemUser','id','uid');
  21. }
  22. //所属活动
  23. public function gift(){
  24. return $this->hasOne('AllwinGift','id','gift_id');
  25. }
  26. /**
  27. * 付款后赠送给某个用户礼物(注意是在买单付款通知中实现)
  28. * @path allwin\controller\v4\Notify\storeWechat();
  29. * @return Boolean
  30. */
  31. public static function giveGift($order,$miniapp_id){
  32. $store = AllwinGiftStore::where(['store_id' => $order->store_id,'is_lock' => 0])->field('gift_id')->find();
  33. if(empty($store)){
  34. return;
  35. }
  36. if(empty($store->gift)){
  37. return;
  38. }
  39. $coupon = Coupon::where(['id' => $store->gift->coupon_id])->find();
  40. if(empty($coupon)) {
  41. return;
  42. }
  43. //判断优惠券库存
  44. //判断用户是否会员(不是会员禁止增加记录)
  45. if($store->gift->types){
  46. $vip = Vip::where(['user_id' => $order->uid,'is_lock' => 0])->field('vipcard_id')->find();
  47. if(empty($vip)){
  48. Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'开通会员买单有机会活动获得['.$coupon['name'].']','state' => '无身份']);
  49. return;
  50. }
  51. }
  52. //增加与更新付款数据
  53. $giftData = self::where(['uid' => $order->uid,'gift_id' => $store->gift->id])->find();
  54. //发放优惠券
  55. if(empty($giftData)){
  56. $data['uid'] = $order->uid;
  57. $data['gift_id'] = $store->gift->id;
  58. $data['pay_num'] = 1;
  59. $data['pay_amount'] = $order->order_amount;
  60. self::insert($data);
  61. }else{
  62. //判断是否已领取(如果需要判断领取次数的限制也在这里增加判断代码)
  63. if($giftData->coupon_id > 0){
  64. if($order->coupon_user_id == $giftData->coupon_id){
  65. $giftData->is_take = 1;
  66. $giftData->take_time = Request::time();
  67. $giftData->save();
  68. }
  69. return; //暂停执行后面的代码
  70. }
  71. $giftData->pay_num = ['inc',1];
  72. $giftData->pay_amount = ['inc',$order->order_amount];
  73. $giftData->save();
  74. }
  75. $info = self::where(['uid' => $order->uid,'gift_id' => $store->gift->id])->field('pay_num,pay_amount,coupon_id,update_time')->find();
  76. if($store->gift->pay_num > 0 && $info->pay_num < $store->gift->pay_num){
  77. //通知申请者到微信
  78. Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'您还需要再支付' . $store->gift->pay_amount - $info->pay_amount . '次获得'.$coupon->name,'state' => '待完成']);
  79. return;
  80. }
  81. if($store->gift->pay_amount > 0 && $info->pay_amount < $store->gift->pay_amount){
  82. //通知申请者到微信
  83. Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'您还需要再支付' . $store->gift->pay_amount - $info->pay_amount . '元获得'.$coupon->name,'state' => '待完成']);
  84. return;
  85. }
  86. //发放指定优惠券券给用户
  87. $coupon_ids = json_encode([$store->gift->coupon_id]);
  88. $rel = CouponUser::addUserCoupon($coupon_ids,$order->uid); //领取的优惠券
  89. if(!empty($rel)){
  90. $info->coupon_id = $store->gift->coupon_id;
  91. $info->update_time = Request::time();
  92. $info->save();
  93. }
  94. if($coupon){
  95. //通知申请者到微信
  96. Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'恭喜您获得'.$coupon->name,'state' => '成功']);
  97. }
  98. }
  99. }