* 支付有礼 */ namespace app\allwin\model; use think\Model; use app\allwin\model\Coupon; use app\allwin\model\CouponUser; use app\allwin\model\AllwinGiftStore; use app\allwin\model\Vip; use app\common\facade\Inform; use think\facade\Request; class AllwinGiftData extends Model{ protected $pk = 'id'; //关联用户信息 public function user(){ return $this->hasOne('app\common\model\SystemUser','id','uid'); } //所属活动 public function gift(){ return $this->hasOne('AllwinGift','id','gift_id'); } /** * 付款后赠送给某个用户礼物(注意是在买单付款通知中实现) * @path allwin\controller\v4\Notify\storeWechat(); * @return Boolean */ public static function giveGift($order,$miniapp_id){ $store = AllwinGiftStore::where(['store_id' => $order->store_id,'is_lock' => 0])->field('gift_id')->find(); if(empty($store)){ return; } if(empty($store->gift)){ return; } $coupon = Coupon::where(['id' => $store->gift->coupon_id])->find(); if(empty($coupon)) { return; } //判断优惠券库存 //判断用户是否会员(不是会员禁止增加记录) if($store->gift->types){ $vip = Vip::where(['user_id' => $order->uid,'is_lock' => 0])->field('vipcard_id')->find(); if(empty($vip)){ Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'开通会员买单有机会活动获得['.$coupon['name'].']','state' => '无身份']); return; } } //增加与更新付款数据 $giftData = self::where(['uid' => $order->uid,'gift_id' => $store->gift->id])->find(); //发放优惠券 if(empty($giftData)){ $data['uid'] = $order->uid; $data['gift_id'] = $store->gift->id; $data['pay_num'] = 1; $data['pay_amount'] = $order->order_amount; self::insert($data); }else{ //判断是否已领取(如果需要判断领取次数的限制也在这里增加判断代码) if($giftData->coupon_id > 0){ if($order->coupon_user_id == $giftData->coupon_id){ $giftData->is_take = 1; $giftData->take_time = Request::time(); $giftData->save(); } return; //暂停执行后面的代码 } $giftData->pay_num = ['inc',1]; $giftData->pay_amount = ['inc',$order->order_amount]; $giftData->save(); } $info = self::where(['uid' => $order->uid,'gift_id' => $store->gift->id])->field('pay_num,pay_amount,coupon_id,update_time')->find(); if($store->gift->pay_num > 0 && $info->pay_num < $store->gift->pay_num){ //通知申请者到微信 Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'您还需要再支付' . $store->gift->pay_amount - $info->pay_amount . '次获得'.$coupon->name,'state' => '待完成']); return; } if($store->gift->pay_amount > 0 && $info->pay_amount < $store->gift->pay_amount){ //通知申请者到微信 Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'您还需要再支付' . $store->gift->pay_amount - $info->pay_amount . '元获得'.$coupon->name,'state' => '待完成']); return; } //发放指定优惠券券给用户 $coupon_ids = json_encode([$store->gift->coupon_id]); $rel = CouponUser::addUserCoupon($coupon_ids,$order->uid); //领取的优惠券 if(!empty($rel)){ $info->coupon_id = $store->gift->coupon_id; $info->update_time = Request::time(); $info->save(); } if($coupon){ //通知申请者到微信 Inform::sms($order->uid,$miniapp_id,['title' =>'业务进展通知','type' => '支付有礼','content' =>'恭喜您获得'.$coupon->name,'state' => '成功']); } } }