getMember($userId); if(!$member || $member['status'] != 1){ return false; } foreach ($levelList as $item){ if( isset($item['id']) && $member['level'] == $item['id']){ return $item; } } return $levelList[0]; } /** * 获取用户的下一等级 * @param $userId * @return void */ public function getUserNextLevel($userId){ $levelList = \app\common\model\app\agent\Level::getLevelList(); $memberModel = new \app\common\model\app\agent\Member(); $member = $memberModel->getMember($userId); if(!$member){ return false; } $levelIndex = 0; //当前的等级下标 $nowLevelIndex = 0; foreach ($levelList as $item){ $data[] = $item; if( isset($item['id']) && $member['level'] == $item['id']){ $nowLevelIndex = $levelIndex; } $levelIndex++; } if(isset($data[$nowLevelIndex+1])){ return $data[$nowLevelIndex+1]; } return false; } /** * 检查升级 * @param $userId * @return void */ public function handle($userId){ $nextLevelId = $this->checkLevelCondtion($userId); if($nextLevelId !== false){ $this->upLevel($userId,$nextLevelId); } return true; } /** * 检查是否满足升级条件 * @param $userId 用户ID * @return false 满足则返回升级等级ID 否则false */ public function checkLevelCondtion($userId) { $config = \app\common\model\app\Config::getConfig('agent'); $upLevel = $this->getUserNextLevel($userId); if(!$upLevel){ return false; } //判断是否满足条件 $satisfy = false; foreach ($upLevel['condition'] as $type => $item){ if($item['status'] == 1){ //判断自定条件 $temp = \app\api\model\app\agent\Condition::checkCondition($userId,$type,$item['value']); if($config['upgrade'] == 2){ //满足一个即可 if($temp){ $satisfy = true; break; } }else{ //需要全部满足 if(!$temp){ $satisfy = false; break; }else{ $satisfy = true; } } } } if($satisfy){ return $upLevel['id']; } return false; } /** * 升级 * @param $userId 用户ID * @param $toLevelId 要升级的等级ID * @return void */ public function upLevel($userId,$toLevelId){ $memberModel = new \app\common\model\app\agent\Member(); return $memberModel->where([ 'user_id'=>$userId ])->update([ 'level'=>$toLevelId ]); } }