$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; } } } public function buyItem() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $itemid = $_REQUEST['itemid']; $itemnum = $_REQUEST['itemnum']; $itemid = 16002; $itemnum = 1; $item_meta_table = require('../res/item@item.php'); $item_meta = getItemConfig($item_meta_table, $itemid); if (!$item_meta || $item_meta['rmbprice'] < 0.001) { phpcommon\sendError(ERR_USER_BASE + 2, '参数错误'); die(); } $params = array( 'account_id' => $_REQUEST['account_id'], 'itemid' => $itemid, 'itemnum' => 1, 'price' => SERVER_ENV != _ONLINE ? 0.01 : (float)$item_meta['rmbprice'] ); $timestamp = time(); $params['sign'] = phpcommon\md5Sign($params, '06ba97e28ea905b0b7ed5477746b07f1', $timestamp); $params['timestamp'] = $timestamp; $iv = '1dd2f605f4f8496b'; $key = 'c868a478c81ff3c168b35d703f787d3c'; $str_encoded = '2001_' . base64_encode(phpcommon\aesEncrypt(json_encode($params), $iv, $key)); echo json_encode(array( 'errcode' => 0, 'errmsg'=> '', 'data' => $str_encoded )); } public function getOrderInfo() { if (!loginVerify($_REQUEST['account_id'], $_REQUEST['session_id'])) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $conn = $this->getMysql($_REQUEST['account_id']); $row = $conn->execQueryOne('SELECT orderid, status FROM orderinfo WHERE orderid=:orderid;', array( ':orderid' => $_REQUEST['orderid'] )); if (!$row || $row['status'] == 0) { echo json_encode(array( 'errcode' => 0, 'errmsg'=> '', 'order_state' => 1, )); die(); } echo json_encode(array( 'errcode' => 0, 'errmsg'=> '', 'order_state' => 0, 'buy_itemid' => 0, 'buy_itemnum' => 0, 'item_list' => array( array( 'itemid' => 10001, 'itemnum' => 1000, ), array( 'itemid' => 10003, 'itemnum' => 1000, ), ) )); } } ?>