services->setting->addons->get($mall_id, AgentEnum::ADDONS_NAME, 'more'); $is_apply = $more_setting['is_apply'] ?? 0; if($is_apply){ foreach($upgrade_user_id_arr as $key => $uid){ $check = Agent::getUpgradeContainSelf($mall_id,$uid); if(!$check) unset($upgrade_user_id_arr[$key]); } } $model_list = $identity_obj::find()->where(['user_id' => $upgrade_user_id_arr, 'status' => StatusEnum::ENABLED])->indexBy('user_id')->all(); $model_arr = $upgrade_user_ids = []; foreach ($upgrade_user_id_arr as $id){ if(!isset($model_list[$id])){ } if(!empty($model_list[$id])) { $model_arr[] = $model_list[$id]; }else{ $model = new $identity_obj; $model->mall_id = $mall_id; $model->user_id = $id; $model->level = 0; $model->upgrade_level_at = 0; $model_arr[] = $model; } } foreach ($model_arr as $identity) { $where = []; $where[] = ['mall_id' => $mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; $where[] = ['>', 'level' , $identity->level]; $params = []; $params['where'] = $where; $params['order'] = $order_by; $before_level = $identity->level; $level_list = $level_obj::lists($params); $flag = false; $can_upgrade_level = 0; $upgrade_status = 0; if($level_list){ foreach ($level_list as $identity_level_arr) { $can_upgrade_level = $identity_level_arr['level']; //开启条件升级 if ($identity_level_arr['upgrade_type_condition']&&$identity_level_arr['is_auto_upgrade']) { $upgrade_status = UpgradeEnum::UPGRADE_STATUS_CONDITION; $res = UpgradeCondition::check($identity->user_id, $identity_level_arr, $mall_id, $identity_level_arr['level'],$order['id']); if ($res) { $flag = true; break; } } } } if ($flag && $can_upgrade_level > $identity->level) { // 记录升级日志 if ($upgrade_log_obj !== null) { $upgrade_log_obj_clone = clone $upgrade_log_obj; $upgrade_log_obj_clone->mall_id = $mall_id; $upgrade_log_obj_clone->user_id = $identity->user_id; $upgrade_log_obj_clone->before_level = $identity->level; $upgrade_log_obj_clone->after_level = $can_upgrade_level; $upgrade_log_obj_clone->upgrade_type = LevelUpgradeLogEnum::CONDITION_UPGRADE; $upgrade_log_obj_clone->order_id = $order['id']; $upgrade_log_obj_clone->upgrade_condition = $identity_level_arr ?? []; $upgrade_log_obj_clone->save(); } $identity->level = $can_upgrade_level; $identity->upgrade_status = $upgrade_status; $identity->upgrade_level_at = time(); var_dump('can_upgrade_level1111:'.$can_upgrade_level); if (!$identity->save()) throw new Exception("{用户ID:$identity->user_id},订单ID:{$order['id']},". AddonsEnum::getAddonsNameMap($identity_desc) ."条件升级失败"); var_dump('can_upgrade_level2222:'.$can_upgrade_level); $upgrade_user_ids[] = $identity->user_id; $event = new AgentUpgradeAfterEvent($mall_id); $data = [ 'after_level' => $can_upgrade_level, 'before_level' => $before_level, 'mall_id' => $mall_id, 'user_id' => $identity->user_id, 'order_id' => $order['id'], 'agent_id' => $identity->id, 'upgrade_type' => 'condition', 'operator_user_id' => $user_id, ]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); } } return $upgrade_user_ids; } catch (Exception $e) { $exception = FormatHelper::exception($e, AddonsEnum::getAddonsNameMap($identity_desc) . "条件升级失败"); echo $exception; $this->setError($exception); Yii::error($exception); return false; } } /** * 购物升级执行 无用户等级 * 样式:execute(AddonsEnum::ADDONS_NAME_BOSS, (new AddonsBoss()), $order); * @Author: lun * @DateTime: 2021/11/18 0018 16:56 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $identity_desc - 用户身份描述 * @param $identity_obj - 用户身份空对象 * @return bool | array */ public function executeNoLevel(string $identity_desc, object $identity_obj, array $order,$config) { try { //开启条件升级 $mall_id = $order['mall_id']; $user_id = $order['user_id']; $upgrade_user_id_arr = UserPartitionRelationship::getParentIdArr($user_id); $upgrade_user_id_arr [] = $user_id; $upgrade_user_id_arr = array_reverse($upgrade_user_id_arr); $model_list = $identity_obj::find()->where(['user_id' => $upgrade_user_id_arr, 'status' => StatusEnum::ENABLED])->indexBy('user_id')->all(); $model_arr = $upgrade_user_ids = []; foreach ($upgrade_user_id_arr as $id) { if (empty($model_list[$id])) { $model = new $identity_obj; $model->mall_id = $mall_id; $model->user_id = $id; $model_arr[] = $model; } } //获取升级配置 foreach ($model_arr as $identity) { $flag = false; //开启条件升级 if (!empty($config['upgrade_type_condition']) && !empty($config['is_auto_upgrade'])) { $res = UpgradeCondition::check($identity->user_id, $config, $mall_id); if ($res) { $flag = true; } } if ($flag) { if (!$identity->save()) throw new Exception("{用户ID:$identity->user_id},订单ID:{$order['id']}," . AddonsEnum::getAddonsNameMap($identity_desc) . "条件升级失败"); $upgrade_user_ids[] = $identity->user_id; } } return $upgrade_user_ids; } catch (Exception $e) { $exception = FormatHelper::exception($e, AddonsEnum::getAddonsNameMap($identity_desc) . "条件升级失败"); echo $exception; $this->setError($exception); Yii::error($exception); return false; } } }