From 6b7002e0f96c5a7be2e9d93d5a99612c39ec2d2e Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 13 Feb 2025 14:42:17 +0800 Subject: [PATCH] fix --- webapp/controller/BagController.class.php | 227 +++++++++++++--------- 1 file changed, 134 insertions(+), 93 deletions(-) diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index 67032ca..7858703 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -3,7 +3,8 @@ require 'classes/Quest.php'; require 'classes/AddReward.php'; -class BagController{ +class BagController +{ protected function getMysql($account_id) { @@ -71,23 +72,27 @@ class BagController{ return; } $bag_list = array(); - $rows = $conn->execQuery('SELECT * FROM bag WHERE accountid=:account_id;', - array( - ':account_id' => $account_id - )); + $rows = $conn->execQuery( + 'SELECT * FROM bag WHERE accountid=:account_id;', + array( + ':account_id' => $account_id + ) + ); if ($rows) { - foreach ($rows as $row){ + foreach ($rows as $row) { $active_time = 0; $color_id = 0; $status = $row['status']; if (time() >= $row['active_time'] && $row['active_time'] != 0) { - $ret = $conn->execScript('UPDATE bag SET active_time=0, color_id=0, status=2, modify_time=:modify_time ' . - ' WHERE accountid=:account_id AND id=:id;', - array( - ':account_id' => $account_id, - ':id' => $row['id'], - ':modify_time' => time() - )); + $ret = $conn->execScript( + 'UPDATE bag SET active_time=0, color_id=0, status=2, modify_time=:modify_time ' . + ' WHERE accountid=:account_id AND id=:id;', + array( + ':account_id' => $account_id, + ':id' => $row['id'], + ':modify_time' => time() + ) + ); if (!$ret) { die(); return; @@ -118,7 +123,8 @@ class BagController{ )); } - public function exchangeBagItem() { + public function exchangeBagItem() + { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); @@ -129,12 +135,18 @@ class BagController{ $item_id = $_REQUEST['item_id']; $color_id = $_REQUEST['color_id']; $conn = $this->getMysql($account_id); - if(!$conn){ + if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $b = $this->getBag($item_id); $bag_meta_table = require('../res/bag@bag.php'); + $rsp = array( + 'errcode' => 0, + 'errmsg' => '', + 'item_id' => $item_id, + 'color_id' => $color_id + ); //正在装备的道具 if ($b['fuction'] != 5 && $b['fuction'] != 6) { foreach ($bag_meta_table as $bag_info) { @@ -146,11 +158,13 @@ class BagController{ if ($bag['fuction'] != $b['fuction']) { continue; } - $row = $conn->execQueryOne('SELECT status, active_time FROM bag WHERE accountid=:accountid AND id=:id;', - array( - ':accountid' => $account_id, - ':id' => $id, - )); + $row = $conn->execQueryOne( + 'SELECT status, active_time, color_id FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $account_id, + ':id' => $id, + ) + ); if (!$row || $row['status'] != 0) { continue; } @@ -158,50 +172,68 @@ class BagController{ if ($row['active_time'] == 0 || $row['active_time'] > time()) { $status = 1; } - $using_ret = $conn->execScript('UPDATE bag SET status=:status, color_id=0, modify_time=:modify_time ' . - ' WHERE accountid = :account_id AND id = :id;', - array( - ':account_id' => $account_id, - ':id' => $id, - ':status' => $status, - ':modify_time' => time() - )); - if(!$using_ret){ + $altercolor = false; + $colorid = 0; + if ($id == $item_id) { + $altercolor = true; + //仅改变颜色 + if ($color_id == $row['color_id']) { + echo json_encode($rsp); + return; + } + $status = 0; + $colorid = $color_id; + } + $using_ret = $conn->execScript( + 'UPDATE bag SET status=:status, color_id=:colorid, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $account_id, + ':id' => $id, + ':status' => $status, + ':colorid' => $colorid, + ':modify_time' => time() + ) + ); + if (!$using_ret) { die(); return; } + if ($altercolor) { + echo json_encode($rsp); + return; + } } } //要装备的道具 - $row = $conn->execQueryOne('SELECT status FROM bag WHERE accountid=:accountid AND id=:id;', - array( - ':accountid' => $account_id, - ':id' => $item_id, - )); + $row = $conn->execQueryOne( + 'SELECT status FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $account_id, + ':id' => $item_id, + ) + ); if (!$row || $row['status'] != 1 || ($row['active_time'] > 0 && $row['active_time'] < time())) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个道具'); return; } - $exchange_ret = $conn->execScript('UPDATE bag SET status=0, color_id=:color_id, modify_time=:modify_time ' . - ' WHERE accountid = :account_id AND id = :id;', - array( - ':account_id' => $account_id, - ':id' => $item_id, - ':color_id' => $color_id, - ':modify_time' => time() - )); - if(!$exchange_ret){ + $exchange_ret = $conn->execScript( + 'UPDATE bag SET status=0, color_id=:color_id, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $account_id, + ':id' => $item_id, + ':color_id' => $color_id, + ':modify_time' => time() + ) + ); + if (!$exchange_ret) { die(); return; } - echo json_encode(array( - 'errcode' => 0, - 'errmsg' => '', - 'item_id' => $item_id, - 'color_id' => $color_id - )); + echo json_encode($rsp); } public function downItem() @@ -215,17 +247,19 @@ class BagController{ } $item_id = $_REQUEST['item_id']; $conn = $this->getMysql($account_id); - if(!$conn){ + if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $b = $this->getBag($item_id); - $row = $conn->execQueryOne('SELECT status,active_time FROM bag WHERE accountid=:accountid AND id=:id;', - array( - ':accountid' => $account_id, - ':id' => $item_id, - )); + $row = $conn->execQueryOne( + 'SELECT status,active_time FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $account_id, + ':id' => $item_id, + ) + ); if (!$row || $row['status'] != 0) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个道具'); return; @@ -234,15 +268,17 @@ class BagController{ if ($row['active_time'] == 0 || $row['active_time'] > time()) { $status = 1; } - $exchange_ret = $conn->execScript('UPDATE bag SET status=:status, color_id=0, modify_time=:modify_time ' . - ' WHERE accountid = :account_id AND id = :id;', - array( - ':account_id' => $account_id, - ':id' => $item_id, - ':status' => $status, - ':modify_time' => time() - )); - if(!$exchange_ret){ + $exchange_ret = $conn->execScript( + 'UPDATE bag SET status=:status, color_id=0, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $account_id, + ':id' => $item_id, + ':status' => $status, + ':modify_time' => time() + ) + ); + if (!$exchange_ret) { die(); return; } @@ -255,7 +291,7 @@ class BagController{ )); } - public function downItemColor() + public function downItemColor() { $account_id = $_REQUEST['account_id']; //登录校验 @@ -266,19 +302,21 @@ class BagController{ } $item_id = $_REQUEST['item_id']; $conn = $this->getMysql($account_id); - if(!$conn){ + if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } - $exchange_ret = $conn->execScript('UPDATE bag SET color_id=0, modify_time=:modify_time ' . - ' WHERE accountid = :account_id AND id = :id;', - array( - ':account_id' => $account_id, - ':id' => $item_id, - ':modify_time' => time() - )); - if(!$exchange_ret){ + $exchange_ret = $conn->execScript( + 'UPDATE bag SET color_id=0, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $account_id, + ':id' => $item_id, + ':modify_time' => time() + ) + ); + if (!$exchange_ret) { die(); return; } @@ -302,7 +340,7 @@ class BagController{ } $item_id = $_REQUEST['item_id']; $conn = $this->getMysql($account_id); - if(!$conn){ + if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } @@ -348,7 +386,7 @@ class BagController{ 'time' => 1, )); $items = $addreward->addReward($i, 1, $account_id, $time, 1); - foreach($items as $it) { + foreach ($items as $it) { array_push($all_item_list, array( 'item_id' => $it['item_id'], 'item_num' => $it['item_num'], @@ -376,17 +414,19 @@ class BagController{ return; } $conn = $this->getMysql($account_id); - if(!$conn){ + if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $arr = json_decode($_REQUEST['arr'], true); foreach ($arr as $a) { - $row = $conn->execQueryOne('SELECT status FROM bag WHERE accountid=:account_id AND id=:id;', - array( - ':account_id' => $account_id, - ':id' => $a['id'] - )); + $row = $conn->execQueryOne( + 'SELECT status FROM bag WHERE accountid=:account_id AND id=:id;', + array( + ':account_id' => $account_id, + ':id' => $a['id'] + ) + ); if (!$row) { continue; } @@ -394,16 +434,18 @@ class BagController{ if ($a['count'] == 0) { $status = 2; } - $ret = $conn->execScript('UPDATE bag SET status=:status, num=:num, modify_time=:modify_time ' . - ' WHERE accountid = :account_id AND id = :id;', - array( - ':account_id' => $account_id, - ':id' => $a['id'], - ':status' => $status, - ':num' => $a['count'], - ':modify_time' => time() - )); - if(!$ret){ + $ret = $conn->execScript( + 'UPDATE bag SET status=:status, num=:num, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $account_id, + ':id' => $a['id'], + ':status' => $status, + ':num' => $a['count'], + ':modify_time' => time() + ) + ); + if (!$ret) { die(); return; } @@ -414,4 +456,3 @@ class BagController{ )); } } -?>