setOrderProfit(); // } else { // \Yii::warning('未开启订单佣金分销'); // } // if (!in_array(1, $commission_type)) { // \Yii::warning('未开启会员佣金分销'); // return false; // } $orderDetail = $this->getDetail(); if (!$orderDetail) { \Yii::warning('订单详情不存在'); return false; } $user = User::findOne($this->order->user_id); if (!$user) { \Yii::warning('订单用户不存在'); return false; } $order = $this->order; /* @var $orderShare Order */ $orderShare = $this->order; $cParent1 = $user->parent_id; $orderShare->parent_id = $cParent1; if ($user->parent_id) { $parent = User::findOne($user->parent_id);//上级 $cParent2 = $parent->parent_id; $orderShare->parent_id_1 = $cParent2; if ($parent->parent_id) { $parent_1 = User::findOne($parent->parent_id);//上上级 $cParent3 = $parent_1->parent_id; $orderShare->parent_id_2 = $cParent3; } else { $orderShare->parent_id_2 = -1; } } else { $orderShare->parent_id_1 = -1; $orderShare->parent_id_2 = -1; } // 旧关系记录 if ($user->old_parent_id > 0) { $old_parent = User::findOne($user->old_parent_id);//上级 $orderShare->old_parent_id = $old_parent->id; if ($old_parent->old_parent_id > 0) { $old_parent_1 = User::findOne($old_parent->old_parent_id);//上上级 $orderShare->old_parent_id_1 = $old_parent_1->id; if ($old_parent_1->old_parent_id > 0) { $old_parent_2 = User::findOne($old_parent_1->old_parent_id);//上上级 $orderShare->old_parent_id_2 = $old_parent_2->id; } } } $share_commission_money_first = 0;//一级分销总佣金 $share_commission_money_second = 0;//二级分销总佣金 $share_commission_money_third = 0;//三级分销总佣金 foreach ($orderDetail as $item) { $item_price = doubleval($item['price']); if ($item['individual_share'] == 1) { $rate_first = doubleval($item['share_commission_first']); $rate_second = doubleval($item['share_commission_second']); $rate_third = doubleval($item['share_commission_third']); $shareType = $item['share_type']; } else { $setting_shara = Option::get('share_money_setting', $order->store_id, 'share'); $setting_shara = $setting_shara ? Json::decode($setting_shara['value']) : []; $rate_first = doubleval($setting_shara['level_one']['value']); $rate_second = doubleval($setting_shara['level_two']['value']); $rate_third = doubleval($setting_shara['level_three']['value']); $shareType = $setting_shara['price_type']; } if ($shareType == 1) { $share_commission_money_first += $rate_first * $item['num']; $share_commission_money_second += $rate_second * $item['num']; $share_commission_money_third += $rate_third * $item['num']; } else { if($item_price == 0 && isset($this->order->type) && $this->order->type == 6){ $share_commission_money_first = ($this->order->pay_price - $this->order->express_price) * $rate_first / 100; $share_commission_money_second = ($this->order->pay_price - $this->order->express_price) * $rate_second / 100; $share_commission_money_third = ($this->order->pay_price - $this->order->express_price) * $rate_third / 100; }else{ $share_commission_money_first += $item_price * $rate_first / 100; $share_commission_money_second += $item_price * $rate_second / 100; $share_commission_money_third += $item_price * $rate_third / 100; } } } // 如果开启自购返利 一级是自己 if ($setting['is_rebate']['value'] == 1 && $user->is_distributor == 1) { $orderShare->rebate = $share_commission_money_first < 0.01 ? 0 : $share_commission_money_first; $orderShare->first_price = $share_commission_money_second < 0.01 ? 0 : $share_commission_money_second; $orderShare->second_price = $share_commission_money_third < 0.01 ? 0 : $share_commission_money_third; $orderShare->third_price = 0; } else { $orderShare->rebate = 0; $orderShare->first_price = $share_commission_money_first < 0.01 ? 0 : $share_commission_money_first; $orderShare->second_price = $share_commission_money_second < 0.01 ? 0 : $share_commission_money_second; $orderShare->third_price = $share_commission_money_third < 0.01 ? 0 : $share_commission_money_third; } $res = $orderShare->save(); if (!$res) { \Yii::warning('分销订单生成失败'); } \Yii::warning('分销订单生成成功'); return $res; } /** * 分红订单 */ protected function orderShare() { // 检测订单分红设置按钮是否打开 $money_setting = Option::get('share_money_setting', get_store_id()); $share_money_setting = $money_setting ? Json::decode($money_setting['value']) : []; if (!empty($share_money_setting['value']['commission_type'])) { $arr = $share_money_setting['value']['commission_type']; if (in_array(2, $arr)) { $order = $this->order; $expire_day = intval($share_money_setting['value']['expire_day']) * 24 * 3600; $expire_date = (int)$order->created_at + $expire_day; if (time() < $expire_date) { $model = new UserShareMoney(); $rate = doubleval($share_money_setting['value']['scale']); //分成比例 $money = ($order->pay_price - $order->express_price) * $rate / 100; $user_id = $order->user_id; $order_id = $order->id; $type = 0; $source = 5; $store_id = $order->store_id; $model->set($money, $user_id, $order_id, $type, $source, $store_id); } } } } /** * 获取各种类型订单详情 * @return array|bool */ private function getDetail() { return $this->getOrderDetail(); } /** * 普通订单 * @return array */ private function getOrderDetail() { /* @var $order Order */ $order = $this->order; /* @var $list OrderDetail */ $list = OrderDetail::find()->where(['is_delete' => 0, 'order_id' => $order->id])->all(); $newList = []; foreach ($list as $value) { $goods = $value->goods; $buyAttrList = Json::decode($value['attr']); if ($goods['attr_setting_type'] === 1) { $attrIdArr2 = []; foreach ($buyAttrList as $attrListItem2) { $attrIdArr2[] = $attrListItem2['attr_id']; } $goodsData = [ 'attr' => $goods['attr'], 'price' => $goods['price'], 'is_level' => $goods['is_level'], ]; $res = CommonGoods::currentGoodsAttr($goodsData, $attrIdArr2); $newItem = [ 'individual_share' => $goods['individual_share'], 'share_commission_first' => $res['share_commission_first'], 'share_commission_second' => $res['share_commission_second'], 'share_commission_third' => $res['share_commission_third'], 'share_type' => $goods['share_type'], 'num' => $value['num'], 'price' => $value['total_price'], 'mch_id' => $goods['mch_id'] ]; } else { $newItem = [ 'individual_share' => $goods['individual_share'], 'share_commission_first' => $goods['share_commission_first'], 'share_commission_second' => $goods['share_commission_second'], 'share_commission_third' => $goods['share_commission_third'], 'share_type' => $goods['share_type'], 'num' => $value['num'], 'price' => $value['total_price'], 'mch_id' => $goods['mch_id'] ]; } array_push($newList, $newItem); } return $newList; } }