From a430a318a757a3a8e330c309e45e74e49fabe7f4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Apr 2024 20:22:28 +0800 Subject: [PATCH] 1 --- doc/Match.py | 36 -- doc/Team.py | 186 ------- webapp/controller/MatchController.class.php | 264 ---------- webapp/controller/TeamController.class.php | 533 -------------------- 4 files changed, 1019 deletions(-) delete mode 100644 doc/Match.py delete mode 100644 doc/Team.py delete mode 100644 webapp/controller/MatchController.class.php delete mode 100644 webapp/controller/TeamController.class.php diff --git a/doc/Match.py b/doc/Match.py deleted file mode 100644 index abcccf65..00000000 --- a/doc/Match.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- - -import _common - -class Match(object): - - def __init__(self): - self.apis = [ - { - 'name': 'getMatchInfo', - 'desc': '获取匹配信息', - 'group': 'Match', - 'url': 'webapp/index.php?c=Match&a=getMatchInfo', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ['info', _common.MatchInfo(), '匹配信息'], - ] - }, - { - 'name': 'cancel', - 'desc': '取消匹配', - 'group': 'Match', - 'url': 'webapp/index.php?c=Match&a=cancel', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - } - ] diff --git a/doc/Team.py b/doc/Team.py deleted file mode 100644 index b22ef6d2..00000000 --- a/doc/Team.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- - -import _common - -class Team(object): - - def __init__(self): - self.apis = [ - { - 'name': 'createTeam', - 'desc': '创建队伍', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=createTeam', - 'params': [ - _common.ReqHead(), - ['node_id', 0, '节点id'], - ['map_id', 0, '地图id'], - ['match_mode', 0, '0: 匹配赛模式 1: 排位赛 2: pve'], - ['pve_instance_id', 0, 'pve副本id'], - ], - 'response': [ - _common.RspHead(), - ['team_uuid', '', '队伍唯一id'], - ] - }, - { - 'name': 'teamInfo', - 'desc': '获取队伍信息', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=teamInfo', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ['team_info', _common.TeamInfo(), '队伍信息'], - ] - }, - { - 'name': 'joinTeam', - 'desc': '加入队伍', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=joinTeam', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ['team_uuid', '', '队伍唯一id'], - ] - }, - { - 'name': 'leaveTeam', - 'desc': '离开队伍', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=leaveTeam', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - },{ - 'name': 'breakup', - 'desc': '解散队伍', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=breakup', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'name': 'kickout', - 'desc': '踢人', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=kickout', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ['target_id', '', '目标account_id'], - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'name': 'handover', - 'desc': '转移队长职位', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=handover', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ['target_id', '', '目标account_id'], - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'name': 'cancel', - 'desc': '取消游戏开始', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=cancel', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'name': 'startGame', - 'desc': '开始游戏', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=startGame', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - },{ - 'name': 'doReady', - 'desc': '准备/取消', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=doReady', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ['ready_state', 0, '1:准备 0:取消'], - ], - 'response': [ - _common.RspHead(), - ] - },{ - 'name': 'updateTeam', - 'desc': '跟新队伍信息', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=updateTeam', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ], - 'response': [ - _common.RspHead(), - ] - },{ - 'name': 'permission', - 'desc': '邀请许可', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=permission', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ['target_id', '', '目标account_id'], - ], - 'response': [ - _common.RspHead(), - ] - },{ - 'name': 'setCustomInfo', - 'desc': '设置队伍自定义房间', - 'group': 'Team', - 'url': 'webapp/index.php?c=Team&a=setCustomInfo', - 'params': [ - _common.ReqHead(), - ['team_uuid', '', '队伍唯一id'], - ['custom_room_id', '', '自定义房间的ID'], - ['custom_room_state', '', '自定义房间的状态'], - ['custom_room_pwd', '', '自定义房间的密码'], - ], - 'response': [ - _common.RspHead(), - ] - }, - ] diff --git a/webapp/controller/MatchController.class.php b/webapp/controller/MatchController.class.php deleted file mode 100644 index 2fc87da6..00000000 --- a/webapp/controller/MatchController.class.php +++ /dev/null @@ -1,264 +0,0 @@ -_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $matchInfo = array( - 'state' => 0, - 'team_list' => array() - ); - $matchOkDb = $this->readMatchOk($r, $teamUuid); - if ($matchOkDb) { - $this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600); - $this->refreshKeyExpire($r, MATCH_OK_KEY . $matchOkDb['target_team'], 1000*600); - $this->refreshKeyExpire($r, TEAMID_KEY . $matchOkDb['target_team'], 1000*600); - $this->fillMatchInfo($r, $teamUuid, $matchInfo, $matchOkDb); - } else { - $this->execMatch($r, $teamUuid, $teamDb, $matchInfo); - } - $this->_rspData($matchInfo); - } - - public function cancel() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (!empty($teamDb)) { - $r->del(MATCH_OK_KEY . $teamUuid); - $matchOkDb = $this->readMatchOk($r, $teamUuid); - if ($matchOkDb) { - $r->del(MATCH_OK_KEY . $matchOkDb['target_team']); - } - { - $currMatchDb = $this->readCurrMatchTeam($r); - if (!empty($currMatchDb)) { - unset($currMatchDb[$teamUuid]); - $r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb)); - $this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600); - } - } - } - $this->_rspOk(); - } - - private function readTeamDb($r, $teamUuid) - { - $teamDbStr = $r->get(TEAMID_KEY . $teamUuid); - if (empty($teamDbStr)) { - return null; - } - $this->refreshKeyExpire($r, TEAMID_KEY . $teamUuid, 1000*600); - $teamDb = json_decode($teamDbStr, true); - return $teamDb; - } - - /* - { - "": { - "team_uuid": "dafsdf" - "match_time": 231434 - } - } - */ - private function readCurrMatchTeam($r) - { - $teamDbStr = $r->get(MATCH_CURRENT_TEAM_KEY); - if (empty($teamDbStr)) { - return null; - } - $teamDb = json_decode($teamDbStr, true); - return $teamDb; - } - - /* - { - "target_team": "dafsdf" - "match_time": 231434 - } - */ - private function readMatchOk($r, $teamUuid) - { - $teamDbStr = $r->get(MATCH_OK_KEY . $teamUuid); - if (empty($teamDbStr)) { - return null; - } - $this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600); - $teamDb = json_decode($teamDbStr, true); - return $teamDb; - } - - private function refreshKeyExpire($r, $key, $time) - { - $r->pexpire($key, $time); - } - - private function execMatch($r, $teamUuid, $teamDb, &$matchInfo) - { - $currMatchDb = $this->readCurrMatchTeam($r); - if (empty($currMatchDb)) { - $currMatchDb = array( - $teamUuid => array( - 'team_uuid' => $teamUuid, - 'match_time' => $this->_getNowTime() - ) - ); - $r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb)); - $this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600); - } else { - $delTeams = array(); - $selfTeamDb = $currMatchDb[$teamUuid]; - if ($selfTeamDb && myself()->_getNowTime() - $selfTeamDb['match_time'] > 7) { - $this->matchOk($r, $teamUuid, $selfTeamDb); - $this->fillMatchInfo($r, $teamUuid, $matchInfo, $this->readMatchOk($r, $teamUuid)); - array_push($delTeams, $teamUuid); - } else { - foreach ($currMatchDb as $key => $val) { - $tmpTeamDb = $this->readTeamDb($r, $key); - if ($tmpTeamDb['zid'] != $teamDb['zid'] || - $tmpTeamDb['node_id'] != $teamDb['node_id'] || - $tmpTeamDb['map_id'] != $teamDb['map_id']) { - continue; - } - if (!empty($tmpTeamDb) && $this->_getNowTime() - $val['match_time'] > 120) { - array_push($delTeams, $key); - } else { - $found = false; - if ($key == $teamUuid) { - $found = true; - } else { - foreach ($val['member_list'] as $member) { - if ($member['account_id'] == myself()->_getAccountId()) { - $found = true; - break; - } - } - } - if (!$found) { - $this->matchOk($r, $teamUuid, $val); - $this->fillMatchInfo($r, $teamUuid, $matchInfo, $this->readMatchOk($r, $teamUuid)); - array_push($delTeams, $key); - } - } - }//end foreach $currMatchDb - } - if (count($delTeams) > 0) { - foreach ($delTeams as $id) { - unset($currMatchDb[$id]); - } - $r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb)); - $this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600); - } - } - } - - private function matchOk($r, $teamUuid, $currMatchDb) - { - { - $matchOkDb = array( - 'target_team' => $currMatchDb['team_uuid'], - 'match_time' => $this->_getNowTime() - ); - $r->set(MATCH_OK_KEY . $teamUuid, json_encode($matchOkDb)); - $this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600); - } - { - $matchOkDb = array( - 'target_team' => $teamUuid, - 'match_time' => $this->_getNowTime() - ); - $r->set(MATCH_OK_KEY . $currMatchDb['team_uuid'], json_encode($matchOkDb)); - $this->refreshKeyExpire($r, MATCH_OK_KEY . $currMatchDb['team_uuid'], 1000*600); - } - } - - private function fillMatchInfo($r, $teamUuid, &$matchInfo, $matchOkDb) - { - if (empty($matchOkDb)) { - return; - } - error_log(json_encode($matchOkDb)); - $matchInfo['state'] = 1; - $data = array( - 'zid' => '', - 'node_id' => '', - 'room_uuid' => '', - 'start_time' => $matchOkDb['match_time'], - 'team_list' => array() - ); - $teamList = array(); - { - $teamDb = $this->readTeamDb($r, $teamUuid); - array_push($matchInfo['team_list'], $teamDb); - $teamInfo = array( - 'team_uuid' => $teamDb['team_uuid'], - 'members' => array() - ); - foreach ($teamDb['member_list'] as $val) { - array_push($teamInfo['members'], array( - 'account_id' => $val['account_id'] - )); - } - array_push($teamList, $teamInfo); - $data['zid'] = $teamDb['zid']; - $data['node_id'] = $teamDb['node_id']; - $data['room_uuid'] = $teamDb['team_uuid']; - } - { - $teamDb = $this->readTeamDb($r, $matchOkDb['target_team']); - if (!empty($teamDb) && $teamDb['team_uuid'] != $teamUuid) { - array_push($matchInfo['team_list'], $teamDb); - $teamInfo = array( - 'team_uuid' => $teamDb['team_uuid'], - 'members' => array() - ); - foreach ($teamDb['member_list'] as $val) { - array_push($teamInfo['members'], array( - 'account_id' => $val['account_id'] - )); - } - array_push($teamList, $teamInfo); - if (strcasecmp($teamDb['team_uuid'], $data['room_uuid']) < 0) { - $data['room_uuid'] = $teamDb['team_uuid']; - } - } - } - $data['team_list'] = $teamList; - $payload = md5(json_encode($data) . '520d8eAbB(8cf1^#$^&!@d833a42c820432PDAFE^^)') . - ":moba_room|" . json_encode($data); - $matchInfo['join_msg'] = array( - 'team_uuid' => $teamUuid, - 'payload' => $payload - ); - } - -} diff --git a/webapp/controller/TeamController.class.php b/webapp/controller/TeamController.class.php deleted file mode 100644 index 1e2703e0..00000000 --- a/webapp/controller/TeamController.class.php +++ /dev/null @@ -1,533 +0,0 @@ -_getZid(); - $teamUuid = $nodeId . '_' . - $zid . '_' . - md5($this->_getAccountId() . $this->_getNowTime()); - - /*if (!in_array(array - ( - self::MATCH_MODE_NORMAL, - self::MATCH_MODE_RANK, - self::MATCH_MODE_PVE, - ), - $matchMode)) { - $this->_rspErr(1, 'match mode error'); - return; - }*/ - - $userDb = $this->_getOrmUserInfo(); - error_log("CREATE TEAM : " . $userDb['account_id']); - //验证pve_instance_id合法性 - if ($pveInstanceId){ -// if ($userDb['level'] < \mt\LevelUp::USER_LEVEL_PVE_MATCH_LIMIT){ - if ($userDb['star_num'] < \mt\StarLevel::STAR_NUM_PVE_MATCH_LIMIT){ - $this->_rspErr(1,'Not agreed terms'); - return; - } - $pveGame = \mt\PveGemini::get($pveInstanceId); - if (!$pveGame){ - $this->_rspErr(1, 'pve_instance_id error'); - return; - } - if (!in_array($pveInstanceId,\mt\PveGemini::getAbleCombatMeta($userDb['pve_instance_id']))){ - $this->_rspErr(1, "You can't challenge beyond your level"); - return; - } - } - if ($matchMode == self::MATCH_MODE_RANK){ -// if ($userDb['level'] < \mt\LevelUp::USER_LEVEL_RANK_MATCH_LIMIT){ - if ($userDb['star_num'] < \mt\StarLevel::STAR_NUM_RANK_MATCH_LIMIT){ - $this->_rspErr(1,'Not agreed terms'); - return; - } - } - $userDto = User::toPreset($userDb); - $userDto['is_leader'] = 1; - $userDto['is_ready'] = 1; - $userDto['permission'] = 1; - $userDto['createtime'] = $userDb['createtime']; - $teamDb = array( - 'map_id' => $mapId, - 'node_id' => $nodeId, - 'zid' => $zid, - 'team_uuid' => $teamUuid, - 'state' => 0, - 'payload' => '', - 'match_mode' => $matchMode, - 'pve_instance_id' => $pveInstanceId, - 'slot_num' => 1, - 'member_list' => array($userDto), - 'custom_room' => array(), - ); - - $r = $this->_getRedis($teamUuid); - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - } - - public function teamInfo() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $r->pexpire(TEAMID_KEY . $teamUuid, 1000*600); - $this->_rspData(array( - 'team_info' => $teamDb - )); - } - - public function updateTeam(){ - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $userDb = $this->_getOrmUserInfo(); - $userDto = User::toPreset($userDb); - foreach ($teamDb['member_list'] as $key=>$member) { - if ($member['account_id'] == $this->_getAccountId()) { - $userDto['is_leader'] = $member['is_leader']; - $userDto['is_ready'] = $member['is_ready']; - $userDto['createtime'] = $member['createtime']; - $teamDb['member_list'][$key] = $userDto; - } - } - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - } - - public function joinTeam() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $userDb = $this->_getOrmUserInfo(); - if ($teamDb['match_mode'] == self::MATCH_MODE_RANK && -// $userDb['level'] < \mt\LevelUp::USER_LEVEL_RANK_MATCH_LIMIT){ - $userDb['star_num'] < \mt\StarLevel::STAR_NUM_RANK_MATCH_LIMIT){ - $this->_rspErr(1,'Not agreed terms'); - return; - } - - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId()) { - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - return; - } - } - $userDb = User::find($this->_getAccountId()); - - //验证pve_instance_id合法性 - if ($teamDb['pve_instance_id']>0){ - if (!in_array($teamDb['pve_instance_id'],\mt\PveGemini::getAbleCombatMeta($userDb['pve_instance_id']))) { - $this->_rspErr(1, 'No challenge'); - return; - } -// if ($userDb['level'] < \mt\LevelUp::USER_LEVEL_PVE_MATCH_LIMIT){ - if ($userDb['star_num'] < \mt\StarLevel::STAR_NUM_PVE_MATCH_LIMIT){ - $this->_rspErr(1,'Not agreed terms'); - return; - } - } - - $userDto = User::toPreset($userDb); - $userDto['createtime'] = $userDb['createtime']; - array_push($teamDb['member_list'], $userDto); - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - } - - public function leaveTeam() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $newMemberList = array(); - $isLeader = false; - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] == 1){ - $isLeader = true; - } - if ($member['account_id'] != $this->_getAccountId()) { - array_push($newMemberList, $member); - } - } - if (count($newMemberList)<1){ - $this->delTeamDb($r, $teamUuid); - $this->_rspOk(); - return; - } - if ($isLeader){ - $newMemberList[0]['is_leader'] = 1; - } - $teamDb['member_list'] = $newMemberList; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function breakup(){ - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as &$member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - $this->delTeamDb($r, $teamUuid); - $this->_rspOk(); - } - - - public function kickout() - { - $teamUuid = getReqVal('team_uuid', ''); - $account_id = getReqVal('target_id', ''); - if (! $account_id){ - $this->_rspErr(1, 'target_id param error'); - return; - } - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $temp = array_map(function ($val){ - return $val['account_id']; - },$teamDb['member_list']); - if(! in_array($account_id,$temp)){ - $this->_rspErr(1, 'The team do not have users'); - return; - } -// if(! in_array($account_id,array_column($teamDb['member_list'],'account_id'))){ -// $this->_rspErr(1, 'The team do not have users'); -// return; -// } - if ($account_id == $this->_getAccountId()){ - $this->_rspErr(1, 'do not get myself out of line'); - return; - } - $newMemberList = array(); - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - if ($member['account_id'] != $account_id) { - array_push($newMemberList, $member); - } - } - $teamDb['member_list'] = $newMemberList; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function closeSlot() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - if ($teamDb['slot_num'] <= 1){ - $this->_rspErr(1, 'Minimum size of team'); - return; - } - if (count($teamDb['member_list'])== 4){ - $this->_rspErr(1, "Can't shut down"); - return; - } - $teamDb['slot_num']-=1; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function openSlot() - { - $teamUuid = getReqVal('team_uuid', ''); - $slotNum = getReqVal('slot_num', 1); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspOk(); - return; - } - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - if (count($teamDb['member_list'])>$slotNum){ - $this->_rspErr(1, 'slot_num Insufficient '); - return; - } - $teamDb['slot_num'] = $slotNum; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function handover() - { - $teamUuid = getReqVal('team_uuid', ''); - $account_id = getReqVal('target_id', ''); - if (! $account_id){ - $this->_rspErr(1, 'target_id param error'); - return; - } - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $temp = array_map(function ($val){ - return $val['account_id']; - },$teamDb['member_list']); - if(! in_array($account_id,$temp)){ - $this->_rspErr(1, 'The team do not have users'); - return; - } -// if(! in_array($account_id,array_column($teamDb['member_list'],'account_id'))){ -// $this->_rspErr(1, 'The team do not have users'); -// return; -// } - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - if ($account_id == $this->_getAccountId()){ - $this->_rspErr(1, " You're already the captain "); - return; - } - foreach ($teamDb['member_list'] as &$member) { - if ($member['account_id'] == $this->_getAccountId()){ - $member['is_leader'] = 0; - } - if ($member['account_id'] == $account_id){ - $member['is_leader'] = 1; - } - } - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function cancel() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - $teamDb['state'] = 0; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function startGame() - { - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as $member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - } - $teamDb['state'] = 1; - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function doReady(){ - $teamUuid = getReqVal('team_uuid', ''); - $readyState = getReqVal('ready_state', 0); //1:准备 0:取消 - if(!in_array($readyState,array(0,1))){ - $this->_rspErr(1, 'ready_state param error'); - return; - } - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as &$member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] == 1){ - $this->_rspErr(1, 'Captain no operation'); - return; - } - if ($member['account_id'] == $this->_getAccountId()){ - $member['is_ready'] = $readyState?:0; - } - - } - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspOk(); - } - - public function getPveFragmentNumOrDay(){ - $todayPveGetHeroFragmentNum = myself()->_getDailyV(TN_DAILY_PVE_GET_HERO_FRAGMENT_NUM, 0); - $todayPveGetGunFragmentNum = myself()->_getDailyV(TN_DAILY_PVE_GET_GUN_FRAGMENT_NUM, 0); - $this->_rspData(array( - 'heroNum'=>$todayPveGetHeroFragmentNum, - 'gunNum'=>$todayPveGetGunFragmentNum, - )); - } - - public function permission(){ - $teamUuid = getReqVal('team_uuid', ''); - $accountId = getReqVal('target_id', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - foreach ($teamDb['member_list'] as &$member) { - if ($member['account_id'] == $this->_getAccountId() && $member['is_leader'] != 1){ - $this->_rspErr(1, 'You are not the captain.'); - return; - } - if ($member['account_id'] == $accountId){ - $member['permission'] = 1; - } - - } - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - } - - public function setCustomInfo(){ - $custom_room_state = getReqVal('custom_room_state', ''); - $custom_room_id = getReqVal('custom_room_id', ''); - $custom_room_pwd = getReqVal('custom_room_pwd', ''); - $teamUuid = getReqVal('team_uuid', ''); - $r = $this->_getRedis($teamUuid); - $teamDb = $this->readTeamDb($r, $teamUuid); - if (empty($teamDb)) { - $this->_rspErr(1, 'The team has been disbanded'); - return; - } - $teamDb['custom_room'] = array( - 'custom_room_id' => $custom_room_id, - 'custom_room_state' => $custom_room_state, - 'custom_room_pwd' => $custom_room_pwd, - ); - $this->saveTeamDb($r, $teamUuid, $teamDb); - $this->_rspData(array( - 'team_uuid' => $teamUuid - )); - } - - - private function readTeamDb($r, $teamUuid) - { - $teamDbStr = $r->get(TEAMID_KEY . $teamUuid); - if (empty($teamDbStr)) { - return null; - } - $teamDb = json_decode($teamDbStr, true); - return $teamDb; - } - - private function saveTeamDb($r, $teamUuid, $teamDb) - { - $r->set(TEAMID_KEY . $teamUuid, json_encode($teamDb)); - $r->pexpire(TEAMID_KEY . $teamUuid, 1000*600); - } - - private function delTeamDb($r, $teamUuid){ - $r->del(TEAMID_KEY . $teamUuid); - } - -}