From 84798f3b319df1ce57c84a53b84ee951ddcd23fd Mon Sep 17 00:00:00 2001 From: wangwei01 Date: Wed, 19 Jun 2019 15:59:25 +0800 Subject: [PATCH] 1 --- sql/gamedb.sql | 6 +-- webapp/controller/EquipController.class.php | 54 +++++++++++---------- webapp/controller/RoleController.class.php | 6 +-- webapp/controller/SignController.class.php | 41 ++++++---------- webapp/controller/SkinController.class.php | 47 ++++++++---------- webapp/controller/TeamController.class.php | 10 ++-- 6 files changed, 77 insertions(+), 87 deletions(-) diff --git a/sql/gamedb.sql b/sql/gamedb.sql index a1f0870..ab5bb13 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -73,11 +73,11 @@ CREATE TABLE `skin` ( `idx` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id', `accountid` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', `skin_id` int(11) NOT NULL COMMENT '皮肤id', - `skin_status` int(11) NOT NULL COMMENT '皮肤状态', + `skin_status` int(11) NOT NULL COMMENT '皮肤状态(0:上阵中,1:已获得)', `fragment_id` int(11) NOT NULL COMMENT '碎片id', `fragment_num` int(11) NOT NULL COMMENT '碎片数量', - `active_time` varchar(50) NOT NULL DEFAULT '有效时间', - `fragment_status` int(11) NOT NULL COMMENT '碎片收集状态', + `active_time` varchar(50) NOT NULL DEFAULT '有效时间(体验时间)', + `fragment_status` int(11) NOT NULL COMMENT '碎片收集状态(活动相关)', `skin_type` int(11) NOT NULL COMMENT '皮肤类型', `skin_level` int(11) NOT NULL COMMENT '皮肤等级', `skin_experience_level` int(11) NOT NULL COMMENT '皮肤体验等级', diff --git a/webapp/controller/EquipController.class.php b/webapp/controller/EquipController.class.php index 955bbe6..4948499 100644 --- a/webapp/controller/EquipController.class.php +++ b/webapp/controller/EquipController.class.php @@ -25,12 +25,11 @@ class EquipController{ 'equip_id' => $equip_conf['id'], 'equip_name' => $equip_conf['name'], 'equip_type' => $equip_conf['equip_page'], - 'equip_level' => $equip_conf['level'], - 'equip_nextlevel' => $equip_conf['next_level'], + 'cost_int' => $equip_conf['cost_int'], + 'max_lv' => $equip_conf['max_lv'], 'equip_cost' => $equip_conf['cost'], 'equip_attr_type' => $equip_conf['attr_type'], - 'equip_attr_value' => $equip_conf['attr_value'], - ); + ); return $e; } @@ -46,23 +45,31 @@ class EquipController{ return $p; } - protected function subCoin($account_id, $equip_id) + protected function subCoin($account_id, $equip_id, $equip_level, $free) { $e = $this->getEquip($equip_id); if (!$e) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个装备'); die(); } + if ($e['max_lv'] <= $equip_level) { + phpcommon\sendError(ERR_USER_BASE + 4, '装备已到满级'); + die(); + } $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } + $coin_num = $e['equip_cost'] * $equip_level + $e['cost_int']; + if ($free == 1) { + $coin_num = 0; + } $rowCoin = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;', array( ':accountid' => $account_id )); - if ($rowCoin['coin_num'] < $e['equip_cost']) { + if ($rowCoin['coin_num'] < $coin_num) { phpcommon\sendError(ERR_USER_BASE + 3, '金币不足'); die(); } @@ -70,7 +77,7 @@ class EquipController{ ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, - ':coin_num' => $rowCoin['coin_num'] - $e['equip_cost'], + ':coin_num' => $rowCoin['coin_num'] - $coin_num, ':modify_time' => time() )); if (!$ret) { @@ -94,7 +101,7 @@ class EquipController{ phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } - $rowCount = $conn->execQueryRowCount('SELECT * FROM equip WHERE accountid = :account_id;', + $rowCount = $conn->execQueryRowCount('SELECT * FROM equip WHERE accountid=:account_id;', array( ':account_id' => $account_id )); @@ -160,8 +167,7 @@ class EquipController{ return; } $equip_id = $_REQUEST['equip_id']; - $coin_num = $_REQUEST['coin_num']; - $equip_level = $_REQUEST['equip_level']; + $free = $_REQUEST['free']; $row = $conn->execQueryOne('SELECT * FROM equip WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, @@ -169,14 +175,14 @@ class EquipController{ )); if (!$row) { - $e = $this->subCoin($account_id, $equip_id . '-' . 1); + $e = $this->subCoin($account_id, $equip_id, 1, $free); $ret = $conn->execScript('INSERT INTO equip(accountid, equip_id, equip_level, equip_experience_level, active_time, create_time, modify_time) ' . - ' VALUES(:accountid, :equip_id, :equip_level, :equip_experience_level, :active_time, :create_time, modify_time) ' . + ' VALUES(:accountid, :equip_id, :equip_level, :equip_experience_level, :active_time, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, equip_id=:equip_id, equip_level=:equip_level, equip_experience_level=:equip_experience_level, active_time=:active_time, modify_time=:modify_time;', array( ':accountid' => $account_id, ':equip_id' => $equip_id, - ':equip_level' => $e['equip_nextlevel'], + ':equip_level' => 2, ':equip_experience_level' => 0, ':active_time' => 0, ':create_time' => time(), @@ -187,17 +193,13 @@ class EquipController{ return; } } else { - if ($row['equip_level'] >= 9) { - phpcommon\sendError(ERR_USER_BASE + 4, '装备已到满级'); - return; - } - $e = $this->subCoin($account_id, $equip_id . '-' . $row['equip_level']); + $e = $this->subCoin($account_id, $equip_id, $row['equip_level'], $free); $ret = $conn->execScript('UPDATE equip SET equip_level=:equip_level, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id, - ':equip_level' => $e['equip_nextlevel'], + ':equip_level' => $row['equip_level'] + 1, ':modify_time' => time() )); if (!$ret) { @@ -207,7 +209,7 @@ class EquipController{ } $quest = new classes\Quest(); $quest->triggerQuest(QUEST_DAY_UPDATEEQUIP, 1, 1, $account_id); - if ($e['equip_nextlevel'] == 9) { + if ($row['equip_level'] + 1 >= $e['max_lv']) { $quest->triggerQuest(QUEST_SUM_EQUIPMAX, 2, 1, $account_id); } echo json_encode(array( @@ -233,7 +235,7 @@ class EquipController{ phpcommon\sendError(ERR_USER_BASE + 1, '没有这个角色'); return; } - $e = $this->getEquip($equip_id . '-' . $equip_level); + $e = $this->getEquip($equip_id); if (!$e) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个装备'); return; @@ -247,27 +249,29 @@ class EquipController{ )); if (!$row) { $ret = $conn->execScript('INSERT INTO equip(accountid, equip_id, equip_level, equip_experience_level, active_time, create_time, modify_time) ' . - ' VALUES(:accountid, :equip_id, 1, 9, :active_time, :create_time, :modify_time) ' . + ' VALUES(:accountid, :equip_id, 1, :equip_experience_level, :active_time, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, equip_id=:equip_id, equip_level=1, equip_experience_level=9, active_time=:active_time, modify_time=:modify_time;', array( ':accountid' => $account_id, ':equip_id' => $equip_id, ':active_time' => time() + $time, ':create_time' => time(), - ':modify_time' => time() + ':modify_time' => time(), + ':equip_experience_level' => $e['max_lv'] )); if (!$ret) { die(); return; } } else { - $ret = $conn->execScript('UPDATE equip SET active_time=:active_time, equip_experience_level=9, modify_time=:modify_time ' . + $ret = $conn->execScript('UPDATE equip SET active_time=:active_time, equip_experience_level=:equip_experience_level, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id, ':active_time' => time() + $time, - ':modify_time' => time() + ':modify_time' => time(), + ':equip_experience_level' => $e['max_lv'] )); if (!$ret) { die(); diff --git a/webapp/controller/RoleController.class.php b/webapp/controller/RoleController.class.php index b962a3d..cb710cc 100644 --- a/webapp/controller/RoleController.class.php +++ b/webapp/controller/RoleController.class.php @@ -87,9 +87,9 @@ class RoleController{ ':accountid' => $account_id )); if (!$row) { - $ret = $conn->execScript('INSERT INTO user(accountid, user_name, avatar_url, rank, game_times, win_times, kills, harm, add_HP, alive_time, coin_num, integral, kill_his, alive_time_his, harm_his, add_HP_his, act_share_time, act_share_status, create_time, modify_time) ' . - ' VALUES(:accountid, :user_name, :avatar_url, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, create_time, :modify_time) ' . - ' ON DUPLICATE KEY UPDATE accountid=:accountid, user_name=:user_name, avatar_url=:avatar_url, rank=0, game_times=0, win_times=0, kills=0, harm=0, add_HP=0, alive_time=0, coin_num=0, integral=0, kill_his=0, alive_time_his=0, harm_his=0, add_HP_his=0, act_share_time=0, act_share_status=0, modify_time=:modify_time;', + $ret = $conn->execScript('INSERT INTO user(accountid, user_name, avatar_url, game_times, win_times, kills, harm, add_HP, alive_time, coin_num, integral, kill_his, alive_time_his, harm_his, add_HP_his, act_share_time, act_share_status, create_time, modify_time) ' . + ' VALUES(:accountid, :user_name, :avatar_url, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:accountid, user_name=:user_name, avatar_url=:avatar_url, game_times=0, win_times=0, kills=0, harm=0, add_HP=0, alive_time=0, coin_num=0, integral=0, kill_his=0, alive_time_his=0, harm_his=0, add_HP_his=0, act_share_time=0, act_share_status=0, modify_time=:modify_time;', array( ':accountid' => $account_id, ':user_name' => $user_name, diff --git a/webapp/controller/SignController.class.php b/webapp/controller/SignController.class.php index 15fdd7b..5febd3d 100644 --- a/webapp/controller/SignController.class.php +++ b/webapp/controller/SignController.class.php @@ -83,15 +83,15 @@ class SignController{ } $conn = $this->getMysql($account_id); $sign_days = 0; - $signable = 0; + $signable = 1; if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $row1 = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;', - array( - ':accountid' => $account_id - )); + array( + ':accountid' => $account_id + )); $row = $conn->execQueryOne('SELECT * FROM sign WHERE accountid=:accountid;', array( @@ -104,14 +104,13 @@ class SignController{ $start_time = $array[0][0] * 3600 + $array[0][1] * 60 + $nowTime; $end_time = $array[1][0] * 3600 + $array[1][1] * 60 + $nowTime; if (!$row) { - $ret = $conn->execScript('INSERT INTO sign(accountid, sign_days, signable, sign_time, create_time, modify_time) ' . - ' VALUES(:accountid, :sign_days, :signable, :sign_time, :create_time, :modify_time) ' . - ' ON DUPLICATE KEY UPDATE accountid=:accountid, sign_days=:sign_days, signable=:signable, sign_time=:sign_time, modify_time=:modify_time;', + $ret = $conn->execScript('INSERT INTO sign(accountid, sign_days, sign_time, create_time, modify_time) ' . + ' VALUES(:accountid, :sign_days, :sign_time, :create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:accountid, sign_days=:sign_days, sign_time=:sign_time, modify_time=:modify_time;', array( ':accountid' => $account_id, - ':sign_days' => 1, - ':signable' => 0, - ':sign_time' => time(), + ':sign_days' => 0, + ':sign_time' => 0, ':create_time' => time(), ':modify_time' => time() )); @@ -120,6 +119,7 @@ class SignController{ return; } $sign_days = 1; + $signable = 0; $quest = new classes\Quest(); $quest->triggerQuest(QUEST_DAY_LOGIN, 1, 1, $account_id); $quest->triggerQuest(QUEST_SUM_LOGIN, 2, 1, $account_id); @@ -130,19 +130,7 @@ class SignController{ if ($nowTime - phpcommon\getdayseconds($row['sign_time']) > 0) { $sign_days = $row['sign_days'] + 1; $signable = 0; - $ret = $conn->execScript('UPDATE sign SET sign_days=:sign_days, sign_time=:sign_time, signable=:signable, modify_time=:modify_time ' . - ' WHERE accountid=:accountid;', - array( - ':accountid' => $account_id, - ':sign_days' => $sign_days, - ':signable' => $signable, - ':sign_time' => time(), - ':modify_time' => time() - )); - if (!$ret) { - die(); - return; - } + //刷新每日任务和活动任务 $rowCount = $conn->execQueryRowCount('SELECT * FROM quest WHERE accountid=:accountid;', array( @@ -192,7 +180,7 @@ class SignController{ } } else { $sign_days = $row['sign_days']; - $signable = $row['signable']; + $signable = 1; if (time() >= $start_time && time() < $end_time) { $quest = new classes\Quest(); $quest->triggerQuest(QUEST_ACTIVITY_LOGIN, 3, 1, $account_id); @@ -251,15 +239,16 @@ class SignController{ array( ':accountid' => $account_id )); - if (!$row || $row['signable'] == 1) { + if (!$row || phpcommon\getdayseconds(time()) - phpcommon\getdayseconds($row['sign_time']) <= 0) { phpcommon\sendError(ERR_USER_BASE + 2, '今日已签到'); return; } - $ret = $conn->execScript('UPDATE sign SET sign_time=:sign_time, signable=1, modify_time=:modify_time ' . + $ret = $conn->execScript('UPDATE sign SET sign_time=:sign_time, sign_days=:sign_days, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, + ':sign_days' => $row['sign_days'] + 1, ':sign_time' => time(), ':modify_time' => time() )); diff --git a/webapp/controller/SkinController.class.php b/webapp/controller/SkinController.class.php index 6f930ac..835c5da 100644 --- a/webapp/controller/SkinController.class.php +++ b/webapp/controller/SkinController.class.php @@ -25,29 +25,17 @@ class SkinController{ 'skin_skillid' => $skin_conf['skill_id'], 'skin_compose' => $skin_conf['compose'], 'skin_experience' => $skin_conf['is_experience'], - 'skin_price' => $skin_conf['price'], 'skin_type' => $skin_conf['type'], - 'duration' => $skin_conf['duration'] + 'duration' => $skin_conf['duration'], + 'debris_id' => $skin_conf['debris'], + 'cost' => $skin_conf['cost'], + 'cost_int' => $skin_conf['cost_int'], + 'max_lv' => $skin_conf['max_lv'], ); return $s; } - protected function getDressUpgrade($skin_id) - { - $g_conf_skin_cluster = require('../res/dressUpgrade@dressUpgrade.php'); - $skin_conf = getDressUpgradeConfig($g_conf_skin_cluster, $skin_id); - $d = array( - 'id' => $skin_conf['id'], - 'name' => $skin_conf['name'], - 'level' => $skin_conf['level'], - 'next_level' => $skin_conf['next_level'], - 'debris_id' => $skin_conf['debris'], - 'debris_num' => $skin_conf['debris_number'], - ); - return $d; - } - - protected function getExplode($string) + protected function getExplode($string) { $delim = "|"; $drop_multiply = explode($delim, $string); @@ -162,7 +150,7 @@ class SkinController{ ':account_id' => $account_id, ':skin_id' => $i, ':skin_status' => $skin_status, - ':fragment_id' => $i - 1000, + ':fragment_id' => $s['debris_id'], ':skin_type' => $s['skin_type'], ':create_time' => time(), ':modify_time' => time() @@ -194,12 +182,13 @@ class SkinController{ )); $skin_id = 0; foreach ($rowsSkin as $rowSkin) { + $s = $this->getSkin($rowSkin['skin_id']); if ($skin_id == $rowSkin['skin_id']) { continue; } $skin_id = $rowSkin['skin_id']; if ($rowSkin['active_time'] != 0 && $rowSkin['skin_experience_type'] == 2) { - $skin_level = 9; + $skin_level = $s['max_lv']; } else { $skin_level = $rowSkin['skin_level']; } @@ -390,7 +379,7 @@ class SkinController{ $time = $s['duration']; } if ($row['skin_status'] <= 1) { - $ex_level = 9; + $ex_level = $s['max_lv']; $p = $this->getParameter(SKIN_SKILL_TIME); $time = $p['param_value']; $ex_type = 2; @@ -435,7 +424,7 @@ class SkinController{ return; } $skin_id = $_REQUEST['skin_id']; - + $free = $_REQUEST['free']; $row = $conn->execQueryOne('SELECT * FROM skin WHERE accountid=:account_id AND skin_id=:skin_id;', array( ':account_id' => $account_id, @@ -445,16 +434,20 @@ class SkinController{ phpcommon\sendError(ERR_USER_BASE + 1, '皮肤不存在'); return; } - $d = $this->getDressUpgrade($skin_id . '-' . $row['skin_level']); - if (!$d) { + $s = $this->getSkin($skin_id); + if (!$s) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个皮肤'); return; } - if ($d['next_level'] == 0) { + if ($row['skin_level'] >= $s['max_lv']) { phpcommon\sendError(ERR_USER_BASE + 3, '皮肤已到满级'); return; } - if ($d['debris_num'] > $row['fragment_num']) { + $debris_num = $s['cost'] * $row['skin_level'] + $s['cost_int']; + if ($free == 1) { + $debris_num = 0; + } + if ($debris_num > $row['fragment_num']) { phpcommon\sendError(ERR_USER_BASE + 4, '皮肤碎片数量不足'); return; } @@ -464,7 +457,7 @@ class SkinController{ ':account_id' => $account_id, ':skin_id' => $skin_id, ':skin_level' => $d['next_level'], - ':fragment_num' => $row['fragment_num'] - $d['debris_num'], + ':fragment_num' => $row['fragment_num'] - $debris_num, ':modify_time' => time() )); if (!$ret) { diff --git a/webapp/controller/TeamController.class.php b/webapp/controller/TeamController.class.php index 2cb649b..2daae7b 100644 --- a/webapp/controller/TeamController.class.php +++ b/webapp/controller/TeamController.class.php @@ -1,7 +1,7 @@ $team_uuid, @@ -38,7 +38,7 @@ class teamController{ $r = $this->getRedis($team_uuid); $r -> set(TEAMID_KEY . $team_uuid, json_encode($team_db)); - $r -> pexpire(TEAMID_KEY . $team_uuid, 1000 * 3600); + $r -> pexpire(TEAMID_KEY . $team_uuid, 1000 * 600); echo json_encode (array( 'errcode' => 0, @@ -221,6 +221,9 @@ class teamController{ } $r->set(TEAMID_KEY . $team_uuid, json_encode($user_db)); + if (count($user_db['member_list']) == 0) { + $r->del(TEAMID_KEY . $team_uuid, json_encode($user_db)); + } } echo json_encode(array( 'errcode' => 0, @@ -293,6 +296,7 @@ class teamController{ } $user_db['state'] = $_REQUEST['state']; $r->set(TEAMID_KEY . $team_uuid, json_encode($user_db)); + $r->pexpire(TEAMID_KEY . $team_uuid, 10 * 1000); } echo json_encode(array( 'errcode' => 0,