This commit is contained in:
aozhiwei 2024-04-19 20:05:27 +08:00
parent 98da41b2eb
commit c44384542b
3 changed files with 59 additions and 0 deletions

View File

@ -8,6 +8,7 @@ define('PLANET_BUY_KEY', 'game2006api:planet_buy:');
define('LAST_SESSION_KEY', 'last_session:');
define('MATCH_CURRENT_TEAM_KEY', 'match:current_team:');
define('MATCH_OK_KEY', 'match:ok:');
define('DEC_BATTLE_TICKET', 'battle_ticket:');
define('V_ITEM_GOLD', 10001); //金币
define('V_ITEM_GOLDS', 10017); //金堆

View File

@ -593,6 +593,10 @@ class BattleController extends BaseAuthedController {
myself()->_rspErr(2, 'map mode error');
return;
}
if (!$this->checkTicket($customData, $mapModeMeta)) {
myself()->_rspErr(2, 'map mode error');
return;
}
$currSeason = mt\RankSeason::getCurrentSeason();
foreach ($customData['team_list'] as $team) {
@ -679,6 +683,7 @@ class BattleController extends BaseAuthedController {
array_push($data['team_list'], $teamInfo);
}
error_log(json_encode($data));
$this->decTicket($customData, $mapModeMeta);
myself()->_rspData($data);
}
@ -991,4 +996,40 @@ class BattleController extends BaseAuthedController {
return $info;
}
private function checkTicket($customData, $mapModeMeta)
{
if (empty($mapModeMeta['admission_item_id'])) {
return true;
}
foreach ($customData['team_list'] as $team) {
foreach ($team['members'] as $member) {
if (!$member['is_android']) {
$itemDb = Bag::findEx($member['account_id'], $mapModeMeta['admission_item_id']);
if (empty($itemDb) || $itemDb['item_num'] <= 0) {
return false;
}
}
}
}
return true;
}
private function decTicket($customData, $mapModeMeta)
{
$itemId = $mapModeMeta['admission_item_id'];
if (empty($itemId)) {
return;
}
foreach ($customData['team_list'] as $team) {
foreach ($team['members'] as $member) {
if (!$member['is_android']) {
$itemDb = Bag::findEx($member['account_id'], $itemId);
if (!empty($itemDb) || $itemDb['item_num'] > 0) {
Bag::decItemByUnIidEx($member['account_id'], $itemDb['idx'], 1);
}
}
}
}
}
}

View File

@ -299,5 +299,22 @@ class Bag extends BaseModel {
);
}
public static function decItemByUnIidEx($accountId, $itemUniId, $itemNum)
{
SqlHelper::update(
myself()->_getMysql($accountId),
't_bag',
array(
'account_id' => myself()->_getAccountId(),
'idx' => $itemUniId,
),
array(
'item_num' => function () use($itemNum) {
return "GREATEST(0, item_num - ${itemNum})";
},
'modifytime' => myself()->_getNowTime(),
)
);
}
}