services->setting->addons->get($mall_id, $identity_desc, 'basic'); $upgrade_user_id_arr = UserPartitionRelationship::getParentIdArr($user_id); // 取上级 if(empty($configs['is_open_level_limit']) || !empty($configs['is_open_level_limit']) && $user_id != $shopping_upgrade_uid) $upgrade_user_id_arr [] = $user_id;// 如果开启了逐级升级,并且购物升级就是本人则不能进行条件升级 // if (!empty($parent_id) && !in_array($parent_id, $upgrade_user_id_arr)) { // 判断是否在其上级 // $upgrade_user_id_arr[] = $parent_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_arr[] = $model_list[$id]; } } if (empty($model_arr)) return []; $where = []; $where[] = ['mall_id' => $mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; $params = []; if($configs && isset($configs['is_open_level_limit']) && !empty($configs['is_open_level_limit'])){ $params['order'] = 'level asc'; $is_open_level_limit = true; }else{ $params['order'] = 'level desc'; $is_open_level_limit = false; } $params['where'] = $where; $level_list = $level_obj::lists($params); if (empty($level_list)) return []; foreach ($model_arr as $identity) { $flag = false; $can_upgrade_level = 0; $upgrade_status = 0; $upgrade_level = 0;// 升级次数 foreach ($level_list as $identity_level_arr) { // 当前等级大于或等于可以升级的等级则直接退出 if(!$is_open_level_limit && $identity->level >= $identity_level_arr['level']){ break; } if($is_open_level_limit && $identity->level >= $identity_level_arr['level']){ continue; } $can_upgrade_level = $identity_level_arr['level']; $upgrade_level ++; //开启条件升级 if ($identity_level_arr['upgrade_type_condition']&&$identity_level_arr['is_auto_upgrade']) { $upgrade_status = UpgradeEnum::UPGRADE_STATUS_CONDITION; $res = WechatVideoShopUpgradeCondition::check($identity->user_id, $identity_level_arr, $mall_id, $identity_level_arr['level']); if ($res) { $flag = true; break; } } } if ($flag && $can_upgrade_level > $identity->level) { // 开启了逐级升级,跳级升级的用户无法升级 if($is_open_level_limit && $upgrade_level > 1) continue; $identity->level = $can_upgrade_level; $identity->upgrade_status = $upgrade_status; $identity->upgrade_level_at = time(); 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; // 这里走视频号关系链 if (!empty($parent_id)) { // 上级不为空的情况下 $parent = $identity_obj::getOne([ ['user_id' => $parent_id], ['status' => StatusEnum::ENABLED] ]); $w_model_arr = []; if (!empty($parent)) { $w_model_arr[] = $parent; } foreach ($w_model_arr as $identity) { $flag = false; $can_upgrade_level = 0; $upgrade_status = 0; $upgrade_level = 0;// 升级次数 foreach ($level_list as $identity_level_arr) { // 当前等级大于或等于可以升级的等级则直接退出 if(!$is_open_level_limit && $identity->level >= $identity_level_arr['level']){ break; } if($is_open_level_limit && $identity->level >= $identity_level_arr['level']){ continue; } $can_upgrade_level = $identity_level_arr['level']; $upgrade_level ++; //开启条件升级 if ($identity_level_arr['upgrade_type_condition']&&$identity_level_arr['is_auto_upgrade']) { $upgrade_status = UpgradeEnum::UPGRADE_STATUS_CONDITION; $res = WechatVideoShopUpgradeCondition::check($identity->user_id, $identity_level_arr, $mall_id, $identity_level_arr['level'], false); if ($res) { $flag = true; break; } } } if ($flag && $can_upgrade_level > $identity->level) { // 开启了逐级升级,跳级升级的用户无法升级 if($is_open_level_limit && $upgrade_level > 1) continue; $identity->level = $can_upgrade_level; $identity->upgrade_status = $upgrade_status; $identity->upgrade_level_at = time(); 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; } } protected function local() { } }