From 3d55d8bd5d528af7294a719982c5d934b37c4431 Mon Sep 17 00:00:00 2001 From: wangwei01 Date: Wed, 21 Aug 2019 14:38:10 +0800 Subject: [PATCH] 1 --- webapp/controller/PassController.class.php | 74 ++++ webapp/controller/PayController.class.php | 402 +++++++++++++++++++++ 2 files changed, 476 insertions(+) create mode 100644 webapp/controller/PassController.class.php create mode 100644 webapp/controller/PayController.class.php diff --git a/webapp/controller/PassController.class.php b/webapp/controller/PassController.class.php new file mode 100644 index 0000000..d004211 --- /dev/null +++ b/webapp/controller/PassController.class.php @@ -0,0 +1,74 @@ + $mysql_conf['host'], + 'port' => $mysql_conf['port'], + 'user' => $mysql_conf['user'], + 'passwd' => $mysql_conf['passwd'], + 'dbname' => 'gamedb2001_' . $mysql_conf['instance_id'] + )); + return $conn; + } + + protected function getExplode($string) + { + $delim = "|"; + $drop_multiply = explode($delim, $string); + $delim1 = ":"; + $arr = array(); + for ($i = 0; $i < count($drop_multiply); $i++) { + $mul = explode($delim1, $drop_multiply[$i]); + array_push($arr, $mul); + } + return $arr; + } + + protected function getSeason($season_id) + { + $season_meta_table = require('../res/season@season.php'); + $season_meta = getSeasonConfig($season_meta_table, $season_id); + $season = array( + 'number' => $season_meta['season_number'], + 'open_time' => $season_meta['time1'], + 'end_time' => $season_meta['time2'], + ); + return $season; + } + + protected function getSeasonReward($seaReward_id) + { + $seaReward_meta_table = require('../res/seasonReward@seasonReward.php'); + $seaReward_meta = getSeasonRewardConfig($seaReward_meta_table, $seaReward_id); + $seaReward = array( + 'id' => $seaReward_meta['id'], + 'point' => $seaReward_meta['point'], + 'active' => $seaReward_meta['reward1'], + 'honor' => $seaReward_meta['reward2'], + 'season' => $seaReward_meta['reward3'] + ); + return $seaReward; + } + + protected function getSeasonPoint($seaPoint_id) + { + $seaPoint_meta_table = require('../res/seasomPoint@seasomPoint.php'); + $seaPoint_meta = getSeasonPointConfig($seaPoint_meta_table, $seaPoint_id); + $seaPoint = array( + 'id' => $seaPoint_meta['id'], + 'min' => $seaPoint_meta['min_point'], + 'max' => $seaPoint_meta['max_point'], + 'des' => $seaPoint_meta['des'], + ); + return $seaPoint; + } + +} +?> diff --git a/webapp/controller/PayController.class.php b/webapp/controller/PayController.class.php new file mode 100644 index 0000000..fc17df5 --- /dev/null +++ b/webapp/controller/PayController.class.php @@ -0,0 +1,402 @@ + $mysql_conf['host'], + 'port' => $mysql_conf['port'], + 'user' => $mysql_conf['user'], + 'passwd' => $mysql_conf['passwd'], + 'dbname' => 'gamedb2001_' . $mysql_conf['instance_id'] + )); + return $conn; + } + + protected function getItem($item_id) + { + $item_meta_table = require('../res/item@item.php'); + $item_meta = getItemConfig($item_meta_table, $item_id); + $item = array( + 'id' => $item_meta['id'], + 'name' => $item_meta['name'], + 'price' => $item_meta['price'], + 'icon' => $item_meta['icon'], + 'fuction' => $item_meta['fuction'], + 'fuctionindex' => $item_meta['fuctionindex'], + ); + return $item; + } + + protected function getVip($vip_id) + { + $vip_meta_table = require('../res/vip@vip.php'); + $vip_meta = getVipConfig($vip_meta_table, $vip_id); + $vip = array( + 'level' => $vip_meta['level'], + 'require' => $vip_meta['require'], + 'reward' => $vip_meta['reward'], + 'dailyreward' => $vip_meta['dailyreward'], + 'vipicon' => $vip_meta['vipicon'] + ); + return $vip; + } + + protected function getDiamondShop($diamond_id) + { + $diamond_meta_table = require('../res/diamondshop@diamondshop.php'); + $diamond_meta = getDiamondShopConfig($diamond_meta_table, $diamond_id); + $diamond = array( + 'shop_id' => $diamond_meta['shop_id'], + 'shop_type' => $diamond_meta['shop_type'], + 'item_id' => $diamond_meta['item_id'], + 'coin_type' => $diamond_meta['coin_type'], + 'coin_num' => $diamond_meta['coin_num'], + 'open_time' => $diamond_meta['open_time'], + 'continue_time' => $diamond_meta['continute_time'], + 'limit_num' => $diamond_meta['limit_num'], + 'limit_type' => $diamond_meta['limit_type'], + 'sort' => $diamond_meta['sort'], + ); + return $diamond; + } + + + protected function getDrop($drop_id) + { + $drop_meta_table = require('../res/drop@drop.php'); + $drop_meta = getDropConfig($drop_meta_table, $drop_id); + $d = array( + 'drop_id' => $drop_meta['drop_id'], + 'item_id' => $drop_meta['item_id'], + 'num' => $drop_meta['num'], + 'weight' => $drop_meta['weight'], + 'type' => $drop_meta['type'] + ); + return $d; + } + + protected function getExplode($string) + { + $delim = "|"; + $drop_multiply = explode($delim, $string); + $delim1 = ":"; + $arr = array(); + for ($i = 0; $i < count($drop_multiply); $i++) { + $mul = explode($delim1, $drop_multiply[$i]); + array_push($arr, $mul); + } + return $arr; + } + + + public function getPayInfo() + { + $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; + } + $times = 0; + $info_list = array(); + $diamond_meta_table = require('../res/diamondshop@diamondshop.php'); + for ($i = 1; $i <= count($diamond_meta_table); $i++) { + $diamond = $this->getDiamondShop($i); + $item = $this->getItem($diamond['item_id']); + if (!$item || !$diamond) { + continue; + } + $row = $conn->execQueryOne('SELECT today_times FROM buy_his ' . + ' WHERE accountid=:accountid AND itemid=:itemid;', + array( + ':accountid' => $account_id, + ':itemid' => $diamond['item_id'] + )); + if ($diamond['limit_num'] == -1) { + $times = $diamond['limit_num']; + } else { + if (!$row) { + $times = $diamond['limit_num']; + } else { + $times = $diamond['limit_num'] - $row['today_times']; + } + } + $sub_item = array(); + $coin_icon = ''; + $open_time = '-1'; + $end_time = '-1'; + if ($diamond['coin_type'] != 0) { + $sub_item = $this->getItem($diamond['coin_type']); + $coin_icon = $sub_item['icon']; + } + if ($diamond['open_time'] != '-1') { + $open_time = strtotime($diamond['open_time']); + $end_time = strtotime($diamond['open_time']) + $diamond['continue_time']; + } + array_push($info_list, array( + 'shop_type' => $diamond['shop_type'], + 'item_id' => $diamond['item_id'], + 'item_icon' => $item['icon'], + 'coin_type' => $diamond['coin_type'], + 'coin_num' => $diamond['coin_num'], + 'coin_icon' => $coin_icon, + 'open_time' => $open_time, + 'end_time' => $end_time, + 'buy_num' => $times, + 'sort' => $diamond['sort'] + )); + } + echo json_encode(array( + 'errcode' => 0, + 'errmsg'=> '', + 'info_list' => $info_list + )); + } + + public function getVipInfo() + { + $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; + } + $row = $conn->execQueryOne('SELECT sum_coin FROM user WHERE accountid=:accountid;', + array( + ':accountid' => $account_id, + )); + if (!$row) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + $vip_list = array(); + $vip_level = 0; + $vip_icon = ''; + $vip_item_list = array(); + $vip_today_item_list = array(); + $vip_meta_table = require('../res/vip@vip.php'); + for ($i = 0; $i < count($vip_meta_table); $i++) { + $vip_status = 0; + $vip_today_status = 0; + $vip = $this->getVip($i); + if ($row['sum_coin'] >= $vip['require']) { + $vip_level = $vip['level']; + $vip_icon = $vip['vipicon']; + } + $rowVip = $conn->execQueryOne('SELECT reward_id, reward_status, today_reward_id, today_reward_status ' . + ' FROM vipinfo WHERE accountid=:accountid AND vipid=:vipid;', + array( + ':accountid' => $account_id, + ':vipid' => $vip['level'] + )); + if ($rowVip) { + $vip_status = $rowVip['reward_status']; + $vip_today_status = $rowVip['today_reward_status']; + } + $vip_item_list = $this->getVipItemInfo($vip['reward']); + $vip_today_item_list = $this->getVipItemInfo($vip['dailyreward']); + array_push($vip_list, array( + 'vip_id' => $vip['level'], + 'require' => $vip['require'], + 'vip_status' => $vip_status, + 'vip_item_list' => $vip_item_list, + 'vip_today_status' => $vip_today_status, + 'vip_today_item_list' => $vip_today_item_list, + )); + } + $v = $this->getVip($vip_level + 1); + $sum = $v['require']; + $coin_num = $sum - $row['sum_coin']; + echo json_encode(array( + 'errcode' => 0, + 'errmsg'=> '', + 'vip_level' => $vip_level, + 'vip_icon' => $vip_icon, + 'coin_num' => $coin_num, + 'sum' => $sum, + 'vip_list' => $vip_list + )); + } + + protected function getVipItemInfo($id) + { + $item = $this->getItem($id); + if (!$item) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个道具'); + die(); + } + $d = $this->getDrop($item['fuctionindex']); + if (!$d) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个道具'); + die(); + } + $item_list = array(); + $item_id_array = $this->getExplode($d['item_id']); + $weight_sum = 0; + $keys = 0; + $item_num_array = $this->getExplode($d['num']); + $weight_array = $this->getExplode($d['weight']); + for ($i = 0; $i < count($weight_array); $i++) { + $random = Rand(0, 10000); + if ($weight_array[$i][0] > $random) { + $item_id = $item_id_array[$i][0]; + $item_num = $item_num_array[$i][0]; + array_push($item_list, array( + 'item_id' => $item_id, + 'item_num' => $item_num, + )); + } + } + return $item_list; + } + + public function getVipReward() + { + $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; + } + $vip_id = $_REQUEST['vip_id']; + $type = $_REQUEST['reward_type']; + $status = 0; + $vip = $this->getVip($vip_id); + if (!$vip) { + phpcommon\sendError(ERR_USER_BASE + 3, '没有这个奖励'); + return; + } + $rowVip = $conn->execQueryOne('SELECT reward_status, today_reward_status ' . + ' FROM vipinfo WHERE accountid=:accountid AND vipid=:vipid;', + array( + ':accountid' => $account_id, + ':vipid' => $vip['level'] + )); + if ($rowVip) { + if ($type == 1) { + $status = $rowVip['today_reward_status']; + } + if ($type == 2) { + $status = $rowVip['reward_status']; + } + if ($status == 1) { + phpcommon\sendError(ERR_USER_BASE + 2, '该奖励已领取'); + return; + } + } + $row = $conn->execQueryOne('SELECT sum_coin FROM user WHERE accountid=:accountid;', + array( + ':accountid' => $account_id, + )); + if (!$row) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + + if ($vip['require'] > $row['sum_coin']) { + phpcommon\sendError(ERR_USER_BASE + 4, '没有达到vip要求'); + return; + } + + if (!$rowVip) { + $ret = $conn->execScript('INSERT INTO vipinfo(accountid, vipid, reward_id, reward_status, today_reward_id, today_reward_status, create_time, modify_time) ' . + ' VALUES(:accountid, :vipid, :reward_id, 0, :today_reward_id, 0, :create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:accountid, vipid=0, reward_id=0, reward_status=0, today_reward_id=0, today_reward_status=0, modify_time=:modify_time;', + array( + ':accountid' => $account_id, + ':vipid' => $vip['level'], + ':reward_id' => $vip['reward'], + ':today_reward_id' => $vip['dailyreward'], + ':create_time' => time(), + ':modify_time' => time() + )); + if (!$ret) { + die(); + return; + } + } + $this->updateStatus($account_id, $vip_id, $type); + //发送奖励 + $item_list = array(); + if ($type == 1) { + $item_list = $this->getVipItemInfo($vip['reward']); + } + if ($type == 2) { + $item_list = $this->getVipItemInfo($vip['dailyreward']); + } + foreach ($item_list as $item) { + //增加奖励 + $addreward = new classes\AddReward(); + $addreward->addReward($item['item_id'], $item['item_num'], $account_id); + } + echo json_encode(array( + 'errcode' => 0, + 'errmsg'=> '', + )); + } + + protected function updateStatus($accountid, $vipid, $type) + { + $conn = $this->getMysql($accountid); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + $vip = $this->getVip($vipid); + if (!$vip) { + phpcommon\sendError(ERR_USER_BASE + 3, '没有这个奖励'); + return; + } + if ($type == 1) { + $ret = $conn->execScript('UPDATE vipinfo SET today_reward_status=1, modify_time=:modify_time ' . + ' WHERE accountid=:accountid AND vipid=:vipid;', + array( + ':accountid' => $accountid, + ':vipid' => $vipid, + ':modify_time' => time() + )); + if (!$ret) { + die(); + return; + } + } + if ($type == 2) { + $ret = $conn->execScript('UPDATE vipinfo SET reward_status=1, modify_time=:modify_time ' . + ' WHERE accountid=:accountid AND vipid=:vipid;', + array( + ':accountid' => $accountid, + ':vipid' => $vipid, + ':modify_time' => time() + )); + if (!$ret) { + die(); + return; + } + } + } +} +?>