通行证及等级购买

This commit is contained in:
hujiabin 2023-06-19 17:17:34 +08:00
parent 2e05bd176c
commit a6e9ff11f3
11 changed files with 322 additions and 471 deletions

View File

@ -18,6 +18,10 @@ class Pass(object):
_common.RspHead(),
['!time_info', [TimeInfo()], '赛季时间'],
['!reward_info', [Reward()], '任务列表'],
['pass_buy_state', 0, '通行证购买状态 1购买中'],
['pass_price', 0, '通行证价格'],
['lv_buy_state', 0, '通行证经验购买状态 1购买中'],
['lv_price', 0, '通行证经验价格(exp/price)'],
]
},{
'name': 'commit',
@ -47,6 +51,35 @@ class Pass(object):
['award', _common.Award(), '奖励信息'],
['property_chg', _common.PropertyChg(), '属性变更'],
]
},{
'name': 'buyPlatinumPass',
'desc': '购买通行证',
'group': 'Pass',
'url': 'webapp/index.php?c=Pass&a=buyPlatinumPass',
'params': [
_common.ReqHead(),
['price', 0, '价格'],
],
'response': [
_common.RspHead(),
['trans_id', 0, '订单号'],
['params', 0, 'params'],
]
},{
'name': 'buyLevel',
'desc': '购买通行证经验',
'group': 'Pass',
'url': 'webapp/index.php?c=Pass&a=buyLevel',
'params': [
_common.ReqHead(),
['level', 0, '等级'],
['price', 0, '价格'],
],
'response': [
_common.RspHead(),
['trans_id', 0, '订单号'],
['params', 0, 'params'],
]
},
]

View File

@ -1187,7 +1187,7 @@ DROP TABLE IF EXISTS `t_bc_order`;
CREATE TABLE `t_bc_order` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`order_id` varchar(255) COMMENT '订单号',
`order_type` int(11) NOT NULL COMMENT '0: 小胡 ',
`order_type` int(11) NOT NULL COMMENT '0:默认',
`account_id` varchar(60) NOT NULL COMMENT '账户id 只用做事后分析用',
`address` varchar(60) COMMENT 'address',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '0: 支付中 1 已发货',

View File

@ -5,7 +5,7 @@ alter table t_transaction add column `item_num` bigint NOT NULL DEFAULT '0' COMM
CREATE TABLE `t_bc_order` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`order_id` varchar(255) COMMENT '订单号',
`order_type` int(11) NOT NULL COMMENT '0: 小胡 ',
`order_type` int(11) NOT NULL COMMENT '0:默认 ',
`account_id` varchar(60) NOT NULL COMMENT '账户id 只用做事后分析用',
`address` varchar(60) COMMENT 'address',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '0: 支付中 1 已发货',

View File

@ -11,6 +11,7 @@ define('V_ITEM_EXP', 10003); //经验
define('V_ITEM_ACTIVE', 10004); //活跃度
define('V_ITEM_BCEG', 10010); //BCEG
define('V_ITEM_STAR', 10011); //星星
define('V_ITEM_PASS', 10012); //通行证
define('V_ITEM_REVIVE_COIN', 140001); //复活币
define('V_ITEM_HERO_META', 100005); //英雄升级材料
define('V_ITEM_GUN_META', 100006); //枪械升级材料
@ -48,6 +49,8 @@ define('TN_DAILY_PVE_GET_GUN_FRAGMENT_NUM', 9013);
define('TN_DAILY_COMPLETE_TASK_NUM', 9014);
define('TN_DAILY_USED_GOLD_NUM', 9015);
define('TN_DAILY_GET_STAR_NUM', 9016);
define('TN_DAILY_BUY_PASS_STATE', 9017);
define('TN_DAILY_BUY_LEVEL_STATE', 9018);
define('TN_WEEKLY_BEGIN', 10001);
define('TN_WEEKLY_ACTIVE', 10002);

View File

@ -1,458 +1,26 @@
<?php
require_once('mt/Item.php');
require_once('mt/Currency.php');
require_once('mt/Hero.php');
require_once('mt/Parameter.php');
require_once('models/Nft.php');
require_once('models/Withdrawal.php');
require_once('models/Transfer.php');
require_once('models/UserWalletRecord.php');
require_once('models/NftUpEvent.php');
require_once('models/Hero.php');
require_once('models/Gun.php');
require_once('models/Chip.php');
require_once('models/DynData.php');
require_once('models/NftUpReceive.php');
require_once('models/Transaction.php');
require_once('phpcommon/bchelper.php');
use phpcommon\SqlHelper;
use models\Nft;
use models\Withdrawal;
use models\Transfer;
use models\UserWalletRecord;
use models\NftUpEvent;
use models\Hero;
use models\Gun;
use models\Chip;
use models\DynData;
use models\NftUpReceive;
use models\Transaction;
class CallbackController extends BaseController {
private function isTestMode()
private $handlers = array(
'gameItemMallBuyOk' => 'gameItemMallBuyOk',
);
public function dispatch()
{
return isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443 && SERVER_ENV == _TEST;
$action = getReqVal('action', '');
if (key_exists($action, $this->handlers)) {
$this->internalDispatch($this->handlers[$action]);
} else {
$this->_rspErr(500, 'not found');
}
}
public function transfer()
private function internalDispatch($className)
{
$dir = getReqVal('dir', '');
$account = strtolower(getReqVal('account', ''));
$txHash = getReqVal('txhash', '');
$type = getReqVal('type', '');
$value = getReqVal('value', '0');
$gameId = 2006;
$channel = BC_CHANNEL;
$accountId = phpcommon\createAccountId($channel, $gameId, $account);
$conn = myself()->_getMysql($accountId);
if (UserWalletRecord::find($conn, $txHash)) {
myself()->_rspOk();
return;
}
UserWalletRecord::add($conn, $txHash, $dir, $account, $type, $value);
if (!in_array($dir, array(0, 1))){
myself()->_rspErr(1, '');
return;
}
if (!in_array($type, array(1, 2))){
myself()->_rspErr(2, '');
return;
}
if (strlen($value) <= 18){
myself()->_rspErr(4, '');
return;
}
$value = substr($value, 0, -18);
if ($value < 0 || empty($value)) {
myself()->_rspErr(3, '');
return;
}
$gold = 0;
$diamond = 0;
if ($type == 1) {
$gold = $value;
} else {
$diamond = $value;
}
if ($dir == 1) {
$gold = -$gold;
$diamond = -$diamond;
}
$userRow = SqlHelper::ormSelect(
$conn,
't_user',
array(
'account_id' => $accountId,
));
if ($userRow) {
SqlHelper::update(
$conn,
't_user',
array(
'account_id' => $accountId,
),
array(
'gold' => function() use($gold) {
return "CASE WHEN gold + ${gold} < 0 THEN 0 ELSE gold + ${gold} END";
},
'diamond' => function() use($diamond) {
return "CASE WHEN diamond + ${diamond} < 0 THEN 0 ELSE diamond + ${diamond} END";
},
));
} else {
SqlHelper::upsert(
$conn,
't_user_wallet_offline',
array(
'account_id' => $accountId,
),
array(
'gold' => function() use($gold) {
return "CASE WHEN gold + ${gold} < 0 THEN 0 ELSE gold + ${gold} END";
},
'diamond' => function() use($diamond) {
return "CASE WHEN diamond + ${diamond} < 0 THEN 0 ELSE diamond + ${diamond} END";
},
'modifytime' => myself()->_getNowTime()
),
array(
'account_id' => $accountId,
'gold' => $gold,
'diamond' => $diamond,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
));
}
UserWalletRecord::update($conn,
$txHash,
array(
'state' => 1,
'modifytime' => myself()->_getNowTime()
));
myself()->_rspOk();
}
public function heroUpgradeQuality(){
$transId = getReqVal('trans_id', '0');
$tokenId1 = getReqVal('token_id1', '0');
$tokenId2 = getReqVal('token_id2', '0');
if (!$transId || !$tokenId1){
myself()->_rspErr(1, 'param error');
return;
}
$tranDb= Transaction::findEx($transId);
if (!$tranDb){
myself()->_rspErr(1, 'param error');
return;
}
if (NftUpEvent::find($transId)){
myself()->_rspOk();
return;
}
if (! $tranDb['result']){
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId1,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
$param = array(
'trans_id'=>$transId,
'token_id1'=>$tokenId1,
'token_id2'=>$tokenId2,
'token_type'=>1,
);
NftUpReceive::upsert($tranDb['account_id'],$param);
myself()->_rspOk();
return;
}
$heroDb = SqlHelper::ormSelectOne(
myself()->_getMysql(''),
't_hero',
array(
'token_id' => $tokenId1,
)
);
if ( !$heroDb ){
myself()->_rspErr(1, 'token_id param error');
return;
}
$nextQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality']+1);
if (! $nextQualityMeta){
myself()->_rspOk();
return;
}
$heroLucky = \services\FormulaService::Hero_Advanced_Lucky_Value($heroDb['quality']);
$nextHeroLucky = \services\FormulaService::Hero_Advanced_Lucky_Value($heroDb['quality']+1);
$heroTili = \services\FormulaService::Hero_NFT_Maximum_Physical_Strength($heroDb['quality'],$heroLucky);
$nextHeroTili = \services\FormulaService::Hero_NFT_Maximum_Physical_Strength($heroDb['quality']+1,$nextHeroLucky);
SqlHelper::update
( myself()->_getMysql(''),
't_hero',
array(
'token_id' => $tokenId1,
),
array(
'hero_tili' => $heroDb['hero_tili']+($nextHeroTili-$heroTili),
'skill_points' => $heroDb['skill_points'] + $nextQualityMeta['skill_point'],
'quality' => $heroDb['quality']+1,
'advanced_count' => $heroDb['advanced_count'] + 1,
// 'lock_type' => 0,
// 'unlock_time' => 0,
'labour' => 0,
)
);
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId1,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
$param = array(
'trans_id'=>$transId,
'token_id1'=>$tokenId1,
'token_id2'=>$tokenId2,
'token_type'=>1,
);
NftUpReceive::upsert($tranDb['account_id'],$param);
if ($heroDb['quality'] + 1 > $this->_getDynDataV($tranDb['account_id'],TN_HERO_MAX_QUALITY, 0)) {
$this->_setDynDataV($tranDb['account_id'],TN_HERO_MAX_QUALITY, 0, $heroDb['quality'] + 1);
}
myself()->_rspOk();
}
public function gunUpgradeQuality(){
$transId = getReqVal('trans_id', '0');
$tokenId1 = getReqVal('token_id1', '0');
$tokenId2 = getReqVal('token_id2', '0');
if (!$transId || !$tokenId1){
myself()->_rspErr(1, 'param error');
return;
}
$tranDb= Transaction::findEx($transId);
if (!$tranDb){
myself()->_rspErr(1, 'param error');
return;
}
if (NftUpEvent::find($transId)){
myself()->_rspOk();
return;
}
if (! $tranDb['result']){
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId1,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
$param = array(
'trans_id'=>$transId,
'token_id1'=>$tokenId1,
'token_id2'=>$tokenId2,
'token_type'=>2,
);
NftUpReceive::upsert($tranDb['account_id'],$param);
myself()->_rspOk();
return;
}
$gunDb =SqlHelper::ormSelectOne(
myself()->_getMysql($tranDb['account_id']),
't_gun',
array(
'token_id' => $tokenId1,
)
);
if ( !$gunDb ){
myself()->_rspErr(1, 'token_id param error');
return;
}
$nextQualityMeta = mt\GunQuality::getByQuality($gunDb['quality']+1);
if (!$nextQualityMeta) {
myself()->_rspOk();
return;
}
$gunLucky = \services\FormulaService::Weapon_Advanced_Lucky_Value($gunDb['quality']);
$nextGunLucky = \services\FormulaService::Weapon_Advanced_Lucky_Value($gunDb['quality']+1);
$durability = \services\FormulaService::Weapon_NFT_Maximum_Durability($gunDb['quality'],$gunLucky);
$nextDurability = \services\FormulaService::Weapon_NFT_Maximum_Durability($gunDb['quality']+1,$nextGunLucky);
SqlHelper::update
(myself()->_getMysql($tranDb['account_id']),
't_gun',
array(
'token_id' => $tokenId1,
),
array(
'durability' => $gunDb['durability']+($nextDurability-$durability),
'quality' => $gunDb['quality']+1,
// 'lock_type' => 0,
// 'unlock_time' => 0,
'labour' => 0,
)
);
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId1,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
$param = array(
'trans_id'=>$transId,
'token_id1'=>$tokenId1,
'token_id2'=>$tokenId2,
'token_type'=>2,
);
NftUpReceive::upsert($tranDb['account_id'],$param);
if ($gunDb['quality'] + 1 > $this->_getDynDataV($tranDb['account_id'],TN_GUN_MAX_QUALITY, 0)) {
$this->_setDynDataV($tranDb['account_id'],TN_GUN_MAX_QUALITY, 0, $gunDb['quality'] + 1);
}
myself()->_rspOk();
}
public function chipUpgradeGrade(){return;
$transId = getReqVal('trans_id', '0');
$tokenId = getReqVal('token_id', '0');
if (!$transId || !$tokenId){
myself()->_rspErr(1, 'param error');
return;
}
$tranDb= Transaction::findEx($transId);
if (!$tranDb){
myself()->_rspErr(1, 'param error');
return;
}
if (NftUpEvent::find($transId)){
myself()->_rspOk();
return;
}
if (! $tranDb['result']){
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
myself()->_rspOk();
return;
}
$chipDb = SqlHelper::ormSelectOne(
myself()->_getMysql($tranDb['account_id']),
't_chip',
array(
'token_id' => $tokenId
)
);
if ( !$chipDb ){
myself()->_rspErr(1, 'token_id param error');
return;
}
$nextGrade = $chipDb['chip_grade']+1;
if ($nextGrade > 15){
myself()->_rspErr(1, 'Chip Lv upper limit');
return;
}
if ($nextGrade == 3 || $nextGrade == 5){
Chip::updateRandAttr($tranDb['account_id'],$chipDb);
}
$lucky = ltrim(\services\FormulaService::getChipLuckyValue($nextGrade),'-') ;
if ($nextGrade>=5){
$fieldsKv = array(
'lucky_temporary'=>$lucky,
'chip_grade'=>$nextGrade,
'supper_state'=>1,
'modifytime' => myself()->_getNowTime()
);
}else{
$fieldsKv = array(
'lucky_temporary'=>$lucky,
'chip_grade'=>$nextGrade,
'modifytime' => myself()->_getNowTime()
);
}
SqlHelper::update
(myself()->_getMysql($tranDb['account_id']),
't_chip',
array(
'token_id' => $tokenId,
),
$fieldsKv
);
NftUpEvent::add(
array(
'trans_id' => $transId,
'token_id' => $tokenId,
'value' => 1,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
myself()->_rspOk();
}
private function _getDynDataV($accountId,$x, $y, $val = 0){
SqlHelper::ormSelectOne(
myself()->_getMysql($accountId),
't_dyndata',
array(
'account_id' => $accountId,
'x' => $x,
'y' => $y,
)
);
}
private function _setDynDataV($accountId,$x, $y, $val = 0){
SqlHelper::upsert
(myself()->_getMysql($accountId),
't_dyndata',
array(
'account_id' => $accountId,
'x' => $x,
'y' => $y
),
array(
'val' => $val,
'modifytime' => myself()->_getNowTime()
),
array(
'account_id' => $accountId,
'x' => $x,
'y' => $y,
'val' => $val,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
require_once ('services/callback/' . $className . '.php');
$obj = eval("return new services\\" . $className . "();");
$obj->process();
}
}

View File

@ -1,15 +1,21 @@
<?php
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
require_once('services/BlockChainService.php');
require_once('mt/BattlePass.php');
require_once('mt/StarLevel.php');
require_once('models/Pass.php');
require_once('models/RealtimeData.php');
require_once('models/Transaction.php');
require_once('models/BcOrder.php');
use models\Transaction;
use phpcommon\SqlHelper;
use models\Pass;
use models\RealtimeData;
use models\BcOrder;
class PassController extends BaseAuthedController {
private $awardService = null;
@ -40,6 +46,10 @@ class PassController extends BaseAuthedController {
$row = Pass::find($this->currSeasonMeta['id']);
}
$data = emptyReplace(json_decode($row['data'], true), array());
$pass_price = \mt\Parameter::getVal('battlepass_price','');
$lv_price = \mt\Parameter::getVal('battlepass_buy_lv_price','');
$pass_state = $this->_getV(TN_DAILY_BUY_PASS_STATE, 0);
$lv_state = $this->_getV(TN_DAILY_BUY_LEVEL_STATE, 0);
$this->_rspData(array(
'time_info' => array(
'name'=>$this->currSeasonMeta['battlepass_name'],
@ -48,6 +58,10 @@ class PassController extends BaseAuthedController {
'end_time'=>strtotime($this->currSeasonMeta['end_time'])
),
'reward_info' => $data,
'pass_buy_state' => $pass_state,
'pass_price' => $pass_price,
'lv_buy_state' => $lv_state,
'lv_price' => $lv_price,
));
}
@ -170,6 +184,54 @@ class PassController extends BaseAuthedController {
));
}
public function buyPlatinumPass(){
if (empty($this->_getAddress())){
$this->_rspErr(1, 'address is empty');
return;
}
$price = getReqVal('price', '');
if ($price != \mt\Parameter::getVal('battlepass_price','')){
$this->_rspErr(1, 'The price is wrong');
return;
}
$response = services\BlockChainService::gameItemMallBuy(
Transaction::BUY_PASS_ACTION_TYPE,$price,V_ITEM_PASS,1);
$this->_setV(TN_DAILY_BUY_PASS_STATE, 0,1);
BcOrder::upsert($response['trans_id'],array(
'item_id'=>V_ITEM_PASS,
'item_num'=>1,
));
$this->_rspData($response);
}
public function buyLevel(){
if (empty($this->_getAddress())){
$this->_rspErr(1, 'address is empty');
return;
}
$level = getReqVal('level', '');
$price = getReqVal('price', '');
$passMeta = \mt\BattlePass::find($level);
if (!$passMeta){
$this->_rspErr(1, 'param level error or null');
return;
}
$celPrice = ($passMeta['total_exp'] - $this->userInfo['exp']) * \mt\Parameter::getVal('battlepass_buy_lv_price','');
if ($celPrice != $price){
$this->_rspErr(1, 'The price is wrong');
return;
}
$response = services\BlockChainService::gameItemMallBuy(
Transaction::BUY_EXP_ACTION_TYPE,$price,V_ITEM_EXP,$passMeta['total_exp'] - $this->userInfo['exp']);
$this->_setV(TN_DAILY_BUY_LEVEL_STATE, 0,1);
BcOrder::upsert($response['trans_id'],array(
'item_id'=>V_ITEM_EXP,
'item_num'=>$passMeta['total_exp'] - $this->userInfo['exp'],
));
$this->_rspData($response);
}
public function resetPassLevel(){
}

36
webapp/models/BcOrder.php Normal file
View File

@ -0,0 +1,36 @@
<?php
namespace models;
use phpcommon\SqlHelper;
class BcOrder
{
public static function upsert($transId,$fieldsKv){
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_bc_order',
array(
'order_id' => $transId
),
array(
'status' => 1,
'modifytime' => myself()->_getNowTime(),
),
array(
'order_id' => $transId,
'order_type' => getXVal($fieldsKv,'order_type',0),
'account_id' => myself()->_getAccountId(),
'address' => myself()->_getAddress(),
'status' => 0,
'item_id' => $fieldsKv['item_id'],
'item_num' => $fieldsKv['item_num'],
'ext_data' => getXVal($fieldsKv,'ext_data',''),
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
}
}

View File

@ -2,6 +2,10 @@
namespace services;
require_once('models/Transaction.php');
use models\Transaction;
class BlockChainService {
/*
@ -10,6 +14,12 @@ class BlockChainService {
非法的参数,或者签名服挂了,该函数直接中断请求,不会运行到调用方后续逻辑
trans_id订单id
gameItemMallBuy
setv
a
b
c
*/
public static function gameItemMallBuy($actionType, $price, $itemId, $itemNum)

View File

@ -1,10 +0,0 @@
<?php
namespace services;
class BuyLevelCbService
{
}

View File

@ -0,0 +1,118 @@
<?php
namespace services;
require_once('mt/BattlePass.php');
use mt\BattlePass;
use phpcommon\SqlHelper;
class BuyPassCbService
{
public function process($order){
switch ($order['item_id']){
//购买通行证回调
case V_ITEM_PASS : {
$this->_activateUser($order['address']);
}
break;
//购买等级回调
case V_ITEM_EXP : {
$this->_updateUserLevel($order['address'],$order['item_num']);
}
default : {
}
}
}
private function _activateUser($address){
SqlHelper::update
(myself()->_getMysql($address),
't_user',
array(
'address' => $address
),
array(
'activated' => 1,
'activatetime' => myself()->_getNowTime(),
)
);
}
private function _updateUserLevel($address,$exp){
$userDb = SqlHelper::ormSelectOne(
myself()->_getMysql($address),
't_user',
array(
'address' => $address
)
);
$expNew = $userDb['exp'] + $exp;
$levelNew = $userDb['level'];
BattlePass::getExpByLv($levelNew,$expNew);
SqlHelper::update
(myself()->_getMysql($address),
't_user',
array(
'address' => $address
),
array(
'exp' => $expNew,
'level' => $levelNew,
)
);
$userDbNew = SqlHelper::ormSelectOne(
myself()->_getMysql($address),
't_user',
array(
'address' => $address
)
);
$this->_updatePassData($userDbNew);
}
private function _updatePassData($user){
$currSeasonMeta = BattlePass::getCurrentSeason();
$passDb = SqlHelper::ormSelectOne(
myself()->_getMysql($user['address']),
't_user_pass',
array(
'account_id' => $user['account_id'],
'season_id' => $currSeasonMeta['id'],
)
);
$rewards = emptyReplace(json_decode($passDb['data'], true), array());
foreach ($rewards['basic'] as &$reward){
if ($user['level'] >= $reward['level'] && $reward['state']==-1){
$reward['state'] = 0;
}
}
if ($user['activated']){
foreach ($rewards['platinum'] as &$reward){
if ($user['level'] >= $reward['level'] && $reward['state']==-1){
$reward['state'] = 0;
}
}
}
SqlHelper::update(
myself()->_getMysql($user['address']),
't_user_pass',
array(
'account_id' => $user['account_id'],
'season_id' => $currSeasonMeta['id'],
),
array(
'data' => json_encode($rewards),
'modifytime' => myself()->_getNowTime()
)
);
}
}

View File

@ -3,25 +3,56 @@
namespace services;
require_once('phpcommon/bchelper.php');
require_once ('services/callback/BuyPassCbService.php');
require_once('models/Nft.php');
require_once('models/ActivateNft.php');
require_once('models/BuyRecord.php');
require_once('models/ActivateNftEvent.php');
use phpcommon\SqlHelper;
use phpcommon;
use models\Nft;
use models\ActivateNft;
use models\BuyRecord;
use models\ActivateNftEvent;
class ActiveCbService {
class gameItemMallBuyOk {
public function process()
{
$address = getReqVal('address', '');
$orderId = getReqVal('orderId', '');
print_r($address);
$orderDb = SqlHelper::ormSelectOne(
myself()->_getMysql($address),
't_bc_order',
array(
'order_id' => $orderId
)
);
// 小胡 回调的处理
if ($this->_isVirtualItem($orderDb['item_id'])){
$passCbService = new BuyPassCbService();
$passCbService->process($orderDb);
} else {
// 老宋 处理...
}
// 修改订单状态
$this->_updateOrderState($address,$orderId);
}
private function _isVirtualItem($itemId){
return in_array($itemId, array(V_ITEM_EXP, V_ITEM_PASS));
}
private function _updateOrderState($address,$transId){
SqlHelper::update
(myself()->_getMysql($address),
't_bc_order',
array(
'order_id' => $transId
),
array(
'status' => 1,
'modifytime' => myself()->_getNowTime(),
)
);
}
}