This commit is contained in:
aozhiwei 2021-12-06 19:54:33 +08:00
parent e6c120a2e7
commit 6f03291543
4 changed files with 129 additions and 5 deletions

View File

@ -28,9 +28,9 @@ class Bag(object):
_common.ReqHead(),
['item_id', 0, '道具id'],
['item_num', 0, '道具数量'],
['param1', 0, '参数1(当使用的是改名卡时param1=新的角色名)'],
['param2', 0, '参数2(当使用的是改名卡时param2=签名)'],
['param3', 0, '参数3'],
['param1', '', '参数1(当使用的是改名卡时param1=新的角色名)'],
['param2', '', '参数2(当使用的是改名卡时param2=签名)'],
['param3', '', '参数3'],
],
'response': [
_common.RspHead(),

View File

@ -5,6 +5,8 @@ require_once('mt/Item.php');
require_once('models/Bag.php');
require_once('services/NameService.php');
use phpcommon\SqlHelper;
use models\Bag;
@ -25,14 +27,83 @@ class BagController extends BaseAuthedController {
);
$this->_rspData(array(
'item_list' => $itemList,
#'time' => date('Y-m-d H:i:s', -662716800),
#'datetime' => strtotime('1949-01-01 00:00:00')
));
}
public function useItem()
{
$itemId = getReqVal('item_id', 0);
$itemNum = getReqVal('item_num', 0);
$param1 = getReqVal('param1', '');
$param2 = getReqVal('param2', '');
$param3 = getReqVal('param3', '');
if ($itemNum < 0) {
$this->_rspErr(1, 'item_num必须大于0');
return;
}
$itemDb = Bag::find($itemId);
if (isset($itemDb) || $itemDb['item_num'] <= 0) {
$this->_rspErr(1, '道具不足');
return;
}
$itemMeta = mt\Item::get($itemId);
if (!$itemMeta) {
$this->_rspErr(2, '配置表错误');
return;
}
if ($itemMeta['type'] != mt\Item::FUNC_TYPE) {
$this->_rspErr(3, '该道具为不可使用道具');
return;
}
switch ($itemMeta['sub_type']) {
case mt\Item::FUNC_RENAME_CARD_SUBTYPE:
{
$this->renameCard($itemDb, $itemMeta, $itemNum, $param1, $param2, $param3);
}
break;
default:
{
$this->_rspErr(4, '该道具功能暂未实现');
return;
}
break;
}
}
private function renameCard($itemDb, $itemMeta, $itemNum, $param1, $param2, $param3)
{
if (mb_strlen($param1) < 3) {
$this->_rspErr(5, '参数错误名字长度不得小于3');
return;
}
if (mb_strlen($param1) > 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' => $name
));
$this->_decItems(array(
array(
'item_id' => $itemMeta['id'],
'item_num' => 1
)
));
}
}

View File

@ -70,6 +70,8 @@ class Item {
const FUNC_TYPE = 9;
const MATERIAL_TYPE = 10;
const FUNC_RENAME_CARD_SUBTYPE = 1;
const DAILY_BUY_LIMIT = 1;
const WEEKLY_BUY_LIMIT = 2;
const TOTAL_BUY_LIMIT = 3;

View File

@ -0,0 +1,51 @@
<?php
namespace services;
use phpcommon\SqlHelper;
use mt;
use models\User;
class NameService extends BaseService {
public function verifyNameSign($name, $nameSign)
{
list($time, $rnd, $md5) = explode('_', $nameSign);
return md5($name . $time . $rnd . "sllpqzirwnm5q0kj8qvoxlqhxc3nhn7a") == $md5;
}
public function nameUsed($name)
{
$nameBase64 = base64_encode($name);
$conn = myself()->_getMysql($name);
$row = SqlHelper::ormSelectOne
($conn,
't_used_name',
array(
'name_base64' => $nameBase64,
'key' => '2005'
)
);
return !empty($row);
}
public function useName($name)
{
$nameBase64 = base64_encode($name);
$conn = myself()->_getMysql($name);
SqlHelper::insert
($conn,
't_used_name',
array(
'name' => $name,
'name_base64' => $nameBase64,
'key' => '2005',
'account_id' => myself()->_getAccountId(),
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
return true;
}
}