From 110ac608831d63e99684fc63557dc665d3513f9a Mon Sep 17 00:00:00 2001 From: yangduo Date: Tue, 8 Apr 2025 18:02:11 +0800 Subject: [PATCH] adjust medal cost --- webapp/controller/SoloController.class.php | 96 +++++++++++++++++++++- 1 file changed, 93 insertions(+), 3 deletions(-) diff --git a/webapp/controller/SoloController.class.php b/webapp/controller/SoloController.class.php index 995c9b5..a078519 100644 --- a/webapp/controller/SoloController.class.php +++ b/webapp/controller/SoloController.class.php @@ -322,6 +322,75 @@ class SoloController )); } + // consume medals + public function consume() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $conn = $this->getMysql($account_id); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + + $key = 'game2004api-cost-medals:' . $account_id; + $r = $this->getRedis($key); + if (!$r) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 1'); + return; + } + + + $level = $_REQUEST['level']; + $reqlevelcfg = $this->getGameLevelInfo($level); + if (!$reqlevelcfg) { + phpcommon\sendError(ERR_USER_BASE + 1, '体力不足'); + return; + } + + $solorow = $conn->execQueryOne( + 'SELECT medals FROM solo WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + ) + ); + + $medalcost = $reqlevelcfg['medal_cost']; + if ($medalcost > $solorow['medals']) { + phpcommon\sendError(ERR_USER_BASE + 1, '体力不足 1'); + return; + } + + $ret = $conn->execScript( + 'UPDATE solo SET medals=:medals, modify_time=:modify_time' . + ' WHERE accountid=:accountid;', + array( + ':accountid' => $account_id, + ':medals' => $solorow['medals'] - $medalcost, + ':modify_time' => time() + ) + ); + + if (!$ret) { + phpcommon\sendError(ERR_RETRY + 1, '系统繁忙'); + return; + } + + $infoobj = array( + 'level' => $level, + ); + + $infostr = json_encode($infoobj); + $r->set($key, $infostr); + $r->pexpire($key, 1000 * 86400); + error_log($key . ':' . $infostr); + } + // 战斗结算 public function settle() { @@ -344,7 +413,7 @@ class SoloController phpcommon\sendError(ERR_USER_BASE + 1, '奖励不存在'); return; } - + $infostr = $r->get($key); if (empty($infostr)) { phpcommon\sendError(ERR_USER_BASE + 1, '奖励不存在 1'); @@ -772,7 +841,28 @@ class SoloController } $medalcost = $reqlevelcfg['medal_cost']; - if ($medalcost > $solorow['medals']) { + if ($isbattle) { + $key = 'game2004api-cost-medals:' . $account_id; + $r = $this->getRedis($key); + if (!$r) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 1'); + return; + } + + $infostr = $r->get($key); + if (empty($infostr)) { + phpcommon\sendError(ERR_USER_BASE + 1, '奖励不存在 1'); + return; + } + + $infoobj = json_decode($infostr, true); + if ($infoobj['level'] != $level) { + phpcommon\sendError(ERR_USER_BASE + 1, '奖励不存在 2'); + return; + } + + $r->del($key); + } else if ($medalcost > $solorow['medals']) { phpcommon\sendError(ERR_USER_BASE + 2, '体力不足'); return; } @@ -874,7 +964,7 @@ class SoloController } } - $curmedals = $solorow['medals'] - $medalcost; + $curmedals = $isbattle ? $solorow['medals'] : ($solorow['medals'] - $medalcost); $lastredeem = $solorow['lastredeem']; $privilege = new classes\Privilege(); $medalsgrowlimit = intval(metatable\getParameterById(MEDAL_LIMIT)['param_value']) + $privilege->getMedalLimitPlus($account_id);