$mall_id]); $obj->triggerStatistics(['pay_money' => $goods_price, 'user_id' => $user_id]); //统计完业绩,触发服务商分红的条件升级 if (MallAddons::isInstall($mall_id, 'ServeBonus')) { $cond_upgrade = new ConditionUpgradeLogic(); $order = [ 'id' => $data['order_id'], 'mall_id' => $data['mall_id'], 'user_id' => $data['user_id'], ]; $cond_upgrade->execute(AddonsEnum::ADDONS_NAME_SERVEBONUS, (new ServeBonus()), (new ServeBonusLevel()), $order); } } public function triggerStatistics($params) { $obj = new CloudStockPriceDifferenceUserTeamStatisticsService(['mall_id' => $this->mall_id, 'user_id' => $params['user_id']]); $obj->incBatchParentDataByUid($params); $obj->incBatchSelfDataByUid($params); } public function incBatchParentDataByUid($params = null) { $trans = Yii::$app->db->beginTransaction(); try { if (empty($params)) throw new Exception('传参有误'); $user_id = $this->user_id; $mall_id = $this->mall_id; $pay_money = $params['pay_money']; // 查询此用户是否有上级 $parent_list = UserPartitionRelationship::getParentIdArr($user_id);// 获取本人当前tree数据 if (empty($parent_list)) { $trans->commit(); return true; } $parent_list = array_reverse($parent_list);// 数组倒叙 foreach ($parent_list as $key => $pid) { $model = CloudStockPriceDifferenceUserTeamStatistics::find()->where(['user_id' => $pid, 'status' => StatusEnum::ENABLED])->one(); $emptyModel = empty($model); if ($emptyModel) { $model = new CloudStockPriceDifferenceUserTeamStatistics(); $model->mall_id = $mall_id; $model->user_id = $pid; $model->loadDefaultValues(); } // 上级团队 $model->team_pay_selling_price = $model->team_pay_selling_price + $pay_money; if ($key == 0) {// 直推上级 $model->user_direct_pay_selling_price = $model->user_direct_pay_selling_price + $pay_money; } elseif ($key == 1) {// 间推上级 $model->user_indirect_pay_selling_price = $model->user_indirect_pay_selling_price + $pay_money; } if (!$model->save()) throw new Exception($model->getErrorMessage()); } $trans->commit(); return true; } catch (\Exception $e) { $trans->rollBack(); $exception = FormatHelper::exception($e, "用户上级订单数据维护"); echo $exception; return false; } } public function incBatchSelfDataByUid($params = null) { try { if (empty($params)) throw new Exception('传参有误'); $pay_money = $params['pay_money']; $user_id = $this->user_id; $mall_id = $this->mall_id; $model = CloudStockPriceDifferenceUserTeamStatistics::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->one(); $emptyModel = empty($model); if ($emptyModel) { $model = new CloudStockPriceDifferenceUserTeamStatistics(); $model->mall_id = $mall_id; $model->user_id = $user_id; $model->loadDefaultValues(); } $model->self_selling_price = $model->self_selling_price + $pay_money; if (!$model->save()) throw new Exception($model->getErrorMessage()); return true; } catch (\Exception $e) { $exception = FormatHelper::exception($e, "用户订单数据维护"); echo $exception; return false; } } }