$mall_id, 'user_id' => $user_id, 'status' => [StatusEnum::ENABLED]]); if (empty($cloud_stock_agent)) return; $pool_user = CloudStockBonusPoolUser::findOne(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); $where = [ ['mall_id' => $mall_id], ['status' => StatusEnum::ENABLED], ['upgrade_type_condition' => 1], ]; if (!empty($pool_user)) { if (empty($pool_user['status'])) return; $where[] = ['>', 'level', $pool_user['level']]; } $pool_level_list = CloudStockBonusPoolLevel::lists([ 'where' => $where, 'order' => 'level desc' ]); if (empty($pool_level_list)) return; foreach ($pool_level_list as $level_model) { $cloud_stock_level_arr = json_decode($level_model['cloud_stock_level'],true); if(empty($cloud_stock_level_arr)) continue; if(!in_array($cloud_stock_agent['level'],$cloud_stock_level_arr)) continue; $is_return = false; $condition_type = $level_model['condition_type']; $checked_condition_keys = json_decode($level_model['checked_condition_keys'], true); $checked_condition_values = json_decode($level_model['checked_condition_values'], true); $checked_condition_values = array_column($checked_condition_values, 'value', 'key'); foreach ($checked_condition_keys as $k => $v) { if ($v) { $function = 'condition' . $k; if (isset($checked_condition_values[$k])) { $param = $checked_condition_values[$k]; $param['mall_id'] = $mall_id; $param['user_id'] = $user_id; $is_bool = self::$function($param); if ($condition_type == 1) { //满足其一条件可升级 if ($is_bool) { $is_return = true; break; } else { $is_return = false; } } elseif ($condition_type == 2) { if ($is_bool) { $is_return = true; } else { $is_return = false; break; } } } } } if ($is_return) { CloudStockBonusPoolUser::create([ 'mall_id' => $mall_id, 'user_id' => $user_id, 'level' => $level_model['level'], 'upgrade_status' => $upgrade_status, 'upgrade_level_at' => time(), ]); } } } //直推多少指定等级云仓代理,且每位直推代理的团队产生n位指定等级的云仓代理 public static function condition0($params) { if (!isset($params['direct_people']) || !isset($params['direct_level'])) return false; $people = $params['direct_people']; $direct_team_people = $params['direct_team_people']??0; $level = $params['direct_level']; $direct_team_level = $params['direct_team_level']??0; $user_id = $params['user_id']; $mall_id = $params['mall_id']; $user_id1_arr = UserPartitionRelationship::getChildIdArr($user_id, 1);//直推下级id $count = count($user_id1_arr);//好友人数 if ($count < $people) return false; $query = CloudStockAgent::find()->where([ 'mall_id' => $mall_id, 'user_id' => $user_id1_arr, 'level' => $level, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); $temp_query = clone $query; $nums = $query->count(); if ($nums < $people) return false; $list = $temp_query->all(); $is_true = true; if(empty($direct_team_level)||empty($direct_team_people)) return $is_true; foreach ($list as $agent){ $team_id_arr = UserPartitionRelationship::getChildIdArr($agent['user_id'], 0);//直推代理的团队 $numbers = CloudStockAgent::find()->where([ 'mall_id' => $mall_id, 'user_id' => $team_id_arr, 'level' => $direct_team_level, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->count(); if($numbers<$direct_team_people) { $is_true = false; break; } } return $is_true; } //团队产生多少指定等级云仓代理 public static function condition1($params) { if (!isset($params['team_people']) || !isset($params['team_level'])) return false; $people = $params['team_people']; $level = $params['team_level']; $user_id = $params['user_id']; $mall_id = $params['mall_id']; $user_id_arr = UserPartitionRelationship::getChildIdArr($user_id, 0);//团队下级id $count = count($user_id_arr);//团队人数 if ($count < $people) return false; $nums = CloudStockAgent::find()->where([ 'mall_id' => $mall_id, 'user_id' => $user_id_arr, 'level' => $level, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]) ->count(); if ($nums < $people) return false; return true; } //个人补货多少 public static function condition2($params) { if (!isset($params['self_fill_num'])) return false; $self_fill_num = $params['self_fill_num']; $user_id = $params['user_id']; $mall_id = $params['mall_id']; $configs = \Yii::$app->services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK, 'basic'); $changes_type = [CloudStockEnum::STOCK_CHANGE_TYPE100]; if(!empty($configs['is_upgrade_bag_give_goods_pool'])) $changes_type[]= CloudStockEnum::STOCK_CHANGE_TYPE105; $num = CloudStockIncreaseDetail::find() ->where([ 'mall_id' => $mall_id, 'user_id' => $user_id, 'changes_type' => $changes_type ])->sum('num'); if ($num < $self_fill_num) return false; return true; } //团队补货多少 public static function condition3($params) { if (!isset($params['team_fill_num'])) return false; $team_fill_num = $params['team_fill_num']; $user_id = $params['user_id']; $mall_id = $params['mall_id']; $user_id_arr = UserPartitionRelationship::getChildIdArr($user_id, 0);//团队下级id $configs = \Yii::$app->services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK, 'basic'); $changes_type = [CloudStockEnum::STOCK_CHANGE_TYPE100]; if(!empty($configs['is_upgrade_bag_give_goods_pool'])) $changes_type[]= CloudStockEnum::STOCK_CHANGE_TYPE105; $num = CloudStockIncreaseDetail::find() ->where([ 'mall_id' => $mall_id, 'user_id' => $user_id_arr, 'changes_type' => $changes_type ])->sum('num'); if ($num < $team_fill_num) return false; return true; } //直推N个分红池指定等级(低等级或平级),可升级 public static function condition4($params) { if (!isset($params['direct_people']) || !isset($params['direct_level'])) return false; $people = $params['direct_people']; $level = $params['direct_level']; $user_id = $params['user_id']; $mall_id = $params['mall_id']; $user_id1_arr = UserPartitionRelationship::getChildIdArr($user_id, 1);//直推下级id $count = count($user_id1_arr);//好友人数 if ($count < $people) return false; $nums = CloudStockBonusPoolUser::find()->where([ 'mall_id' => $mall_id, 'user_id' => $user_id1_arr, 'level' => $level, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]) ->count(); if ($nums < $people) return false; return true; } }