diff --git a/hwe/b_troop.php b/hwe/b_troop.php index 6cd8c10e..5260b3ac 100644 --- a/hwe/b_troop.php +++ b/hwe/b_troop.php @@ -12,7 +12,8 @@ $db = DB::db(); increaseRefresh("부대편성", 1); -$me = $db->queryFirstRow('SELECT no,nation,troop FROM general WHERE owner=%i', $userID); +$me = $db->queryFirstRow('SELECT no,nation,troop,`officer_level`,permission,penalty FROM general WHERE owner=%i', $userID); +$permission = checkSecretPermission($me, false); $troops = []; foreach ($db->query('SELECT troop_leader,name FROM troop WHERE nation = %i', $me['nation']) as $rawTroop) { @@ -204,17 +205,37 @@ uasort($troops, function ($lhs, $rhs) {
- - - - - - - - - - -
부 대 명
+
+ +
+
+
부대명
+
+
+
+
+ + +
+
+
부대명
+
+
+
+
+
+
+ +
+ diff --git a/hwe/j_troop.php b/hwe/j_troop.php index 90152801..007912ba 100644 --- a/hwe/j_troop.php +++ b/hwe/j_troop.php @@ -53,32 +53,6 @@ if($action == '부대창설'){ ]); } -if($action == '부대변경'){ - $name = StringUtil::neutralize($name); - if(!$name){ - Json::die([ - 'result'=>false, - 'reason'=>'부대 이름이 없습니다.' - ]); - } - - $db->update('troop', [ - 'name'=>$name - ], 'troop_leader=%i',$generalID); - - if($db->affectedRows() == 0){ - Json::die([ - 'result'=>false, - 'reason'=>'부대장이 아닙니다.' - ]); - } - - Json::die([ - 'result'=>true, - 'reason'=>'success' - ]); -} - if($action == '부대추방'){ if (!$gen){ Json::die([ diff --git a/hwe/sammo/API/Nation/SetTroopName.php b/hwe/sammo/API/Nation/SetTroopName.php new file mode 100644 index 00000000..b8689d6f --- /dev/null +++ b/hwe/sammo/API/Nation/SetTroopName.php @@ -0,0 +1,65 @@ +args); + $v->rule('required', [ + 'troopID', + 'troopName', + ]) + ->rule('stringWidthBetween', 'troopName', 1, 18) + ->rule('integer', 'troopID'); + + if (!$v->validate()) { + return $v->errorStr(); + } + return null; + } + + public function getRequiredSessionMode(): int + { + return static::REQ_GAME_LOGIN | static::REQ_READ_ONLY; + } + + public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag) + { + $userID = $session->userID; + $db = DB::db(); + $me = $db->queryFirstRow('SELECT `no`,nation,`officer_level`,permission,penalty FROM general WHERE `owner`=%i', $userID); + $permission = checkSecretPermission($me, false); + $troopID = $this->args['troopID']; + + $generalID = $me['no']; + if($generalID != $troopID && $permission < 4){ + return "권한이 부족합니다."; + } + + $troopName = StringUtil::neutralize($this->args['troopName']); + if(!$troopName){ + return '부대 이름이 없습니다.'; + } + + $nationID = $me['nation']; + $db->update('troop', [ + 'name'=>$troopName + ], 'troop_leader=%i AND `nation`=%i',$troopID, $nationID); + + if($db->affectedRows() == 0){ + return '부대가 없습니다.'; + } + + return null; + } +} diff --git a/hwe/ts/SammoAPI.ts b/hwe/ts/SammoAPI.ts index 95d7a654..b09d2ea5 100644 --- a/hwe/ts/SammoAPI.ts +++ b/hwe/ts/SammoAPI.ts @@ -226,6 +226,10 @@ const apiRealPath = { }, GetGeneralLogResponse >, + SetTroopName: PATCH as APICallT<{ + troopID: number; + troopName: string; + }>, }, Vote: { AddComment: POST as APICallT<{ diff --git a/hwe/ts/troop.ts b/hwe/ts/troop.ts index 2ccd6f54..74542a32 100644 --- a/hwe/ts/troop.ts +++ b/hwe/ts/troop.ts @@ -3,6 +3,8 @@ import "@scss/troop.scss"; import { errUnknown } from "@/common_legacy"; import { launchTroopPlugin } from "@/extPluginTroop"; import jQuery from "jquery"; +import { SammoAPI } from "./SammoAPI"; +import { isString } from "lodash"; jQuery(function($){ //btnJoinTroop, btnLeaveTroop, btnKickTroop, btnCreateTroop, btnChangeTroopName @@ -35,7 +37,7 @@ jQuery(function($){ dataType:'json', data:{ action:'부대창설', - name:$('#nameplate').val() + name:$('#newTroopName').val() } }).then(function(data){ console.log(data); @@ -50,24 +52,24 @@ jQuery(function($){ return false; }); - $('#btnChangeTroopName').click(function(){ - $.post({ - url:'j_troop.php', - dataType:'json', - data:{ - action:'부대변경', - name:$('#nameplate').val() - } - }).then(function(data){ - console.log(data); - if(!data.result){ - alert(data.reason); - location.reload(); - } - + $('#btnChangeTroopName').on('click', async ()=>{ + try{ + await SammoAPI.Nation.SetTroopName({ + troopID: parseInt($('#changeNameTroopID').val() as string), + troopName: $('#changeTroopName').val() as string, + }); location.reload(); - - }, errUnknown); + } + catch(e){ + console.error(e); + if(isString(e)){ + alert(e); + } + else{ + errUnknown(); + } + location.reload(); + } return false; });