1
This commit is contained in:
parent
ad15d40c27
commit
3d55d8bd5d
74
webapp/controller/PassController.class.php
Normal file
74
webapp/controller/PassController.class.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
require 'classes/Quest.php';
|
||||
require 'classes/AddReward.php';
|
||||
|
||||
class PayController{
|
||||
|
||||
protected function getMysql($account_id)
|
||||
{
|
||||
$mysql_conf = getMysqlConfig(crc32($account_id));
|
||||
$conn = new phpcommon\Mysql(array(
|
||||
'host' => $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;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
402
webapp/controller/PayController.class.php
Normal file
402
webapp/controller/PayController.class.php
Normal file
@ -0,0 +1,402 @@
|
||||
<?php
|
||||
|
||||
require 'classes/Quest.php';
|
||||
require 'classes/AddReward.php';
|
||||
|
||||
class PayController{
|
||||
|
||||
protected function getMysql($account_id)
|
||||
{
|
||||
$mysql_conf = getMysqlConfig(crc32($account_id));
|
||||
$conn = new phpcommon\Mysql(array(
|
||||
'host' => $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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user