From 1766637e93379f291c89d1b93507465e81df41a0 Mon Sep 17 00:00:00 2001 From: hujiabin Date: Mon, 19 Sep 2022 14:55:38 +0800 Subject: [PATCH] 1 --- doc/Team.py | 1 + webapp/controller/TeamController.class.php | 131 +++++++++++++++++++-- 2 files changed, 125 insertions(+), 7 deletions(-) diff --git a/doc/Team.py b/doc/Team.py index 7d2c849b..77d4abfc 100644 --- a/doc/Team.py +++ b/doc/Team.py @@ -86,6 +86,7 @@ class Team(object): 'params': [ _common.ReqHead(), ['team_uuid', '', '队伍唯一id'], + ['slot_id', '', '队伍卡槽id 共计:1 2 3 4'], ], 'response': [ _common.RspHead(), diff --git a/webapp/controller/TeamController.class.php b/webapp/controller/TeamController.class.php index e04e0e14..49d1c93d 100644 --- a/webapp/controller/TeamController.class.php +++ b/webapp/controller/TeamController.class.php @@ -33,8 +33,7 @@ class TeamController extends BaseAuthedController { return; }*/ -// $userDb = $this->_getOrmUserInfo(); - $userDb = User::find('6513_2006_HaABddcrIdHDoj0qg73FFwvyrYkqOsQd'); + $userDb = $this->_getOrmUserInfo(); //验证pve_instance_id合法性 if ($pveInstanceId){ @@ -104,6 +103,7 @@ class TeamController extends BaseAuthedController { } } $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']))) { @@ -127,15 +127,27 @@ class TeamController extends BaseAuthedController { $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { - $this->_rspOk(); + $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(); @@ -144,12 +156,36 @@ class TeamController extends BaseAuthedController { 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->_rspOk(); + $this->_rspErr(1, 'The team has been disbanded'); 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(); } @@ -157,12 +193,38 @@ class TeamController extends BaseAuthedController { public function closeSlot() { $teamUuid = getReqVal('team_uuid', ''); + $slot_id = getReqVal('slot_id', 0); + if (! in_array($slot_id,array(1,2,3,4)) ){ + $this->_rspErr(1, 'slot_id param error'); + return; + } + $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { - $this->_rspOk(); + $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 ($teamDb['member_list'][$slot_id-1]['account_id'] == $this->_getAccountId()){ + $this->_rspErr(1, 'do not get myself out of line'); + return; + } + if(array_key_exists($slot_id-1,$teamDb['member_list'])){ + unset($teamDb['member_list'][$slot_id-1]); + $teamDb['slot_num']-=1; + }else{ + $teamDb['slot_num']-=1; + } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } @@ -176,6 +238,17 @@ class TeamController extends BaseAuthedController { $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 ($teamDb['slot_num'] >= 4){ + $this->_rspErr(1, 'Maximum size of team'); + return; + } + $teamDb['slot_num']+=1; $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } @@ -183,12 +256,39 @@ class TeamController extends BaseAuthedController { 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->_rspOk(); + $this->_rspErr(1, 'The team has been disbanded'); 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(); } @@ -199,9 +299,16 @@ class TeamController extends BaseAuthedController { $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { - $this->_rspOk(); + $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(); } @@ -216,6 +323,12 @@ class TeamController extends BaseAuthedController { $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(); @@ -237,4 +350,8 @@ class TeamController extends BaseAuthedController { $r->pexpire(TEAMID_KEY . $teamUuid, 1000*600); } + private function delTeamDb($r, $teamUuid){ + $r->del(TEAMID_KEY . $teamUuid); + } + }