game2006api/webapp/services/callback/GameItemMallBuyOk.php
aozhiwei e2478b0757 1
2023-08-07 14:35:46 +08:00

115 lines
3.3 KiB
PHP

<?php
namespace services;
require_once('phpcommon/bchelper.php');
require_once('models/BcOrder.php');
require_once('ShopAddItemService.php');
require_once ('services/callback/BuyPassCbService.php');
require_once ('services/callback/BuyShopGoodsCbService.php');
require_once ('services/callback/common/SignatureService.php');
use phpcommon\SqlHelper;
use models\BcOrder;
/*
const params = {
'c': 'Callback',
'a': 'dispatch',
'action': 'gameItemMallBuyOk',
'trans_id': transId,
'order_id': orderId,
};
*/
class GameItemMallBuyOk {
public function process()
{
SignatureService::web3ServiceCheck();
$transId = getReqVal('trans_id', '');
$orderId = getReqVal('order_id', '');
error_log("GameItemMallBuyOk-------------------");
$orderDb = BcOrder::find($orderId);
if (!$orderDb) {
myself()->_rspErr(2, 'Order does not exist');
return;
}
if ($orderDb['status'] == 1){
myself()->_rspErr(1, 'Order shipped');
return;
}
BcOrder::update($orderDb['order_id'],
array(
'status' => 1
));
if ($orderDb['order_type'] == BcOrder::SPEC_ORDER_TYPE) {
$extData = json_decode($orderDb['ext_data'], true);
switch ($extData['mode']) {
case BcOrder::SHOP_BUY_MODE_NORMAL:
{
$this->procShopBuyModeNormal($orderDb, $extData);
}
break;
default:
{
}
break;
}
}
/*
// 小胡 回调的处理
if ($this->_isVirtualItem($orderDb['item_id'])){
$passCbService = new BuyPassCbService();
$passCbService->process($orderDb);
} else {
// 老宋 处理...
$shopGoodsCbService = new BuyShopGoodsCbService();
$shopGoodsCbService->process($orderDb);
}
*/
myself()->_rspOk();
}
private function procShopBuyModeNormal($orderDb, $extData)
{
$accountId = $orderDb['account_id'];
$itemService = new ShopAddItemService();
myself()->_addLogEx($accountId, "shopBuyNormal", "begin", array(
'param1' => $orderDb['order_id'],
'param2' => json_encode(array(
'item_id' => $orderDb['item_id'],
'item_num' => $orderDb['item_num'],
)
),
'param3' => json_encode($orderDb),
));
$itemId = $orderDb['item_id'];
$itemNum = $orderDb['item_num'];
if ($itemId == V_ITEM_DIAMOND) {
$event = [
'name' => LogService::CEBG_TO_DIAMOND,
'val' => $itemNum
];
LogService::productDiamondCallback(
['account_id' => $accountId],
$event);
}
$itemService->addItemByAccountId($accountId, $itemId, $itemNum);
myself()->_addLogEx($accountId, "shopBuyNormal", "end", array(
'param1' => $orderDb['order_id'],
'param2' => json_encode(array(
'item_id' => $orderDb['item_id'],
'item_num' => $orderDb['item_num'],
)),
'param3' => json_encode($orderDb),
));
}
}