memberId = $memberId; $this->get_type = $get_type; $this->send_total = count($couponIds); $this->relation = $relation; $this->transferId = $transferId; $this->get_time = $getTime; $data = array(); $log_data = array(); foreach ($couponIds as $couponId) { $this->couponId = $couponId; $data[] = $this->getMemberCouponData(); $log_data[] = $this->getCouponLogData(); } //dump($log_data); //dd($data); return $this->updateMemberCoupons($data, $log_data); } //多种多张优惠券 public function sendCouponsNumsToMember($memberId, array $couponIds, array $couponNums ,$get_type = '0', $relation = '', $transferId = '') { if (empty($memberId) || !is_numeric($memberId)) { return null; } if (empty($couponIds) || !is_array($couponIds)) { return null; } $this->memberId = $memberId; $this->get_type = $get_type; $this->relation = $relation; $this->transferId = $transferId; $data = array(); $log_data = array(); foreach ($couponIds as $key=>$couponId) { for ($i=0 ; $i<$couponNums[$key] ; $i++) { $this->couponId = $couponId; $data[] = $this->getMemberCouponData(); $log_data[] = $this->getCouponLogData(); } } return $this->updateMemberCoupons($data, $log_data); } public function sendCouponToMembers(array $memberIds, $couponId, $get_type = '0', $relation = '',$transferId) { if (empty($couponId) || !is_numeric($couponId)) { return null; } if (empty($memberIds) || !is_array($memberIds)) { return null; } $this->couponId = $couponId; $this->get_type = $get_type; $this->send_total = 1; $this->relation = $relation; $this->transferId = $transferId; $data = array(); $log_data = array(); foreach ($memberIds as $memberId) { $this->memberId = $memberId; $data[] = $this->getMemberCouponData(); $log_data[] = $this->getCouponLogData(); } return $this->updateMemberCoupons($data, $log_data); } public function sendCouponToMember($memberId, $couponId, $get_type = '0', $relation = '', $transferId = '') {//新发放优惠券接口 if (empty($memberId) || !is_numeric($memberId)) { Log::info('优惠券发送接口调用失败,会员ID错误!', print_r($memberId,true)); return null; } $this->memberId = $memberId; $this->get_type = $get_type; $this->relation = $relation; $this->transferId = $transferId; $data = array(); $log_data = array(); $this->couponId = $couponId; $data[] = $this->getMemberCouponData(); $log_data[] = $this->getCouponLogData(); return $this->updateMemberCoupons($data, $log_data); } protected function updateMemberCoupons(array $data, array $log_data) { if (empty($data) || !is_array($data)) { return null; } if (empty($log_data) || !is_array($log_data)) { return null; } DB::transaction(function ()use($data,$log_data) { CouponLog::insert($log_data); MemberCoupon::insert($data); }); foreach ($data as $coupon_data) { //发送获取优惠券通知 MessageNotice::couponNotice($coupon_data['coupon_id'],$coupon_data['uid']); } return true; } private function getCouponLogData() { return [ 'uniacid' => \YunShop::app()->uniacid, 'logno' => $this->getCouponLogRemark(), 'member_id' => $this->memberId, 'couponid' => $this->couponId, 'paystatus' => 0, //todo 手动发放的不需要支付? 'creditstatus' => 0, //todo 手动发放的不需要支付? 'paytype' => 0, //todo 这个字段什么含义? 'getfrom' => $this->get_type, 'status' => 0, 'createtime' => time(), ]; } private function getMemberCouponData() { return [ 'uniacid' => \YunShop::app()->uniacid, 'uid' => $this->memberId, 'coupon_id' => $this->couponId, 'get_type' => $this->get_type, 'used' => 0, 'get_time' => $this->get_time?:time(), ]; } //todo get_type 使用常量判断,目前不确定常量放在哪里 private function getCouponLogRemark() { $adminId = \YunShop::app()->uid; switch ($this->get_type) { //case '0': //$remark = '手动发放优惠券: 管理员【ID:' . $adminId . '】成功发放 ' . $this->send_total . ' 张优惠券【优惠券ID:' . $this->couponId . '】给用户【会员ID:' . $this->memberId . '】'; //break; //case '1': //$remark = '会员领取优惠券: 会员【ID:' . $this->memberId . '】成功领取' . $this->send_total . ' 张优惠券【优惠券ID:' . $this->couponId . '】'; //break; //case '3': //$remark = ''; //break; case '4': $remark = '购物赠送优惠券: 订单:'.$this->relation.'完成,成功赠送会员【ID:' . $this->memberId . '】1张优惠券【优惠券ID:' . $this->couponId . '】'; break; case '5': $remark = '会员转赠: 会员【ID:' . $this->memberId . '】优惠券变动 1张【优惠券ID:' . $this->couponId . '】转让会员【ID:'.$this->transferId.'】'; break; case '6': $remark = '签到奖励: 会员【ID:' . $this->memberId . '】优惠券变动 1张【优惠券ID:' . $this->couponId . '】'; break; case '7': $remark = '直播会员观看奖励: 会员【ID:' . $this->memberId . '】获得优惠券 1张【优惠券ID:' . $this->couponId . '】'; break; case '8': $remark = '直播间会员奖励: 会员【ID:' . $this->memberId . '】获得优惠券 1张【优惠券ID:' . $this->couponId . '】'; break; case '9': $remark = '直播主播奖励: 会员【ID:' . $this->memberId . '】获得优惠券 1张【优惠券ID:' . $this->couponId . '】'; break; case '10': $remark = '会员合并转入: 会员【ID:' . $this->memberId . '】获得优惠券 1张【优惠券ID:' . $this->couponId . '】'; break; default: $remark = '未知优惠券变动:会员【ID:' . $this->memberId . '】优惠券变动 1张【优惠券ID:' . $this->couponId . '】'; break; } return $remark; } }