solo api
This commit is contained in:
parent
b2fd2a24d3
commit
fdc7b7f814
@ -443,4 +443,21 @@ CREATE TABLE `code_his` (
|
||||
UNIQUE KEY `idx_account_id_code_type` (`account_id`,`code_type`),
|
||||
KEY `idx_code` (`code`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
|
||||
CREATE TABLE `solo` (
|
||||
`idx` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||
`accountid` varchar(60) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '账号id',
|
||||
`level` int(11) NOT NULL DEFAULT '0' COMMENT '等级',
|
||||
`exp` int(11) NOT NULL DEFAULT '0' COMMENT '当前经验值',
|
||||
`medals` int(11) NOT NULL DEFAULT '0' COMMENT '体力值',
|
||||
`lastredeem` int(11) NOT NULL DEFAULT '0' COMMENT '上次自然恢复体力时间戳',
|
||||
`lastoffline` int(11) NOT NULL DEFAULT '0' COMMENT '上次计算离线收益时间戳',
|
||||
`offline` int(11) NOT NULL DEFAULT '0' COMMENT '已计算离线时长(小时)',
|
||||
`gamelevel` mediumblob NOT NULL COMMENT '关卡信息',
|
||||
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||
`modify_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||
PRIMARY KEY (`idx`),
|
||||
UNIQUE KEY `accountid` (`accountid`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
-- Dump completed on 2015-08-19 18:51:22
|
||||
|
@ -102,6 +102,9 @@ define('OPENING_SPEAR', 154); //新玩家奖励第一把武器
|
||||
define('OPENING_SPEAR2', 178); //新玩家奖励第二把武器
|
||||
define('LOTTERY_COST', 187); //每日抽奖钻石消耗
|
||||
define('DIAMONDLOTTERY_TIME', 188); //每日消耗钻石抽奖次数
|
||||
define('MEDAL_LIMIT', 189); //体力自然增长上限
|
||||
define('MEDAL_SECONDS', 190); //自然增长一点体力耗时,单位秒
|
||||
define('OFFLINE_LIMIT', 191); //离线时长上限,单位小时
|
||||
|
||||
require 'config_loader.php';
|
||||
|
||||
|
@ -4,7 +4,8 @@ namespace classes;
|
||||
|
||||
use phpcommon;
|
||||
|
||||
class AddReward {
|
||||
class AddReward
|
||||
{
|
||||
protected function getMysql($account_id)
|
||||
{
|
||||
$mysql_conf = getMysqlConfig(crc32($account_id));
|
||||
@ -92,15 +93,15 @@ class AddReward {
|
||||
|
||||
foreach ($item_list as $item) {
|
||||
$i = $this->getItem($item['item_id']);
|
||||
if ($i['type'] == 1){
|
||||
if ($i['type'] == 1) {
|
||||
$this->addCoin($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 2) {
|
||||
$this->addDiamond($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 8){
|
||||
} else if ($i['type'] == 8) {
|
||||
$this->addticket($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 9){
|
||||
} else if ($i['type'] == 9) {
|
||||
$this->addtenticket($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 10 || $i['type'] == 11){
|
||||
} else if ($i['type'] == 10 || $i['type'] == 11) {
|
||||
$this->addweizhuang($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 12) {
|
||||
$item_list = $this->addEquip($item['item_id'], $account_id);
|
||||
@ -108,15 +109,28 @@ class AddReward {
|
||||
$this->addSpoilsItem($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 17) {
|
||||
$this->addAdfree($item['item_id'], $item['item_num'], $account_id);
|
||||
} else if ($i['type'] == 18) {
|
||||
$this->addMedal($item['item_id'], $item['item_num'], $account_id);
|
||||
} else {
|
||||
$priceid = 10003;
|
||||
$price = $i['diamond'];
|
||||
if ($time != 0) {
|
||||
$price = $i['diamond_hour'] * $time;
|
||||
}
|
||||
|
||||
if ($price == 0) {
|
||||
$strs = explode($i['piece'], ':');
|
||||
if (count($strs) > 1) {
|
||||
$priceid = intval($strs[0]);
|
||||
$price = intval($strs[1]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($t) {
|
||||
$item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price, $t);
|
||||
itemid:
|
||||
$item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $priceid, $price, $t);
|
||||
} else {
|
||||
$item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price, 0);
|
||||
$item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $priceid, $price, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -130,34 +144,40 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT num FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $id
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT num FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $id
|
||||
)
|
||||
);
|
||||
if (!$row && $id != 0) {
|
||||
$ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, 1, :num, 0, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=1, num=:num, active_time=0, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $id,
|
||||
':num' => $num,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
));
|
||||
if(!$ret){
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, 1, :num, 0, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=1, num=:num, active_time=0, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $id,
|
||||
':num' => $num,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
} else {
|
||||
$ret = $conn->execScript('UPDATE bag SET num=:num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $id,
|
||||
':num' => $row['num'] + $num,
|
||||
':modify_time' => time()
|
||||
));
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE bag SET num=:num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $id,
|
||||
':num' => $row['num'] + $num,
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -171,10 +191,12 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT coin_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT coin_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
return $row['coin_num'];
|
||||
}
|
||||
|
||||
@ -185,10 +207,12 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT diamond_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT diamond_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
return $row['diamond_num'];
|
||||
}
|
||||
|
||||
@ -199,13 +223,30 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT adfree FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT adfree FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
return $row ? $row['adfree'] : 0;
|
||||
}
|
||||
|
||||
public function getMedals($accountid) {
|
||||
$conn = $this->getMysql($accountid);
|
||||
if (!$conn) {
|
||||
return 0;
|
||||
}
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT medals FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
|
||||
return $row ? $row['medals'] : 0;
|
||||
}
|
||||
|
||||
//添加钻石
|
||||
protected function addDiamond($item_id, $item_num, $accountid)
|
||||
{
|
||||
@ -214,17 +255,21 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT diamond_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$ret = $conn->execScript('UPDATE user SET diamond_num=:diamond_num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':diamond_num' => $item_num + $row['diamond_num'],
|
||||
':modify_time' => time()
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT diamond_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE user SET diamond_num=:diamond_num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':diamond_num' => $item_num + $row['diamond_num'],
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -237,17 +282,21 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT coin_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$ret = $conn->execScript('UPDATE user SET coin_num=:coin_num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':coin_num' => $item_num + $row['coin_num'],
|
||||
':modify_time' => time()
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT coin_num FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE user SET coin_num=:coin_num, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':coin_num' => $item_num + $row['coin_num'],
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -264,10 +313,12 @@ class AddReward {
|
||||
$status = 1;
|
||||
$sum = 0;
|
||||
if ($it['type'] == 10) {
|
||||
$rows = $conn->execQuery('SELECT id, status FROM bag WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
));
|
||||
$rows = $conn->execQuery(
|
||||
'SELECT id, status FROM bag WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
)
|
||||
);
|
||||
foreach ($rows as $r) {
|
||||
$it = $this->getItem($r['id']);
|
||||
if ($r['status'] == 0 && $it['type'] == 10) {
|
||||
@ -278,25 +329,29 @@ class AddReward {
|
||||
$status = 0;
|
||||
}
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT status, num FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $item_id
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT status, num FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $item_id
|
||||
)
|
||||
);
|
||||
if (!$row && $item_id != 0) {
|
||||
$ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, :status, :num, :active_time, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, num=:num, active_time=:active_time, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => 0,
|
||||
':status' => $status,
|
||||
':num' => $item_num,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
));
|
||||
if(!$ret){
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, :status, :num, :active_time, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, num=:num, active_time=:active_time, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => 0,
|
||||
':status' => $status,
|
||||
':num' => $item_num,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
} else {
|
||||
@ -310,15 +365,17 @@ class AddReward {
|
||||
}
|
||||
}
|
||||
}
|
||||
$ret = $conn->execScript('UPDATE bag SET num=:num, status=:status, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':num' => $row['num'] + $item_num,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
));
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE bag SET num=:num, status=:status, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':num' => $row['num'] + $item_num,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -332,17 +389,21 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT free_lot_ticket FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$ret = $conn->execScript('UPDATE user SET free_lot_ticket=:free_lot_ticket, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':free_lot_ticket' => $item_num + $row['free_lot_ticket'],
|
||||
':modify_time' => time()
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT free_lot_ticket FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE user SET free_lot_ticket=:free_lot_ticket, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':free_lot_ticket' => $item_num + $row['free_lot_ticket'],
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -355,17 +416,21 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT free_dou_lot_ticket FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$ret = $conn->execScript('UPDATE user SET free_dou_lot_ticket=:free_dou_lot_ticket, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':free_dou_lot_ticket' => $item_num + $row['free_dou_lot_ticket'],
|
||||
':modify_time' => time()
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT free_dou_lot_ticket FROM user WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE user SET free_dou_lot_ticket=:free_dou_lot_ticket, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':free_dou_lot_ticket' => $item_num + $row['free_dou_lot_ticket'],
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -378,16 +443,18 @@ class AddReward {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT adfree FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT adfree FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = false;
|
||||
$nowtime = time();
|
||||
if (!$row) {
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO recharge(accountid, adree, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :adfree, :create_time, :modify_time) ' .
|
||||
' VALUES(:account_id, :adfree_add, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, adfree=adfree+:adfree_add, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
@ -396,15 +463,59 @@ class AddReward {
|
||||
':modify_time' => $nowtime,
|
||||
)
|
||||
);
|
||||
|
||||
} else {
|
||||
$ret = $conn->execScript('UPDATE recharge SET adfree=adfree+:adfree_add, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':adfree_add' => $item_num,
|
||||
':modify_time' => $nowtime,
|
||||
));
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE recharge SET adfree=adfree+:adfree_add, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':adfree_add' => $item_num,
|
||||
':modify_time' => $nowtime,
|
||||
)
|
||||
);
|
||||
}
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
protected function addMedal($item_id, $item_num, $accountid)
|
||||
{
|
||||
$conn = $this->getMysql($accountid);
|
||||
if (!$conn) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
}
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT medals, lastredeem FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid
|
||||
)
|
||||
);
|
||||
$ret = false;
|
||||
$nowtime = time();
|
||||
if (!$row) {
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO rolo(accountid, medals, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :medals_add, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, medals=medals+:medals_add, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':medals_add' => $item_num,
|
||||
':create_time' => $nowtime,
|
||||
':modify_time' => $nowtime,
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE solo SET medals=medals+:medals_add, lastredeem=:lastredeem, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':medals_add' => $item_num,
|
||||
':modify_time' => $nowtime,
|
||||
)
|
||||
);
|
||||
}
|
||||
if (!$ret) {
|
||||
die();
|
||||
@ -412,7 +523,7 @@ class AddReward {
|
||||
}
|
||||
|
||||
//添加道具
|
||||
protected function addItem($itemid, $hourtime, $accountid, $price, $t)
|
||||
protected function addItem($itemid, $hourtime, $accountid, $priceid, $price, $t)
|
||||
{
|
||||
$item_list = array();
|
||||
$item_num = 1;
|
||||
@ -425,43 +536,52 @@ class AddReward {
|
||||
}
|
||||
$status = 1;
|
||||
$active_time = $time * 3600 + time();
|
||||
$row = $conn->execQueryOne('SELECT * FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $item_id
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT * FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
'id' => $item_id
|
||||
)
|
||||
);
|
||||
if (!$row && $item_id != 0) {
|
||||
if ($time == 0) {
|
||||
$status = 1;
|
||||
$active_time = 0;
|
||||
}
|
||||
if ($t == 0) {
|
||||
$status = $this->getStatus($item_id, $status,$accountid);
|
||||
} else if ($t == 1){
|
||||
$status = $this->getStatus($item_id, $status, $accountid);
|
||||
} else if ($t == 1) {
|
||||
$status = 0;
|
||||
$this->updateStatus($item_id, $accountid);
|
||||
}
|
||||
$ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, :status, 0, :active_time, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, num=0, active_time=:active_time, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => $active_time,
|
||||
':status' => $status,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
));
|
||||
if(!$ret){
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, :id, 0, :status, 0, :active_time, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, num=0, active_time=:active_time, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => $active_time,
|
||||
':status' => $status,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
|
||||
} else {
|
||||
if ($row['status'] != 2 && $row['active_time'] == 0) {
|
||||
$item_id = 10003;
|
||||
$item_id = $priceid;
|
||||
$item_num = $price;
|
||||
$time = 0;
|
||||
$this->addDiamond($item_id, $item_num, $accountid);
|
||||
if ($price > 0) {
|
||||
if ($priceid == 10003) {
|
||||
$this->addDiamond($item_id, $item_num, $accountid);
|
||||
} else {
|
||||
$this->addweizhuang($item_id, $item_num, $accountid);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$nowTime = $row['active_time'];
|
||||
$status = $row['status'];
|
||||
@ -479,20 +599,22 @@ class AddReward {
|
||||
}
|
||||
}
|
||||
if ($t == 0) {
|
||||
$status = $this->getStatus($item_id, $status,$accountid);
|
||||
} else if ($t == 1){
|
||||
$status = $this->getStatus($item_id, $status, $accountid);
|
||||
} else if ($t == 1) {
|
||||
$status = 0;
|
||||
$this->updateStatus($item_id, $accountid);
|
||||
}
|
||||
$ret = $conn->execScript('UPDATE bag SET active_time=:active_time, status=:status, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => $nowTime,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
));
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE bag SET active_time=:active_time, status=:status, modify_time=:modify_time ' .
|
||||
' WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => $nowTime,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
}
|
||||
@ -525,11 +647,13 @@ class AddReward {
|
||||
if ($bag['fuction'] != $b['fuction']) {
|
||||
continue;
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT status FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT status FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
)
|
||||
);
|
||||
if (!$row || $row['status'] != 0) {
|
||||
continue;
|
||||
}
|
||||
@ -549,11 +673,13 @@ class AddReward {
|
||||
if ($bag['fuction'] != $b['fuction']) {
|
||||
continue;
|
||||
}
|
||||
$row_emoji = $conn->execQueryOne('SELECT status FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
));
|
||||
$row_emoji = $conn->execQueryOne(
|
||||
'SELECT status FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
)
|
||||
);
|
||||
if ($row_emoji['status'] == 0) {
|
||||
$emoji_num++;
|
||||
}
|
||||
@ -570,7 +696,7 @@ class AddReward {
|
||||
public function updateStatus($item_id, $accountid)
|
||||
{
|
||||
$conn = $this->getMysql($accountid);
|
||||
if(!$conn){
|
||||
if (!$conn) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
return;
|
||||
}
|
||||
@ -584,11 +710,13 @@ class AddReward {
|
||||
if ($bag['fuction'] != $b['fuction']) {
|
||||
continue;
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT status, active_time FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT status, active_time FROM bag WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $id,
|
||||
)
|
||||
);
|
||||
if (!$row || $row['status'] != 0) {
|
||||
continue;
|
||||
}
|
||||
@ -596,15 +724,17 @@ class AddReward {
|
||||
if ($row['active_time'] == 0) {
|
||||
$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' => $accountid,
|
||||
':id' => $id,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
));
|
||||
if(!$using_ret){
|
||||
$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' => $accountid,
|
||||
':id' => $id,
|
||||
':status' => $status,
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
if (!$using_ret) {
|
||||
die();
|
||||
return;
|
||||
}
|
||||
@ -615,47 +745,53 @@ class AddReward {
|
||||
protected function addEquip($item_id, $accountid)
|
||||
{
|
||||
$conn = $this->getMysql($accountid);
|
||||
if(!$conn){
|
||||
if (!$conn) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
|
||||
die();
|
||||
return;
|
||||
}
|
||||
$row = $conn->execQueryOne('SELECT id FROM equip WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $item_id,
|
||||
));
|
||||
$row = $conn->execQueryOne(
|
||||
'SELECT id FROM equip WHERE accountid=:accountid AND id=:id;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
':id' => $item_id,
|
||||
)
|
||||
);
|
||||
//没有装备解锁装备
|
||||
$item_list = array();
|
||||
if (!$row) {
|
||||
$rows = $conn->execQuery('SELECT using_id FROM equip WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
));
|
||||
$rows = $conn->execQuery(
|
||||
'SELECT using_id FROM equip WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $accountid,
|
||||
)
|
||||
);
|
||||
$using_id = $item_id;
|
||||
if ($rows) {
|
||||
foreach ($rows as $r) {
|
||||
$using_id = $r['using_id'];
|
||||
}
|
||||
}
|
||||
$ret = $conn->execScript('INSERT INTO equip(accountid, id, lv, active_time, sub_time, create_time, modify_time, using_id, exp) ' .
|
||||
' VALUES(:account_id, :id, 0, :active_time, :sub_time, :create_time, :modify_time, :using_id, :exp) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, lv=0, active_time=:active_time, sub_time=:sub_time, modify_time=:modify_time, using_id=:using_id, exp=:exp;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => 0,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time(),
|
||||
':sub_time' => 0,
|
||||
':using_id' => $using_id,
|
||||
':exp' => 0,
|
||||
));
|
||||
if(!$ret){
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO equip(accountid, id, lv, active_time, sub_time, create_time, modify_time, using_id, exp) ' .
|
||||
' VALUES(:account_id, :id, 0, :active_time, :sub_time, :create_time, :modify_time, :using_id, :exp) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, lv=0, active_time=:active_time, sub_time=:sub_time, modify_time=:modify_time, using_id=:using_id, exp=:exp;',
|
||||
array(
|
||||
':account_id' => $accountid,
|
||||
':id' => $item_id,
|
||||
':active_time' => 0,
|
||||
':create_time' => time(),
|
||||
':modify_time' => time(),
|
||||
':sub_time' => 0,
|
||||
':using_id' => $using_id,
|
||||
':exp' => 0,
|
||||
)
|
||||
);
|
||||
if (!$ret) {
|
||||
die();
|
||||
return;
|
||||
}
|
||||
array_push($item_list,array(
|
||||
array_push($item_list, array(
|
||||
'item_id' => $item_id,
|
||||
'item_num' => 1,
|
||||
'time' => 0,
|
||||
@ -679,7 +815,8 @@ class AddReward {
|
||||
}
|
||||
|
||||
|
||||
public function getRealIndexid($id, $accountid) {
|
||||
public function getRealIndexid($id, $accountid)
|
||||
{
|
||||
$e = $this->getEquip($id);
|
||||
if (!$e || $e['real_index_id'] == '' || !$e['real_index_id']) {
|
||||
return intval($id);
|
||||
@ -687,4 +824,3 @@ class AddReward {
|
||||
return intval($e['real_index_id']);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -28,6 +28,14 @@ class Privilege
|
||||
return 0; //$this->getPrivilegePlus($account_id, 'battleplus');
|
||||
}
|
||||
|
||||
public function getOfflineLimitPlus($account_id) {
|
||||
return $this->getPrivilegePlus($account_id, 'offline_times');
|
||||
}
|
||||
|
||||
public function getMedalLimitPlus($account_id) {
|
||||
return $this->getPrivilegePlus($account_id, 'medal_limit_up');
|
||||
}
|
||||
|
||||
public function getCoinTimesPlus($account_id)
|
||||
{
|
||||
return $this->getPrivilegePlus($account_id, 'dailycoin_times');
|
||||
@ -46,11 +54,11 @@ class Privilege
|
||||
':accountid' => $account_id,
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
if (!$row || $row['vip_info'] == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
$plus = 0;
|
||||
$nowtime = time();
|
||||
$vip_info = json_decode($row['vip_info'], true);
|
||||
|
@ -1008,23 +1008,42 @@ class EquipController{
|
||||
phpcommon\sendError(ERR_USER_BASE + 3, '金币不足');
|
||||
return;
|
||||
}
|
||||
|
||||
$mar_array = $this->getExplode($e['promote_material']);
|
||||
$mid = $mar_array[$key][0];
|
||||
$mnum = $mar_array[$key][1];
|
||||
$rbag = $conn->execQueryOne('SELECT num FROM bag WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $account_id,
|
||||
':id' => $mid,
|
||||
));
|
||||
|
||||
if (!$rbag || $rbag['num'] < $mnum) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 6, '材料不足');
|
||||
|
||||
$jinjieinfo = explode('|', $e['promote_material']);
|
||||
if ($key >= count($jinjieinfo)) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 4, '已经满阶');
|
||||
return;
|
||||
}
|
||||
|
||||
$curjinjie = explode(';', $jinjieinfo[$key]);
|
||||
$jinjieitems = array();
|
||||
foreach( $curjinjie as $jinjieitemstr) {
|
||||
$mar_array = explode(':', $jinjieitemstr);
|
||||
$mid = $mar_array[0];
|
||||
$mnum = $mar_array[1];
|
||||
$rbag = $conn->execQueryOne('SELECT num FROM bag WHERE accountid=:account_id AND id=:id;',
|
||||
array(
|
||||
':account_id' => $account_id,
|
||||
':id' => $mid,
|
||||
));
|
||||
|
||||
if (!$rbag || $rbag['num'] < $mnum) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 6, '材料不足');
|
||||
return;
|
||||
}
|
||||
|
||||
$jinjieitems[] = array(
|
||||
"item_id" => $mid,
|
||||
"item_num" => $mnum,
|
||||
);
|
||||
}
|
||||
|
||||
$this->subCoin(10001, $coin_num, $account_id);
|
||||
$this->subCoin($mid, $mnum, $account_id);
|
||||
foreach($jinjieitems as $jinjie_item) {
|
||||
$mid = $jinjie_item['item_id'];
|
||||
$mnum = $jinjie_item['item_num'];
|
||||
$this->subCoin($mid, $mnum, $account_id);
|
||||
}
|
||||
|
||||
$active_time = time();
|
||||
$sub_list = $this->getExplode($e['equip_upgradetime']);
|
||||
|
452
webapp/controller/RechargeActivity.trait.php
Normal file
452
webapp/controller/RechargeActivity.trait.php
Normal file
@ -0,0 +1,452 @@
|
||||
<?php
|
||||
|
||||
trait RechargeActivity
|
||||
{
|
||||
public function activityInfo()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT * FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
$firstrecharge = '';
|
||||
$vipinfo = array();
|
||||
$dailypurchase = array();
|
||||
$daysecs = phpcommon\getdayseconds(time());
|
||||
if ($rechargerow) {
|
||||
if ($rechargerow['first_data'] != null) {
|
||||
$firstrecharge = $rechargerow['first_data'];
|
||||
}
|
||||
if ($rechargerow['vip_info'] != null && $rechargerow['vip_info'] != '') {
|
||||
$vipinfo = json_decode($rechargerow['vip_info'], true);
|
||||
foreach ($vipinfo as $key => $val) {
|
||||
$vipinfo[$key]['award'] = $val['daily_time'] < $daysecs ? 0 : 1;
|
||||
unset($vipinfo[$key]['daily_time']);
|
||||
}
|
||||
}
|
||||
|
||||
if ($rechargerow['daily_purchase'] != null && $rechargerow['daily_purchase'] != '') {
|
||||
$dailypurchase = json_decode($rechargerow['daily_purchase'], true);
|
||||
$packtime = 0;
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['id'] == 10 && $val['time'] > $daysecs) {
|
||||
$packtime = $val['time'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($packtime > 0) {
|
||||
$shopconf = metatable\getShopGoodsConf();
|
||||
foreach ($shopconf as $itemconf) {
|
||||
if ($itemconf['type'] != 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($itemconf['shop_id'] == 10) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['id'] == $itemconf['shop_id']) {
|
||||
$found = true;
|
||||
$dailypurchase[$key]['time'] = $packtime;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
array_push($dailypurchase, array(
|
||||
'id' => $itemconf['shop_id'],
|
||||
'time' => $packtime,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$daily = array();
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['time'] < $daysecs) {
|
||||
unset($dailypurchase[$key]);
|
||||
} else {
|
||||
array_push($daily, $val);
|
||||
}
|
||||
}
|
||||
$dailypurchase = $daily;
|
||||
}
|
||||
}
|
||||
|
||||
$activityconf = metatable\getRechargeActivityConf();
|
||||
$recharge_activity = array();
|
||||
$activity = array();
|
||||
if ($rechargerow['activity'] != null && $rechargerow['activity'] != '') {
|
||||
$activity = json_decode($rechargerow['activity'], true);
|
||||
}
|
||||
$needupdate = false;
|
||||
$time1 = '';
|
||||
$time2 = '';
|
||||
foreach ($activityconf as $key => $itemconf) {
|
||||
$time1 = $itemconf['time1'];
|
||||
$time2 = $itemconf['time2'];
|
||||
if (time() < strtotime($itemconf['time1']) || time() > strtotime($itemconf['time2'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
$itemarray = array();
|
||||
foreach ($activity as $itemkey => $item) {
|
||||
if ($itemconf['shop_id'] == $item['id']) {
|
||||
$found = true;
|
||||
|
||||
switch ($itemconf['type']) {
|
||||
case 1: //累积充值
|
||||
case 2: //累计消耗
|
||||
$itemarray = array(
|
||||
'id' => $item['id'],
|
||||
'cur' => $item['cur'],
|
||||
'target' => $item['target'],
|
||||
'award' => $item['time'] > 0 ? 1 : 0,
|
||||
);
|
||||
break;
|
||||
case 3: //每日累积充值
|
||||
$itemarray['id'] = $item['id'];
|
||||
$itemarray['target'] = $item['target'];
|
||||
if ($item['time'] < $daysecs) {
|
||||
$itemarray['cur'] = 0;
|
||||
$itemarray['award'] = 0;
|
||||
$needupdate = true;
|
||||
$activity[$itemkey]['cur'] = 0;
|
||||
$activity[$itemkey]['award'] = 0;
|
||||
} else {
|
||||
$itemarray['cur'] = $item['cur'];
|
||||
$itemarray['award'] = $item['award'];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
$itemarray = array(
|
||||
'id' => $itemconf['shop_id'],
|
||||
'cur' => 0,
|
||||
'target' => $itemconf['target'],
|
||||
'award' => 0,
|
||||
);
|
||||
}
|
||||
if (
|
||||
$itemconf['type'] == 1 ||
|
||||
$itemconf['type'] == 3
|
||||
) {
|
||||
$itemarray['cur'] /= 10;
|
||||
$itemarray['target'] /= 10;
|
||||
}
|
||||
array_push($recharge_activity, $itemarray);
|
||||
}
|
||||
|
||||
if ($needupdate) {
|
||||
$conn->execScript(
|
||||
'UPDATE recharge SET activity=:activity, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':activity' => json_encode($activity),
|
||||
':modify_time' => time(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'first_recharge' => $firstrecharge,
|
||||
'vip_info' => $vipinfo,
|
||||
'daily_purchase' => $dailypurchase,
|
||||
'recharge_activity' => $recharge_activity,
|
||||
'time1' => $time1,
|
||||
'time2' => $time2,
|
||||
));
|
||||
}
|
||||
|
||||
public function getVipDailyAward()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT vip_info FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if ($rechargerow['vip_info'] == null || $rechargerow['vip_info'] == '') {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没月卡');
|
||||
return;
|
||||
}
|
||||
|
||||
$vipinfo = json_decode($rechargerow['vip_info'], true);
|
||||
$item_list = array();
|
||||
$found = false;
|
||||
$nowTime = time();
|
||||
foreach ($vipinfo as $key => $val) {
|
||||
if ($val['id'] == $_REQUEST['id']) {
|
||||
if ($val['expire'] > 0 && $val['expire'] < $nowTime) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '月卡过期');
|
||||
return;
|
||||
}
|
||||
|
||||
if (phpcommon\getdayseconds($val['daily_time']) >= phpcommon\getdayseconds($nowTime)) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '月卡奖励已领');
|
||||
return;
|
||||
}
|
||||
|
||||
$privilegecard_conf = metatable\getPrivilegeCardById($_REQUEST['id']);
|
||||
if (!$privilegecard_conf) {
|
||||
error_log('game2004api payNotify privilege card goods config error:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemconf = metatable\getItemById($privilegecard_conf['item_id']);
|
||||
if (!$itemconf) {
|
||||
error_log('game2004api payNotify privilege card goods config error 2:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error 2'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$dropconf = $this->getDrop($itemconf['fuctionindex']);
|
||||
if (!$dropconf) {
|
||||
error_log('game2004api payNotify privilege card goods config error 3:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error 3'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$vipinfo[$key]['daily_time'] = $nowTime;
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE recharge SET vip_info=:vip_info, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':vip_info' => json_encode($vipinfo),
|
||||
':modify_time' => time(),
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
echo json_encode(array(
|
||||
'errcode' => 2,
|
||||
'errmsg' => '服务器内部错误'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemidlist = explode('|', $dropconf['item_id']);
|
||||
$itemnumlist = explode('|', $dropconf['num']);
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($itemidlist as $key => $itemid) {
|
||||
array_push($item_list, array(
|
||||
'item_id' => $itemid,
|
||||
'item_num' => $itemnumlist[$key],
|
||||
'time' => 0,
|
||||
));
|
||||
$items = $addreward->addReward($itemid, $itemnumlist[$key], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => $i['time'],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$found = true;
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'id' => $_REQUEST['id'],
|
||||
'item_list' => $item_list,
|
||||
'vip_info' => json_encode($vipinfo),
|
||||
'all_item_list' => $all_item_list,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没月卡 2');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActivityAward()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT activity FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if ($rechargerow['activity'] == null || $rechargerow['activity'] == '') {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没参与活动');
|
||||
return;
|
||||
}
|
||||
|
||||
$activity = json_decode($rechargerow['activity'], true);
|
||||
$item_list = array();
|
||||
$found = false;
|
||||
$nowTime = time();
|
||||
foreach ($activity as $key => $val) {
|
||||
if ($val['id'] == $_REQUEST['id']) {
|
||||
if ($val['cur'] < $val['target']) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没完成');
|
||||
return;
|
||||
}
|
||||
|
||||
$activity_conf = metatable\getRechargeActivityById($_REQUEST['id']);
|
||||
if (!$activity_conf) {
|
||||
error_log('game2004api payNotify recharge activity config error:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'activity error'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
if ($activity_conf['type'] == 3) { //每日充值活动
|
||||
if ($val['time'] < phpcommon\getdayseconds($nowTime) || $val['award'] != 0) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '已领');
|
||||
return;
|
||||
}
|
||||
$activity[$key]['award'] = 1;
|
||||
} else {
|
||||
if ($val['time'] > 0) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '已领');
|
||||
return;
|
||||
}
|
||||
$activity[$key]['time'] = $nowTime;
|
||||
}
|
||||
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE recharge SET activity=:activity, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':activity' => json_encode($activity),
|
||||
':modify_time' => $nowTime,
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
echo json_encode(array(
|
||||
'errcode' => 2,
|
||||
'errmsg' => '服务器内部错误'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemidlist = explode('|', $activity_conf['item_id']);
|
||||
$itemnumlist = explode('|', $activity_conf['item_num']);
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($itemidlist as $itemkey => $itemid) {
|
||||
array_push($item_list, array(
|
||||
'item_id' => $itemid,
|
||||
'item_num' => $itemnumlist[$itemkey],
|
||||
'time' => 0,
|
||||
));
|
||||
$items = $addreward->addReward($itemid, $itemnumlist[$itemkey], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => $i['time'],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($activity as $key => $val) {
|
||||
$activity[$key]['award'] = $val['time'] > 0 ? 1 : 0;
|
||||
unset($activity[$key]['time']);
|
||||
}
|
||||
|
||||
$found = true;
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'id' => $_REQUEST['id'],
|
||||
'item_list' => $item_list,
|
||||
'recharge_activity' => json_encode($activity),
|
||||
'all_item_list' => $all_item_list,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没活动 2');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,9 +8,11 @@ require_once 'metatable/shopGoods.php';
|
||||
require_once 'metatable/privilegecard.php';
|
||||
require_once 'metatable/rechargeActivity.php';
|
||||
require_once 'metatable/item.php';
|
||||
require_once 'RechargeActivity.trait.php';
|
||||
|
||||
class RechargeController
|
||||
{
|
||||
use RechargeActivity;
|
||||
protected function getRedis($key)
|
||||
{
|
||||
$redis_conf = getRedisConfig(crc32($key));
|
||||
@ -898,454 +900,6 @@ class RechargeController
|
||||
);
|
||||
}
|
||||
|
||||
public function activityInfo()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT * FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
$firstrecharge = '';
|
||||
$vipinfo = array();
|
||||
$dailypurchase = array();
|
||||
$daysecs = phpcommon\getdayseconds(time());
|
||||
if ($rechargerow) {
|
||||
if ($rechargerow['first_data'] != null) {
|
||||
$firstrecharge = $rechargerow['first_data'];
|
||||
}
|
||||
if ($rechargerow['vip_info'] != null && $rechargerow['vip_info'] != '') {
|
||||
$vipinfo = json_decode($rechargerow['vip_info'], true);
|
||||
foreach ($vipinfo as $key => $val) {
|
||||
$vipinfo[$key]['award'] = $val['daily_time'] < $daysecs ? 0 : 1;
|
||||
unset($vipinfo[$key]['daily_time']);
|
||||
}
|
||||
}
|
||||
|
||||
if ($rechargerow['daily_purchase'] != null && $rechargerow['daily_purchase'] != '') {
|
||||
$dailypurchase = json_decode($rechargerow['daily_purchase'], true);
|
||||
$packtime = 0;
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['id'] == 10 && $val['time'] > $daysecs) {
|
||||
$packtime = $val['time'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($packtime > 0) {
|
||||
$shopconf = metatable\getShopGoodsConf();
|
||||
foreach ($shopconf as $itemconf) {
|
||||
if ($itemconf['type'] != 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($itemconf['shop_id'] == 10) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['id'] == $itemconf['shop_id']) {
|
||||
$found = true;
|
||||
$dailypurchase[$key]['time'] = $packtime;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
array_push($dailypurchase, array(
|
||||
'id' => $itemconf['shop_id'],
|
||||
'time' => $packtime,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$daily = array();
|
||||
foreach ($dailypurchase as $key => $val) {
|
||||
if ($val['time'] < $daysecs) {
|
||||
unset($dailypurchase[$key]);
|
||||
} else {
|
||||
array_push($daily, $val);
|
||||
}
|
||||
}
|
||||
$dailypurchase = $daily;
|
||||
}
|
||||
}
|
||||
|
||||
$activityconf = metatable\getRechargeActivityConf();
|
||||
$recharge_activity = array();
|
||||
$activity = array();
|
||||
if ($rechargerow['activity'] != null && $rechargerow['activity'] != '') {
|
||||
$activity = json_decode($rechargerow['activity'], true);
|
||||
}
|
||||
$needupdate = false;
|
||||
$time1 = '';
|
||||
$time2 = '';
|
||||
foreach ($activityconf as $key => $itemconf) {
|
||||
$time1 = $itemconf['time1'];
|
||||
$time2 = $itemconf['time2'];
|
||||
if (time() < strtotime($itemconf['time1']) || time() > strtotime($itemconf['time2'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
$itemarray = array();
|
||||
foreach ($activity as $itemkey => $item) {
|
||||
if ($itemconf['shop_id'] == $item['id']) {
|
||||
$found = true;
|
||||
|
||||
switch ($itemconf['type']) {
|
||||
case 1: //累积充值
|
||||
case 2: //累计消耗
|
||||
$itemarray = array(
|
||||
'id' => $item['id'],
|
||||
'cur' => $item['cur'],
|
||||
'target' => $item['target'],
|
||||
'award' => $item['time'] > 0 ? 1 : 0,
|
||||
);
|
||||
break;
|
||||
case 3: //每日累积充值
|
||||
$itemarray['id'] = $item['id'];
|
||||
$itemarray['target'] = $item['target'];
|
||||
if ($item['time'] < $daysecs) {
|
||||
$itemarray['cur'] = 0;
|
||||
$itemarray['award'] = 0;
|
||||
$needupdate = true;
|
||||
$activity[$itemkey]['cur'] = 0;
|
||||
$activity[$itemkey]['award'] = 0;
|
||||
} else {
|
||||
$itemarray['cur'] = $item['cur'];
|
||||
$itemarray['award'] = $item['award'];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
$itemarray = array(
|
||||
'id' => $itemconf['shop_id'],
|
||||
'cur' => 0,
|
||||
'target' => $itemconf['target'],
|
||||
'award' => 0,
|
||||
);
|
||||
}
|
||||
if (
|
||||
$itemconf['type'] == 1 ||
|
||||
$itemconf['type'] == 3
|
||||
) {
|
||||
$itemarray['cur'] /= 10;
|
||||
$itemarray['target'] /= 10;
|
||||
}
|
||||
array_push($recharge_activity, $itemarray);
|
||||
}
|
||||
|
||||
if ($needupdate) {
|
||||
$conn->execScript(
|
||||
'UPDATE recharge SET activity=:activity, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':activity' => json_encode($activity),
|
||||
':modify_time' => time(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'first_recharge' => $firstrecharge,
|
||||
'vip_info' => $vipinfo,
|
||||
'daily_purchase' => $dailypurchase,
|
||||
'recharge_activity' => $recharge_activity,
|
||||
'time1' => $time1,
|
||||
'time2' => $time2,
|
||||
));
|
||||
}
|
||||
|
||||
public function getVipDailyAward()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT vip_info FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if ($rechargerow['vip_info'] == null || $rechargerow['vip_info'] == '') {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没月卡');
|
||||
return;
|
||||
}
|
||||
|
||||
$vipinfo = json_decode($rechargerow['vip_info'], true);
|
||||
$item_list = array();
|
||||
$found = false;
|
||||
$nowTime = time();
|
||||
foreach ($vipinfo as $key => $val) {
|
||||
if ($val['id'] == $_REQUEST['id']) {
|
||||
if ($val['expire'] > 0 && $val['expire'] < $nowTime) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '月卡过期');
|
||||
return;
|
||||
}
|
||||
|
||||
if (phpcommon\getdayseconds($val['daily_time']) >= phpcommon\getdayseconds($nowTime)) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '月卡奖励已领');
|
||||
return;
|
||||
}
|
||||
|
||||
$privilegecard_conf = metatable\getPrivilegeCardById($_REQUEST['id']);
|
||||
if (!$privilegecard_conf) {
|
||||
error_log('game2004api payNotify privilege card goods config error:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemconf = metatable\getItemById($privilegecard_conf['item_id']);
|
||||
if (!$itemconf) {
|
||||
error_log('game2004api payNotify privilege card goods config error 2:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error 2'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$dropconf = $this->getDrop($itemconf['fuctionindex']);
|
||||
if (!$dropconf) {
|
||||
error_log('game2004api payNotify privilege card goods config error 3:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'privilege card error 3'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$vipinfo[$key]['daily_time'] = $nowTime;
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE recharge SET vip_info=:vip_info, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':vip_info' => json_encode($vipinfo),
|
||||
':modify_time' => time(),
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
echo json_encode(array(
|
||||
'errcode' => 2,
|
||||
'errmsg' => '服务器内部错误'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemidlist = explode('|', $dropconf['item_id']);
|
||||
$itemnumlist = explode('|', $dropconf['num']);
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($itemidlist as $key => $itemid) {
|
||||
array_push($item_list, array(
|
||||
'item_id' => $itemid,
|
||||
'item_num' => $itemnumlist[$key],
|
||||
'time' => 0,
|
||||
));
|
||||
$items = $addreward->addReward($itemid, $itemnumlist[$key], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => $i['time'],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$found = true;
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'id' => $_REQUEST['id'],
|
||||
'item_list' => $item_list,
|
||||
'vip_info' => json_encode($vipinfo),
|
||||
'all_item_list' => $all_item_list,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没月卡 2');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActivityAward()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$rechargerow = $conn->execQueryOne(
|
||||
'SELECT activity FROM recharge WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if ($rechargerow['activity'] == null || $rechargerow['activity'] == '') {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没参与活动');
|
||||
return;
|
||||
}
|
||||
|
||||
$activity = json_decode($rechargerow['activity'], true);
|
||||
$item_list = array();
|
||||
$found = false;
|
||||
$nowTime = time();
|
||||
foreach ($activity as $key => $val) {
|
||||
if ($val['id'] == $_REQUEST['id']) {
|
||||
if ($val['cur'] < $val['target']) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没完成');
|
||||
return;
|
||||
}
|
||||
|
||||
$activity_conf = metatable\getRechargeActivityById($_REQUEST['id']);
|
||||
if (!$activity_conf) {
|
||||
error_log('game2004api payNotify recharge activity config error:' + json_encode($_REQUEST));
|
||||
echo json_encode(array(
|
||||
'errcode' => 4,
|
||||
'errmsg' => 'activity error'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
if ($activity_conf['type'] == 3) { //每日充值活动
|
||||
if ($val['time'] < phpcommon\getdayseconds($nowTime) || $val['award'] != 0) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '已领');
|
||||
return;
|
||||
}
|
||||
$activity[$key]['award'] = 1;
|
||||
} else {
|
||||
if ($val['time'] > 0) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '已领');
|
||||
return;
|
||||
}
|
||||
$activity[$key]['time'] = $nowTime;
|
||||
}
|
||||
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE recharge SET activity=:activity, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':activity' => json_encode($activity),
|
||||
':modify_time' => $nowTime,
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
echo json_encode(array(
|
||||
'errcode' => 2,
|
||||
'errmsg' => '服务器内部错误'
|
||||
));
|
||||
die();
|
||||
}
|
||||
|
||||
$itemidlist = explode('|', $activity_conf['item_id']);
|
||||
$itemnumlist = explode('|', $activity_conf['item_num']);
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($itemidlist as $itemkey => $itemid) {
|
||||
array_push($item_list, array(
|
||||
'item_id' => $itemid,
|
||||
'item_num' => $itemnumlist[$itemkey],
|
||||
'time' => 0,
|
||||
));
|
||||
$items = $addreward->addReward($itemid, $itemnumlist[$itemkey], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => $i['time'],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($activity as $key => $val) {
|
||||
$activity[$key]['award'] = $val['time'] > 0 ? 1 : 0;
|
||||
unset($activity[$key]['time']);
|
||||
}
|
||||
|
||||
$found = true;
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'id' => $_REQUEST['id'],
|
||||
'item_list' => $item_list,
|
||||
'recharge_activity' => json_encode($activity),
|
||||
'all_item_list' => $all_item_list,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没活动 2');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
protected function getDrop($drop_id)
|
||||
{
|
||||
$drop_meta_table = require('../res/drop@drop.php');
|
||||
|
681
webapp/controller/SoloController.class.php
Normal file
681
webapp/controller/SoloController.class.php
Normal file
@ -0,0 +1,681 @@
|
||||
<?php
|
||||
|
||||
require 'classes/AddReward.php';
|
||||
require_once 'metatable/item.php';
|
||||
require_once 'metatable/parameter.php';
|
||||
require_once 'metatable/drop.php';
|
||||
|
||||
class SoloController
|
||||
{
|
||||
protected function getRedis($key)
|
||||
{
|
||||
$redis_conf = getRedisConfig(crc32($key));
|
||||
$r = new phpcommon\Redis(array(
|
||||
'host' => $redis_conf['host'],
|
||||
'port' => $redis_conf['port'],
|
||||
'passwd' => $redis_conf['passwd']
|
||||
|
||||
));
|
||||
return $r;
|
||||
}
|
||||
|
||||
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' => DBNAME_PREFIX . $mysql_conf['instance_id']
|
||||
));
|
||||
return $conn;
|
||||
}
|
||||
|
||||
protected function getGameLevelInfo($level)
|
||||
{
|
||||
$conf = require('../res/gamelevel@gamelevel.php');
|
||||
return array_key_exists($level, $conf) ? $conf[$level] : null;
|
||||
}
|
||||
|
||||
protected function getPlayerLevelInfo($level)
|
||||
{
|
||||
$conf = require('../res/playerlevel@playerlevel.php');
|
||||
return array_key_exists($level, $conf) ? $conf[$level] : null;
|
||||
}
|
||||
|
||||
public function soloInfo()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$solorow = $conn->execQueryOne(
|
||||
'SELECT * FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
$medals = 0;
|
||||
$privilege = new classes\Privilege();
|
||||
$medalsgrowlimit = metatable\getParameterById(MEDAL_LIMIT) + $privilege->getMedalLimitPlus($account_id);
|
||||
$nowtime = time();
|
||||
$lastredeem = $nowtime;
|
||||
$level = 1;
|
||||
$exp = 0;
|
||||
$gamelevel = array(
|
||||
'curlevel' => 1,
|
||||
'curwave' => 0,
|
||||
'levelinfo' => array(),
|
||||
);
|
||||
$offlinehours = 0;
|
||||
if (!$solorow) {
|
||||
$medals = $medalsgrowlimit;
|
||||
$ret = $conn->execScript(
|
||||
'INSERT INTO solo(accountid, level, exp, medals, lastredeem, lastoffline, create_time, modify_time) ' .
|
||||
' VALUES(:account_id, 1, 0, :medals, :lastredeem, :lastoffline, :create_time, :modify_time) ' .
|
||||
' ON DUPLICATE KEY UPDATE accountid=:account_id, level=:level, exp=:exp, medals=:medals, lastredeem=:lastredeem, lastoffline=:lastoffline, modify_time=:modify_time;',
|
||||
array(
|
||||
':account_id' => $account_id,
|
||||
':medals' => $medals,
|
||||
':lastredeem' => $lastredeem,
|
||||
':lastoffline' => $nowtime,
|
||||
':create_time' => $nowtime,
|
||||
':modify_time' => $nowtime
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$medalsecs = intval(metatable\getParameterById(MEDAL_SECONDS));
|
||||
$lastredeem = $solorow['lastredeem'];
|
||||
$medals = $solorow['medals'];
|
||||
$lastoffline = $solorow['lastoffline'];
|
||||
$updatedb = false;
|
||||
$offlinehours = $solorow['offline'];
|
||||
if ($solorow['medals'] < $medalsgrowlimit && $medalsecs + $solorow['lastredeem'] <= $nowtime) { //结算体力自然增长
|
||||
$addmedals = ($nowtime - $solorow['lastredeem']) / $medalsecs;
|
||||
$lastredeem = $solorow['lastredeem'] + $addmedals * $medalsecs;
|
||||
$medals = $addmedals + $solorow['medals'];
|
||||
$updatedb = true;
|
||||
} else {
|
||||
$medals = $solorow['medals'];
|
||||
$lastredeem = $solorow['lastredeem'];
|
||||
}
|
||||
|
||||
if ($lastoffline + 3600 <= $nowtime) {
|
||||
$offlinehours += ($nowtime - $lastoffline) / 3600;
|
||||
$offlinelimit = metatable\getParameterById(OFFLINE_LIMIT) + $privilege->getOfflineLimitPlus($account_id);
|
||||
if ($offlinehours > $offlinelimit) {
|
||||
$offlinehours = $offlinelimit;
|
||||
}
|
||||
|
||||
$updatedb = true;
|
||||
} else if ($lastoffline + 1800 >= $nowtime) {
|
||||
$updatedb = true;
|
||||
}
|
||||
|
||||
if ($updatedb) {
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE solo SET medals=:medals, lastredeem=:lastredeem, lastoffline=:lastoffline, offline=:offline, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':medals' => $medals,
|
||||
':lastredeem' => $lastredeem,
|
||||
':lastoffline' => $nowtime,
|
||||
':offline' => $offlinehours,
|
||||
':modify_time' => $nowtime
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$level = $solorow['level'];
|
||||
$exp = $solorow['exp'];
|
||||
if (!is_null($solorow['gamelevel']) && !empty($solorow['gamelevel'])) {
|
||||
$gamelevel = json_decode($solorow['gamelevel']);
|
||||
}
|
||||
}
|
||||
|
||||
$upexp = 0;
|
||||
$lvinfo = $this->getPlayerLevelInfo($level);
|
||||
if ($lvinfo) {
|
||||
$upexp = $lvinfo['experience'];
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'level' => $level,
|
||||
'exp' => $exp,
|
||||
'upexp' => $upexp,
|
||||
'medals' => $medals,
|
||||
'medal_limit' => $medalsgrowlimit,
|
||||
'lastredeem' => $lastredeem,
|
||||
'offlinehours' => $offlinehours,
|
||||
'gamelevel' => $gamelevel
|
||||
));
|
||||
}
|
||||
|
||||
public function offlineAward()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$solorow = $conn->execQueryOne(
|
||||
'SELECT offline, gamelevel FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if (!$solorow || $solorow['offline'] < 1 || is_null($solorow['gamelevel']) || $solorow['gamelevel'] == '') {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 2');
|
||||
return;
|
||||
}
|
||||
|
||||
$gamelevelinfo = json_decode($solorow['gamelevel'], true);
|
||||
if ($gamelevelinfo['curlevel'] < 1) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 3');
|
||||
return;
|
||||
}
|
||||
|
||||
$levelcfg = $this->getGameLevelInfo($gamelevelinfo['curlevel']);
|
||||
if (!$levelcfg) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 4');
|
||||
return;
|
||||
}
|
||||
|
||||
$offlinehours = $solorow['offline'];
|
||||
$fixawards = explode($levelcfg['offlineitem_id'], '|');
|
||||
$item_list = array();
|
||||
$all_item_list = array();
|
||||
foreach ($fixawards as $fixitemstr) {
|
||||
$itemstrs = explode($fixitemstr, ':');
|
||||
if (count($itemstrs) < 2) {
|
||||
continue;
|
||||
}
|
||||
$item_list[] = array(
|
||||
'item_id' => $itemstrs[0],
|
||||
'item_num' => $itemstrs[1] * $offlinehours,
|
||||
'time' => 0
|
||||
);
|
||||
}
|
||||
|
||||
$droplist = explode($levelcfg['offlineitem_id2'], '|');
|
||||
$dropawards = array();
|
||||
for ($i = 0; $i < $offlinehours; $i++) {
|
||||
foreach ($droplist as $dropid) {
|
||||
$dropitems = array();
|
||||
$dropitems = metatable\getDropAllListById($dropid, $dropitems);
|
||||
foreach ($dropitems as $dropitem) {
|
||||
$itemid = $dropitem['item_id'];
|
||||
$itemnum = $dropitem['item_num'];
|
||||
if ($itemid == 0 || $itemnum == 0) {
|
||||
continue;
|
||||
}
|
||||
$dropawards[$itemid] += $itemnum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($dropawards as $itemid => $itemnum) {
|
||||
$item_list[] = array(
|
||||
'item_id' => $itemid,
|
||||
'item_num' => $itemnum,
|
||||
'time' => 0
|
||||
);
|
||||
}
|
||||
|
||||
$addreward = new classes\AddReward();
|
||||
foreach ($item_list as $itemaward) {
|
||||
$items = $addreward->addReward($itemaward['item_id'], $itemaward['item_num'], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => 0,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
$medals = $addreward->getMedals($account_id);
|
||||
|
||||
echo json_encode(array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'offlinehours' => $offlinehours,
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'medals' => $medals,
|
||||
'item_list' => $item_list,
|
||||
'all_item_list' => $all_item_list,
|
||||
));
|
||||
}
|
||||
|
||||
// 战斗结算
|
||||
public function settle()
|
||||
{
|
||||
$this->levelaward(true);
|
||||
}
|
||||
|
||||
// 领取关卡宝箱
|
||||
public function complete()
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$solorow = $conn->execQueryOne(
|
||||
'SELECT * FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if (!$solorow) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 1');
|
||||
return;
|
||||
}
|
||||
|
||||
$gamelevel = array(
|
||||
'curlevel' => 1,
|
||||
'curwave' => 0,
|
||||
'levelinfo' => array(),
|
||||
);
|
||||
if (!is_null($solorow['gamelevel']) && !empty($solorow['gamelevel'])) {
|
||||
$gamelevel = json_decode($solorow['gamelevel'], true);
|
||||
}
|
||||
|
||||
$level = $_REQUEST['level'];
|
||||
$wave = $_REQUEST['wave'];
|
||||
if (!array_key_exists($level, $gamelevel['levelinfo'])) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个奖励');
|
||||
return;
|
||||
}
|
||||
|
||||
$foundwave = false;
|
||||
foreach ($gamelevel['levelinfo'][$level] as $key => $waveitem) {
|
||||
if ($wave == $waveitem) {
|
||||
$foundwave = true;
|
||||
unset($gamelevel['levelinfo'][$level][$key]);
|
||||
if (count($gamelevel['levelinfo'][$level]) == 0) {
|
||||
unset($gamelevel['levelinfo'][$level]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$foundwave) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个奖励 1');
|
||||
return;
|
||||
}
|
||||
|
||||
$levelcfg = $this->getGameLevelInfo($level);
|
||||
if (!$levelcfg) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个奖励 2');
|
||||
return;
|
||||
}
|
||||
|
||||
$wavearr = explode($levelcfg['completionwave'], '|');
|
||||
$foundwave = false;
|
||||
$item_list = array();
|
||||
foreach ($wavearr as $key => $waveitem) {
|
||||
if ($wave != $waveitem) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$waveawardarr = explode($levelcfg['completionreward'], '|');
|
||||
if (!array_key_exists($key, $waveawardarr)) {
|
||||
break;
|
||||
}
|
||||
|
||||
$awardarr = explode($waveawardarr[$key], ';');
|
||||
foreach($awardarr as $awarditem) {
|
||||
$strs = explode($awarditem, ':');
|
||||
if (count($strs) < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$item_list[]=array(
|
||||
'item_id' => $strs[0],
|
||||
'item_num' => $strs[1],
|
||||
"time" => 0,
|
||||
);
|
||||
}
|
||||
|
||||
$foundwave = true;
|
||||
}
|
||||
|
||||
if (!$foundwave) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个奖励 3');
|
||||
return;
|
||||
}
|
||||
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE solo SET gamelevel=:gamelevel, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':gamelevel' => json_encode($gamelevel),
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
phpcommon\sendError(ERR_RETRY + 1, '系统繁忙');
|
||||
return;
|
||||
}
|
||||
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($item_list as $itemaward) {
|
||||
$items = $addreward->addReward($itemaward['item_id'], $itemaward['item_num'], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => 0,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
$medals = $addreward->getMedals($account_id);
|
||||
|
||||
$response = array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'level' => $level,
|
||||
'wave' => $wave,
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'medals' => $medals,
|
||||
'item_list' => $item_list,
|
||||
'all_item_list' => $all_item_list,
|
||||
);
|
||||
|
||||
echo json_encode($response);
|
||||
}
|
||||
|
||||
// 扫荡结算
|
||||
public function sweep()
|
||||
{
|
||||
$this->levelaward(false);
|
||||
}
|
||||
|
||||
protected function levelaward($isbattle)
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
$solorow = $conn->execQueryOne(
|
||||
'SELECT * FROM solo WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id
|
||||
)
|
||||
);
|
||||
|
||||
if (!$solorow) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家 1');
|
||||
return;
|
||||
}
|
||||
|
||||
$gamelevel = array(
|
||||
'curlevel' => 1,
|
||||
'curwave' => 0,
|
||||
'levelinfo' => array(),
|
||||
);
|
||||
|
||||
if (!is_null($solorow['gamelevel']) && !empty($solorow['gamelevel'])) {
|
||||
$gamelevel = json_encode($solorow['gamelevel'], true);
|
||||
}
|
||||
|
||||
$curlevelcfg = $this->getGameLevelInfo($gamelevel['curlevel']);
|
||||
if (!$curlevelcfg) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '关卡未通过');
|
||||
return;
|
||||
}
|
||||
|
||||
$curmonsterwaves = explode($curlevelcfg['monsterlist_id'], '|');
|
||||
$curfinished = $gamelevel['curwave'] > 0 && $gamelevel['curwave'] == count($curmonsterwaves);
|
||||
|
||||
$level = $_REQUEST['level'];
|
||||
|
||||
if ($isbattle) {
|
||||
if ((!$curfinished && $level > $gamelevel['curlevel']) ||
|
||||
($curfinished && $level > $gamelevel['curlevel'] + 1)
|
||||
) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '关卡未通过 1');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if ((!$curfinished && $level >= $gamelevel['curlevel']) ||
|
||||
($curfinished && $level > $gamelevel['curlevel'])
|
||||
) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '关卡未通过 2');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$reqlevelcfg = $this->getGameLevelInfo($level);
|
||||
if (!$reqlevelcfg) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 1, '关卡未通过 3');
|
||||
return;
|
||||
}
|
||||
|
||||
if ($reqlevelcfg['medal_cost'] > $solorow['medals']) {
|
||||
phpcommon\sendError(ERR_USER_BASE + 2, '体力不足');
|
||||
return;
|
||||
}
|
||||
|
||||
$reqmonsterwaves = explode($reqlevelcfg['monsterlist_id'], '|');
|
||||
$reqfinished = $isbattle ? ($_REQUEST['wave'] > 0 && $_REQUEST['wave'] == count($reqmonsterwaves)) : true;
|
||||
|
||||
$item_list = array();
|
||||
// fixed award
|
||||
$fixedawards = explode($reqlevelcfg['fixedreward'], '|');
|
||||
foreach ($fixedawards as $fixitem) {
|
||||
$itemstrs = explode($fixitem, '|');
|
||||
if (count($itemstrs) < 2) {
|
||||
continue;
|
||||
}
|
||||
$item_list[] = array(
|
||||
"item_id" => $itemstrs[0],
|
||||
"item_num" => $itemstrs[1],
|
||||
"time" => 0,
|
||||
);
|
||||
}
|
||||
|
||||
// level finished award
|
||||
if ($reqfinished) {
|
||||
$finishedawards = explode($reqlevelcfg['winreward'], '|');
|
||||
foreach ($finishedawards as $finishitem) {
|
||||
$itemstrs = explode($finishitem, '|');
|
||||
if (count($itemstrs) < 2) {
|
||||
continue;
|
||||
}
|
||||
$item_list[] = array(
|
||||
"item_id" => $itemstrs[0],
|
||||
"item_num" => $itemstrs[1],
|
||||
"time" => 0,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($isbattle) {
|
||||
// level box award
|
||||
$wave = $_REQUEST['wave'];
|
||||
if ($curfinished && $level == $gamelevel['curlevel'] + 1) {
|
||||
$newwaves = array();
|
||||
$completewaves = explode($reqlevelcfg['completionwave'], '|');
|
||||
foreach ($completewaves as $waveitem) {
|
||||
if ($wave >= $waveitem) {
|
||||
$newwaves[] = $waveitem;
|
||||
}
|
||||
}
|
||||
$gamelevel['levelinfo'][$level] = $newwaves;
|
||||
$gamelevel['curlevel'] = $level;
|
||||
$gamelevel['curwave'] = $wave;
|
||||
} else if (!$curfinished && $level == $gamelevel['curlevel'] && $wave > $gamelevel['curwave']) {
|
||||
if ($gamelevel['curwave'] == 0) {
|
||||
$gamelevel['levelinfo'][$level] = array();
|
||||
}
|
||||
$completewaves = explode($reqlevelcfg['completionwave'], '|');
|
||||
foreach ($completewaves as $waveitem) {
|
||||
if ($wave >= $waveitem && $waveitem > $gamelevel['curwave']) {
|
||||
$gamelevel['levelinfo'][$level][] = $waveitem;
|
||||
}
|
||||
}
|
||||
|
||||
$gamelevel['curwave'] = $wave;
|
||||
}
|
||||
}
|
||||
|
||||
// cost medals, add exp
|
||||
$curexp = $solorow['exp'] + $reqlevelcfg['medal_cost'];
|
||||
$curlv = $solorow['level'];
|
||||
$curlvcfg = $this->getPlayerLevelInfo($curlv);
|
||||
$uplv_item_list = array();
|
||||
while ($curlvcfg && $curlvcfg['experience'] > 0 && $curexp >= $curlvcfg['experience']) {
|
||||
$curexp -= $curlvcfg['experience'];
|
||||
$curlv++;
|
||||
$curlvcfg = $this->getPlayerLevelInfo($curlv);
|
||||
if ($curlvcfg) {
|
||||
$uplvawards = explode($curlvcfg['level_reward'], '|');
|
||||
foreach ($uplvawards as $uplvitem) {
|
||||
$itemstrs = explode($uplvitem, '|');
|
||||
if (count($itemstrs) < 2) {
|
||||
continue;
|
||||
}
|
||||
$uplv_item_list[] = array(
|
||||
"item_id" => $itemstrs[0],
|
||||
"item_num" => $itemstrs[1],
|
||||
"time" => 0,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$curmedals = $solorow['medals'] - $reqlevelcfg['medal_cost'];
|
||||
$lastredeem = $solorow['lastredeem'];
|
||||
$privilege = new classes\Privilege();
|
||||
$medalsgrowlimit = metatable\getParameterById(MEDAL_LIMIT) + $privilege->getMedalLimitPlus($account_id);
|
||||
if ($solorow['medals'] >= $medalsgrowlimit && $curmedals < $medalsgrowlimit) {
|
||||
$lastredeem = time();
|
||||
}
|
||||
|
||||
$ret = $conn->execScript(
|
||||
'UPDATE solo SET medals=:medals, lastredeem=:lastredeem, level=:level, exp=:exp, gamelevel=:gamelevel, modify_time=:modify_time' .
|
||||
' WHERE accountid=:accountid;',
|
||||
array(
|
||||
':accountid' => $account_id,
|
||||
':medals' => $curmedals,
|
||||
':lastredeem' => $lastredeem,
|
||||
':level' => $curlv,
|
||||
':exp' => $curexp,
|
||||
':gamelevel' => json_encode($gamelevel),
|
||||
':modify_time' => time()
|
||||
)
|
||||
);
|
||||
|
||||
if (!$ret) {
|
||||
phpcommon\sendError(ERR_RETRY + 1, '系统繁忙');
|
||||
return;
|
||||
}
|
||||
|
||||
$addreward = new classes\AddReward();
|
||||
$all_item_list = array();
|
||||
foreach ($item_list as $itemaward) {
|
||||
$items = $addreward->addReward($itemaward['item_id'], $itemaward['item_num'], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => 0,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$uplv_all_item_list = array();
|
||||
foreach ($uplv_item_list as $itemaward) {
|
||||
$items = $addreward->addReward($itemaward['item_id'], $itemaward['item_num'], $account_id, 0, 0);
|
||||
foreach ($items as $i) {
|
||||
array_push($uplv_all_item_list, array(
|
||||
'item_id' => $i['item_id'],
|
||||
'item_num' => $i['item_num'],
|
||||
'time' => 0,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$coin_num = $addreward->getCoinNum($account_id);
|
||||
$diamond_num = $addreward->getDiamondNum($account_id);
|
||||
$adfree = $addreward->getAdfree($account_id);
|
||||
$medals = $addreward->getMedals($account_id);
|
||||
|
||||
$response = array(
|
||||
'errcode' => 0,
|
||||
'errmsg' => '',
|
||||
'level' => $level,
|
||||
'coin_nums' => $coin_num,
|
||||
'diamond_nums' => $diamond_num,
|
||||
'adfree' => $adfree,
|
||||
'medals' => $medals,
|
||||
'item_list' => $item_list,
|
||||
'all_item_list' => $all_item_list,
|
||||
'playerlvup' => array(
|
||||
'item_list' => $uplv_item_list,
|
||||
'all_item_list' => $uplv_all_item_list,
|
||||
)
|
||||
);
|
||||
if ($isbattle) {
|
||||
$response['wave'] = $_REQUEST['wave'];
|
||||
}
|
||||
echo json_encode($response);
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ function getParameterConf()
|
||||
function getParameterById($param_id)
|
||||
{
|
||||
$conf = getParameterConf();
|
||||
$parameter_id = (int)$parameter_id;
|
||||
$parameter_id = (int)$param_id;
|
||||
return array_key_exists($parameter_id, $conf) ? $conf[$parameter_id] : null;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user