From 3d12de38380764a42c5a3fc031a7cddb06d2a39c Mon Sep 17 00:00:00 2001 From: Hide_D Date: Wed, 18 Sep 2024 14:54:40 +0000 Subject: [PATCH] =?UTF-8?q?refac:=20API/Troop=20=EC=9D=98=20$me=EB=A5=BC?= =?UTF-8?q?=20GeneralLite=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20-=20StaticEventH?= =?UTF-8?q?andler=20=EC=B2=98=EB=A6=AC=EB=8F=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/API/Troop/ExitTroop.php | 25 ++++++++++++++++++++----- hwe/sammo/API/Troop/JoinTroop.php | 26 +++++++++++++++++--------- hwe/sammo/API/Troop/KickFromTroop.php | 13 +++++++++---- hwe/sammo/API/Troop/NewTroop.php | 20 +++++++++++--------- hwe/sammo/API/Troop/SetTroopName.php | 10 +++++++--- 5 files changed, 64 insertions(+), 30 deletions(-) diff --git a/hwe/sammo/API/Troop/ExitTroop.php b/hwe/sammo/API/Troop/ExitTroop.php index 22b4f62b..842f5881 100644 --- a/hwe/sammo/API/Troop/ExitTroop.php +++ b/hwe/sammo/API/Troop/ExitTroop.php @@ -6,6 +6,9 @@ use sammo\Session; use DateTimeInterface; use sammo\DB; use sammo\Enums\APIRecoveryType; +use sammo\Enums\GeneralLiteQueryMode; +use sammo\GeneralLite; +use sammo\StaticEventHandler; class ExitTroop extends \sammo\BaseAPI { @@ -24,23 +27,35 @@ class ExitTroop extends \sammo\BaseAPI $generalID = $session->generalID; $db = DB::db(); - $troopID = $db->queryFirstField('SELECT troop FROM general WHERE no = %i', $generalID); + $me = GeneralLite::createObjFromDB($generalID, ['troop'], GeneralLiteQueryMode::Lite); + if (!$me) { + return '장수 정보를 불러올 수 없습니다.'; + } + + $troopID = $me->getVar('troop'); if($troopID == 0){ return '부대에 소속되어 있지 않습니다.'; } - if($generalID != $troopID){ - $db->update('general', [ - 'troop' => 0, - ], '`no` = %i', $generalID); + if($troopID != $generalID){ + StaticEventHandler::handleEvent($me, null, $this::class, [ + "isTroopLeader" => false, + ], $this->args); + $me->setVar('troop', 0); + $me->applyDB($db); return null; } //부대장이다. + StaticEventHandler::handleEvent($me, null, $this::class, [ + "isTroopLeader" => true, + ], $this->args); $db->update('general', [ 'troop' => 0, ], '`troop` = %i', $troopID); $db->delete('troop', 'troop_leader = %i', $troopID); + $me->setVar('troop', 0); + $me->applyDB($db); return null; } diff --git a/hwe/sammo/API/Troop/JoinTroop.php b/hwe/sammo/API/Troop/JoinTroop.php index ee2b1491..e628a4e5 100644 --- a/hwe/sammo/API/Troop/JoinTroop.php +++ b/hwe/sammo/API/Troop/JoinTroop.php @@ -6,6 +6,9 @@ use sammo\Session; use DateTimeInterface; use sammo\DB; use sammo\Enums\APIRecoveryType; +use sammo\Enums\GeneralLiteQueryMode; +use sammo\GeneralLite; +use sammo\StaticEventHandler; use sammo\StringUtil; use sammo\Validator; @@ -32,16 +35,22 @@ class JoinTroop extends \sammo\BaseAPI public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag): null | string | array | APIRecoveryType { - $userID = $session->userID; + $generalID = $session->generalID; $troopID = $this->args['troopID']; $db = DB::db(); - $me = $db->queryFirstRow('SELECT `no`,nation,`troop`,`officer_level`,permission,penalty FROM general WHERE `owner`=%i', $userID); - if ($me['troop'] != 0) { + + $me = GeneralLite::createObjFromDB($generalID, ['troop'], GeneralLiteQueryMode::Lite); + if(!$me){ + return '장수 정보를 불러올 수 없습니다.'; + } + + if($me->getVar('troop') != 0){ return '이미 부대에 소속되어 있습니다.'; } - $nationID = $me['nation']; - if ($nationID == 0) { + + $nationID = $me->getNationID(); + if($nationID == 0){ return '국가에 소속되어 있지 않습니다.'; } @@ -49,11 +58,10 @@ class JoinTroop extends \sammo\BaseAPI if (!$troopExists) { return '부대가 올바르지 않습니다.'; } - $generalID = $me['no']; - $db->update('general', [ - 'troop' => $troopID, - ], '`no` = %i AND `troop` = %i', $generalID, 0); + $me->setVar('troop', $troopID); + StaticEventHandler::handleEvent($me, null, $this::class, [], $this->args); + $me->applyDB($db); return null; } diff --git a/hwe/sammo/API/Troop/KickFromTroop.php b/hwe/sammo/API/Troop/KickFromTroop.php index 6e62924f..b6973809 100644 --- a/hwe/sammo/API/Troop/KickFromTroop.php +++ b/hwe/sammo/API/Troop/KickFromTroop.php @@ -6,6 +6,9 @@ use sammo\Session; use DateTimeInterface; use sammo\DB; use sammo\Enums\APIRecoveryType; +use sammo\Enums\GeneralLiteQueryMode; +use sammo\GeneralLite; +use sammo\StaticEventHandler; use sammo\Validator; class KickFromTroop extends \sammo\BaseAPI @@ -37,7 +40,8 @@ class KickFromTroop extends \sammo\BaseAPI $generalID = $this->args['generalID']; $db = DB::db(); - $troopID = $db->queryFirstField('SELECT troop FROM general WHERE no = %i', $generalID); + $destGeneral = GeneralLite::createObjFromDB($generalID, ['troop'], GeneralLiteQueryMode::Lite); + $troopID = $destGeneral->getVar('troop'); if($troopID == 0){ return '부대에 소속되어 있지 않습니다.'; } @@ -50,9 +54,10 @@ class KickFromTroop extends \sammo\BaseAPI return '부대장을 추방할 수 없습니다.'; } - $db->update('general', [ - 'troop' => 0, - ], '`no` = %i AND `troop` = %i', $generalID, $troopID); + StaticEventHandler::handleEvent($destGeneral, null, $this::class, [], $this->args); + $destGeneral->setVar('troop', 0); + $destGeneral->applyDB($db); + return null; } } diff --git a/hwe/sammo/API/Troop/NewTroop.php b/hwe/sammo/API/Troop/NewTroop.php index c9815490..44ecc9ba 100644 --- a/hwe/sammo/API/Troop/NewTroop.php +++ b/hwe/sammo/API/Troop/NewTroop.php @@ -6,6 +6,9 @@ use sammo\Session; use DateTimeInterface; use sammo\DB; use sammo\Enums\APIRecoveryType; +use sammo\Enums\GeneralLiteQueryMode; +use sammo\GeneralLite; +use sammo\StaticEventHandler; use sammo\StringUtil; use sammo\Validator; @@ -32,24 +35,23 @@ class NewTroop extends \sammo\BaseAPI public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag): null | string | array | APIRecoveryType { - $userID = $session->userID; + $generalID = $session->generalID; $troopName = StringUtil::neutralize($this->args['troopName']); if(!$troopName){ return '부대 이름이 없습니다.'; } $db = DB::db(); - $me = $db->queryFirstRow('SELECT `no`,nation,`troop`,`officer_level`,permission,penalty FROM general WHERE `owner`=%i', $userID); - if($me['troop'] != 0){ + $me = GeneralLite::createObjFromDB($generalID, ['troop'], GeneralLiteQueryMode::Lite); + $troopID = $me->getVar('troop'); + if($troopID != 0){ return '이미 부대에 소속되어 있습니다.'; } - $nationID = $me['nation']; + $nationID = $me->getNationID(); if($nationID == 0){ return '국가에 소속되어 있지 않습니다.'; } - $generalID = $me['no']; - $db->insert('troop', [ 'name'=>$troopName, 'troop_leader'=>$generalID, @@ -60,9 +62,9 @@ class NewTroop extends \sammo\BaseAPI return '부대가 생성되지 않았습니다. 버그일 수 있습니다.'; } - $db->update('general', [ - 'troop'=>$generalID - ], '`no` = %i', $generalID); + $me->setVar('troop', $generalID); + StaticEventHandler::handleEvent($me, null, $this::class, [], $this->args); + $me->applyDB($db); return null; } diff --git a/hwe/sammo/API/Troop/SetTroopName.php b/hwe/sammo/API/Troop/SetTroopName.php index 6e848b09..b9b0b528 100644 --- a/hwe/sammo/API/Troop/SetTroopName.php +++ b/hwe/sammo/API/Troop/SetTroopName.php @@ -6,6 +6,9 @@ use sammo\Session; use DateTimeInterface; use sammo\DB; use sammo\Enums\APIRecoveryType; +use sammo\Enums\GeneralLiteQueryMode; +use sammo\GeneralLite; +use sammo\StaticEventHandler; use sammo\StringUtil; use sammo\Validator; @@ -36,10 +39,10 @@ class SetTroopName extends \sammo\BaseAPI public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag): null | string | array | APIRecoveryType { - $userID = $session->userID; + $generalID = $session->generalID; $db = DB::db(); - $me = $db->queryFirstRow('SELECT `no`,nation,`officer_level`,permission,penalty FROM general WHERE `owner`=%i', $userID); - $permission = checkSecretPermission($me, false); + $me = GeneralLite::createObjFromDB($generalID, ['troop', 'permission', 'penalty'], GeneralLiteQueryMode::Lite); + $permission = checkSecretPermission($me->getRaw(), false); $troopID = $this->args['troopID']; $generalID = $me['no']; @@ -60,6 +63,7 @@ class SetTroopName extends \sammo\BaseAPI if($db->affectedRows() == 0){ return '부대가 없습니다.'; } + StaticEventHandler::handleEvent($me, null, $this::class, [], $this->args); return null; }