setGrade($userId); return true; } /** * 设置等级 */ private function setGrade($userId) { log_write('股东升级$user_id='.$userId); // 用户模型 $user = UserModel::detail($userId); if(!$user) { return false; } // 获取所有等级 $list = GradeModel::getUsableList($user['app_id']); if ($list->isEmpty()) { return false; } // 遍历等级,根据升级条件 查询是否满足升级条件,并且他的等级小于该等级 $upgradeGrade = null; foreach ($list as $grade) { if($grade['is_default'] == 1){ continue; } // 不自动升级 if($grade['auto_upgrade'] == 0){ continue; } $is_upgrade = $this->checkCanUpdate($user, $grade); if($is_upgrade){ $upgradeGrade = $grade; continue; }else{ break; } } log_write('upgradeGrade:'.$upgradeGrade); if($upgradeGrade){ $this->dologs('setRegionUserGrade', [ 'user_id' => $user['user_id'], 'grade_id' => $upgradeGrade['grade_id'], ]); // 修改会员的等级 (new UserModel())->upgradeGrade($user, $upgradeGrade); } } /** * 查询满足会员等级升级条件的用户列表 */ public function checkCanUpdate($user, $grade) { $agent_money = false; // 按推广金额升级 if($grade['open_agent_money'] == 1 && ($user['money'] + $user['freeze_money'] + $user['total_money']) >= $grade['agent_money']){ $agent_money = true; } $agent_user = false; // 按直推人数升级 if($grade['open_agent_user'] == 1 && AgentUserModel::agentCount($user['user_id']) >= $grade['agent_user']){ $agent_user = true; } // 按团队人数升级 $region_user = false; if($grade['open_region_user'] == 1 && RefereeModel::regionCount($user['user_id']) >= $grade['region_user']) { $region_user = true; } // 按团队业绩升级 $region_money = false; if($grade['open_region_money'] == 1 && OrderModel::getOrderAllPrice($user['user_id']) >= $grade['region_money']) { $region_money = true; } if($grade['condition_type'] == 'and'){ $agent_money = $grade['open_agent_money'] == 1 ? $agent_money : true; $agent_user = $grade['open_agent_user'] == 1 ? $agent_user : true; $region_user = $grade['open_region_user'] == 1 ? $region_user : true; $region_money = $grade['open_region_money'] == 1 ? $region_money : true; return $agent_money && $agent_user && $region_user && $region_money; }else{ return $agent_money || $agent_user || $region_user || $region_money; } } /** * 记录日志 */ private function dologs($method, $params = []) { $value = 'UserGrade --' . $method; foreach ($params as $key => $val) $value .= ' --' . $key . ' ' . $val; return log_write($value, 'task'); } }