| | |
| | | |
| | | namespace app\common\service\order; |
| | | |
| | | use app\api\model\plus\coupon\UserCoupon as UserCouponModel; |
| | | use app\common\library\helper; |
| | | use app\common\model\plus\bonus\Order as BonusOrderModel; |
| | | use app\common\model\settings\Setting; |
| | | use app\common\model\supplier\Capital as SupplierCapitalModel; |
| | | use app\common\model\supplier\Supplier as SupplierModel; |
| | |
| | | use app\common\model\plus\agent\Order as AgentOrderModel; |
| | | use app\common\model\plus\team\Order as TeamOrderModel; |
| | | use app\common\model\user\PointsLog as PointsLogModel; |
| | | use app\common\model\user\ConsumptionLog as ConsumptionLogModel; |
| | | use app\common\enum\order\OrderTypeEnum; |
| | | use app\common\model\order\OrderSettled as OrderSettledModel; |
| | | use app\supplier\model\store\Order as StoreOrderModel; |
| | |
| | | use app\common\model\plus\shareholder\Apply as ShareholderApplyModel; |
| | | use app\common\model\plus\shareholder\Setting as ShareholderSettingModel; |
| | | use app\common\model\plus\shareholder\Bonus as ShareholderBonusModel; |
| | | use app\common\model\plus\vip\Order as VipOrderModel; |
| | | |
| | | /** |
| | | * 已完成订单结算服务类 |
| | |
| | | } |
| | | // 发放分销商佣金,发放团队分红 |
| | | foreach ($orderList as $order) { |
| | | // 赠送等级积分给用户 |
| | | $user = UserModel::detail($order['user_id']); |
| | | if ($order['is_newcomer']==1){ |
| | | $points = $order['pay_price']; |
| | | if($order['supplier']['gift_type']==10){ |
| | | $user->setIncPoints($points, '新人专区购买商品专享订单奖励积分'); |
| | | }else{ |
| | | $user->setIncConsumption($points, '新人专区购买商品专享订单奖励消费券'); |
| | | } |
| | | } |
| | | foreach ($order['product'] as $product){ |
| | | //赠送优惠券 |
| | | if ($product['open_coupon'] && $product['open_coupons']) { |
| | | $open_coupons=$product['open_coupons']; |
| | | if(!is_array($open_coupons)){ |
| | | $open_coupons=json_decode($open_coupons,1); |
| | | } |
| | | (new UserCouponModel)->addUserCardCoupon($open_coupons, $user,$order['order_id']); |
| | | } |
| | | } |
| | | AgentOrderModel::grantMoney($order, $this->orderType); |
| | | // 发放团队分红 by yj |
| | | TeamOrderModel::grantMoney($order, $this->orderType); |
| | | // 发放会员分红 |
| | | VipOrderModel::grantMoney($order); |
| | | //发放分红 |
| | | BonusOrderModel::grantMoney($order, $this->orderType); |
| | | // 生成区域代理订单 by yj |
| | | RegionOrderModel::createOrder($order); |
| | | // 生成股东分红订单 by yj |
| | | ShareholderOrderModel::createOrder($order); |
| | | // 更新队长等级 by yj |
| | | event('TeamUserGrade', $order['user_id']); |
| | | event('VipUserGrade', $order['user_id']); |
| | | if (ShareholderSettingModel::getItem('basic')['self_buy_money']) { |
| | | // 更新股东等级 by lyzflash |
| | | $shareholderModel = new ShareholderApplyModel; |
| | |
| | | $this->setIncUserExpend($orderList); |
| | | // 处理订单赠送的积分 |
| | | $this->setGiftPointsBonus($orderList); |
| | | // 处理订单赠送的消费券 |
| | | $this->setGiftConsumptionBonus($orderList); |
| | | // 将订单设置为已结算 |
| | | $this->model->onBatchUpdate($orderIds, ['is_settled' => 1,'settled_time' => time(),'is_settled_team' => 1]); |
| | | // 供应商结算 |
| | |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 处理订单赠送的消费券 |
| | | */ |
| | | private function setGiftConsumptionBonus($orderList) |
| | | { |
| | | // 计算用户所得消费券 |
| | | $userData = []; |
| | | $logData = []; |
| | | foreach ($orderList as $order) { |
| | | // 计算用户所得消费券 |
| | | $pointsBonus = $order['consumption_bonus']; |
| | | if ($pointsBonus <= 0) continue; |
| | | // 减去订单退款的积分 |
| | | foreach ($order['product'] as $product) { |
| | | if ( |
| | | !empty($product['refund']) |
| | | && $product['refund']['type']['value'] == 10 // 售后类型:退货退款 |
| | | && $product['refund']['is_agree']['value'] == 10 // 商家审核:已同意 |
| | | ) { |
| | | $pointsBonus -= $product['consumption_bonus']; |
| | | } |
| | | } |
| | | // 计算用户所得积分 |
| | | !isset($userData[$order['user_id']]) && $userData[$order['user_id']] = 0; |
| | | $userData[$order['user_id']] += $pointsBonus; |
| | | // 整理用户积分变动明细 |
| | | $logData[] = [ |
| | | 'user_id' => $order['user_id'], |
| | | 'value' => $pointsBonus, |
| | | 'describe' => "订单赠送:{$order['order_no']}", |
| | | 'app_id' => $order['app_id'], |
| | | ]; |
| | | } |
| | | if (!empty($userData)) { |
| | | // 累积到会员表记录 |
| | | $this->UserModel->onBatchIncConsumption($userData); |
| | | // 批量新增积分明细记录 |
| | | (new ConsumptionLogModel)->onBatchAdd($logData); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 累积用户实际消费金额 |