diff --git a/doc/_common.py b/doc/_common.py index a9aceea4..413d7f2e 100644 --- a/doc/_common.py +++ b/doc/_common.py @@ -235,6 +235,8 @@ class SeasonCard(object): def __init__(self): self.fields = [ ['season_id', 0, '赛季id(客户端显示为Sxxx)'], + ['season_begin_time', 0, '赛季开始时间(utc时间)'], + ['season_end_time', 0, '赛季结束时间(utc时间)'], ['card_lv', 0, '手册等级'], ['card_exp', 0, '手册经验'], ['card_max_exp', 0, '手册经验上限'], diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index 86080cf6..8f40e7f2 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -27,19 +27,8 @@ class BagController extends BaseAuthedController { public function itemList() { - $itemList = array(); - SqlHelper::ormSelect( - $this->_getSelfMysql(), - 't_bag', - array( - 'account_id' => $this->_getAccountId() - ), - function ($row) use(&$itemList) { - array_push($itemList, Bag::toDto($row)); - } - ); $this->_rspData(array( - 'item_list' => $itemList, + 'item_list' => Bag::all(), )); } @@ -84,33 +73,58 @@ class BagController extends BaseAuthedController { } } + public function rename() + { + $itemDto = Bag::findByType(mt\Item::FUNC_TYPE, mt\Item::FUNC_RENAME_CARD_SUBTYPE); + $userInfo = $this->_getOrmUserInfo(); + if (!$itemDto || $itemDto['item_num'] < 0) { + if (mt\Parameter::getVal('rename_diamond_cost', 0) <= 0) { + $this->_rspErr(1, '配置表错误'); + return; + } + if ($userInfo['diamond'] < mt\Parameter::getVal('rename_diamond_cost', 0)) { + $this->_rspErr(1, '道具不足'); + return; + } + } + $errCode = 0; + $errMsg = ''; + $this->internalRename(getReqVal('name', ''), getReqVal('name_sign', ''), $errCode, $errMsg); + if ($errCode) { + $this->_rspErr($errCode, $errMsg); + return; + } + if (!$itemDto || $itemDto['item_num'] <= 0) { + $this->_decItems(array( + array( + 'item_id' => V_ITEM_DIAMOND, + 'item_num' => mt\Parameter::getVal('rename_diamond_cost', 0) + ) + )); + $this->propertyChgService->addUserChg(); + } else { + $this->_decItems(array( + array( + 'item_id' => $itemDto['item_id'], + 'item_num' => 1 + ) + )); + $this->propertyChgService->addBagChg(); + } + $this->_rspData(array( + 'property_chg' => $this->propertyChgService->toDto(), + )); + } + private function renameCard($itemDb, $itemMeta, $itemNum, $param1, $param2, $param3) { - if (mb_strlen($param1) < 3) { - $this->_rspErr(5, '参数错误名字长度不得小于3'); + $errCode = 0; + $errMsg = ''; + $this->internalRename($param1, $param2, $errCode, $errMsg); + if ($errCode) { + $this->_rspErr($errCode, $errMsg); return; } - if (mb_strlen($param1, 'utf8') > 7) { - $this->_rspErr(5, '参数错误名字长度不得大于7'); - return; - } - $nameService = new services\NameService(); - if (!$nameService->verifyNameSign($param1, $param2)){ - $this->_rspErr(5, '参数错误名,签名校验失败'); - return; - } - if ($nameService->nameUsed($param1)){ - $this->_rspErr(6, '名字已被占用'); - return; - } - $ret = $nameService->useName($param1); - if (!$ret) { - $this->_rspErr(10, '服务器内部错误'); - return; - } - $this->_updateUserInfo(array( - 'name' => $param1 - )); $this->_decItems(array( array( 'item_id' => $itemMeta['id'], @@ -124,4 +138,40 @@ class BagController extends BaseAuthedController { )); } + private function internalRename($name, $nameSign, &$errCode, &$errMsg) + { + $errCode = 0; + $errMsg = ''; + if (mb_strlen($name) < 3) { + $errCode = 5; + $errMsg = '参数错误名字长度不得小于3'; + return; + } + if (mb_strlen($name, 'utf8') > 7) { + $errCode = 5; + $errMsg = '参数错误名字长度不得大于7'; + return; + } + $nameService = new services\NameService(); + if (!$nameService->verifyNameSign($name, $nameSign)){ + $errCode = 5; + $errMsg = '参数错误名,签名校验失败'; + return; + } + if ($nameService->nameUsed($name)){ + $errCode = 5; + $errMsg = '名字已被占用'; + return; + } + $ret = $nameService->useName($name); + if (!$ret) { + $errCode = 10; + $errMsg = '服务器内部错误'; + return; + } + $this->_updateUserInfo(array( + 'name' => $name + )); + } + } diff --git a/webapp/models/Bag.php b/webapp/models/Bag.php index e57fe56f..5dd321a1 100644 --- a/webapp/models/Bag.php +++ b/webapp/models/Bag.php @@ -22,6 +22,25 @@ class Bag extends BaseModel { return $row; } + public static function findByType($type, $subType = null) + { + foreach (self::all() as $itemDto) { + if ($itemDto['item_num'] > 0) { + $itemMeta = mt\Item::get($itemDto['item_id']); + if ($itemMeta['type'] == $type) { + if (is_null($subType)) { + return $itemDto; + } else { + if ($itemMeta['sub_type'] == $subType) { + return $itemDto; + } + } + } + } + } + return null; + } + public static function toDto($row) { return array( @@ -30,6 +49,22 @@ class Bag extends BaseModel { ); } + public static function all() + { + $itemList = array(); + SqlHelper::ormSelect( + myself()->_getSelfMysql(), + 't_bag', + array( + 'account_id' => myself()->_getAccountId() + ), + function ($row) use(&$itemList) { + array_push($itemList, Bag::toDto($row)); + } + ); + return $itemList; + } + public static function getItemCount($itemId) { $itemDb = self::find($itemId);