Compare commits

...

11 Commits

Author SHA1 Message Date
songliang
1bd58003dc ... 2023-07-19 11:26:27 +08:00
songliang
457f1ff963 ... 2023-07-17 19:33:50 +08:00
songliang
1fb7c3ad87 ... 2023-07-17 19:24:46 +08:00
songliang
ec615171d3 ... 2023-07-17 17:23:40 +08:00
songliang
05f28d5f65 ... 2023-07-17 17:23:38 +08:00
songliang
3afd541cc6 ... 2023-07-17 17:22:22 +08:00
aozhiwei
dd8668a471 1 2023-07-17 15:27:49 +08:00
songliang
46a2173c2c ... 2023-07-17 15:25:23 +08:00
songliang
145602b391 ... 2023-07-17 15:12:35 +08:00
songliang
ed3fb9f8b0 ... 2023-07-17 12:04:09 +08:00
songliang
04e450ce6c ... 2023-07-17 11:27:14 +08:00
7 changed files with 42 additions and 111 deletions

View File

@ -137,6 +137,7 @@ class FirstTopupController extends BaseAuthedController
'group' => $group, 'group' => $group,
'status' => $status, 'status' => $status,
'reward' => $reward, 'reward' => $reward,
'property_chg' => $propertyChgService->toDto(),
) )
); );
} else if ($test >= 2) { } else if ($test >= 2) {

View File

@ -22,6 +22,8 @@ require_once('services/LuckyBoxService.php');
require_once('services/ActivateNftService.php'); require_once('services/ActivateNftService.php');
require_once('services/BlockChainService.php'); require_once('services/BlockChainService.php');
require_once('services/LogService.php'); require_once('services/LogService.php');
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
require_once('phpcommon/bchelper.php'); require_once('phpcommon/bchelper.php');
@ -334,10 +336,11 @@ class MarketController extends BaseAuthedController
}; };
$conn = myself()->_getSelfMysql(); $conn = myself()->_getSelfMysql();
$now = myself()->_getNowTime();
$counts = $conn->execQuery( $counts = $conn->execQuery(
'SELECT count(idx) as count FROM t_market_store ' . 'SELECT count(idx) as count FROM t_market_store ' .
'WHERE token_type=:token_type AND status=0 ' . 'WHERE token_type=:token_type AND (status=0 OR status=3) AND buytime<:nowThat ' .
$job_filter_fn($job_filter_array) . $job_filter_fn($job_filter_array) .
$lv_filter_fn($lv_filter) . $lv_filter_fn($lv_filter) .
$quality_filter_fn($quality_filter) . $quality_filter_fn($quality_filter) .
@ -348,6 +351,7 @@ class MarketController extends BaseAuthedController
$order_fn($order_method, $order_asc), $order_fn($order_method, $order_asc),
array( array(
':token_type' => $type, ':token_type' => $type,
':nowThat' => $now - 3600 * 24,
) )
); );
@ -362,7 +366,7 @@ class MarketController extends BaseAuthedController
$rows = $conn->execQuery( $rows = $conn->execQuery(
'SELECT * FROM t_market_store ' . 'SELECT * FROM t_market_store ' .
'WHERE token_type=:token_type AND status=0 ' . 'WHERE token_type=:token_type AND (status=0 OR status=3) AND buytime<:nowThat ' .
$job_filter_fn($job_filter_array) . $job_filter_fn($job_filter_array) .
$lv_filter_fn($lv_filter) . $lv_filter_fn($lv_filter) .
$quality_filter_fn($quality_filter) . $quality_filter_fn($quality_filter) .
@ -374,6 +378,7 @@ class MarketController extends BaseAuthedController
'LIMIT ' . $start . ',' . $page_size, 'LIMIT ' . $start . ',' . $page_size,
array( array(
':token_type' => $type, ':token_type' => $type,
':nowThat' => $now - 3600 * 24,
) )
); );
@ -756,10 +761,11 @@ class MarketController extends BaseAuthedController
$goods['amount'] $goods['amount']
); );
if (!$this->markOrderBuyStatus($idx)) { // 不再标记购买状态,改为抢单模式,第一个交易成功者获得商品
$this->_rspErr(1, 'buy failed, update order status failed, idx:' . $idx); // if (!$this->markOrderBuying($idx)) {
return; // $this->_rspErr(1, 'buy failed, update order status failed, idx:' . $idx);
} // return;
// }
$item_id = $goods['item_id']; $item_id = $goods['item_id'];
$item_count = $goods['amount']; $item_count = $goods['amount'];
@ -863,13 +869,15 @@ class MarketController extends BaseAuthedController
// error_log('listMySelledNfts ' . $account . ' ' . $type); // error_log('listMySelledNfts ' . $account . ' ' . $type);
$conn = myself()->_getSelfMysql(); $conn = myself()->_getSelfMysql();
$now = myself()->_getNowTime();
$rows = $conn->execQuery( $rows = $conn->execQuery(
'SELECT * FROM t_market_store ' . 'SELECT * FROM t_market_store ' .
'WHERE owner_address=:account AND token_type=:token_type AND status=0 ', 'WHERE owner_address=:account AND token_type=:token_type AND (status=0 OR status=3) AND buytime<:nowThat ',
array( array(
':account' => $account, ':account' => $account,
':token_type' => $type, ':token_type' => $type,
':nowThat' => $now - 3600 * 24,
) )
); );
@ -891,10 +899,9 @@ class MarketController extends BaseAuthedController
$row = SqlHelper::selectOne( $row = SqlHelper::selectOne(
myself()->_getSelfMysql(), myself()->_getSelfMysql(),
't_market_store', 't_market_store',
array('order_id', 'item_id', 'amount', 's_price', 'owner_address'), array('order_id', 'item_id', 'amount', 's_price', 'owner_address', 'status', 'buytime'),
array( array(
'idx' => $idx, 'idx' => $idx,
'status' => 0,
) )
); );
if (!$row) { if (!$row) {
@ -903,10 +910,17 @@ class MarketController extends BaseAuthedController
if (!$row['item_id']) { if (!$row['item_id']) {
return null; return null;
} }
if (!$row['status']==3 && !$row['status']==0) {
return null;
}
$now = myself()->_getNowTime();
if ($row['buytime'] > $now - 3600 * 24) {
return null;
}
return $row; return $row;
} }
private function markOrderBuyStatus($idx) private function markOrderBuying($idx)
{ {
$r = SqlHelper::update( $r = SqlHelper::update(
myself()->_getSelfMysql(), myself()->_getSelfMysql(),

View File

@ -187,7 +187,6 @@ class ShopController extends BaseAuthedController
$address = $this->_getAddress(); $address = $this->_getAddress();
if ($address) { if ($address) {
// $goods['pending'] = $this->checkPendingBuyGoodsNormal($address, $goods['goods_id'], $goods['shop_id'], $goods['id']);
$goods['pending'] = 0; $goods['pending'] = 0;
} }
} }
@ -391,7 +390,7 @@ class ShopController extends BaseAuthedController
break; break;
} }
SqlHelper::update($conn, 't_shop_buy_order', array('idx' => $order_id), array('status' => $buyStatus)); SqlHelper::update($conn, 't_shop_buy_order', array('order_id' => $order_id), array('status' => $buyStatus));
// 以下是看商品表中是否配置了充值额外奖励 // 以下是看商品表中是否配置了充值额外奖励
$goods = mt\ShopGoods::get($id); $goods = mt\ShopGoods::get($id);
@ -822,7 +821,6 @@ class ShopController extends BaseAuthedController
$goodsList[$i] = mt\Dailyselection::get($selection['grid_' . $i]); $goodsList[$i] = mt\Dailyselection::get($selection['grid_' . $i]);
if ($goodsList[$i]) { if ($goodsList[$i]) {
$goodsList[$i]['count'] = $selection['count_' . $i]; $goodsList[$i]['count'] = $selection['count_' . $i];
// $goodsList[$i]['pending'] = $this->checkPendingBuyGoodsDS($address, $goodsList[$i]['goods_id'], $selection['idx'], $i);
$goodsList[$i]['pending'] = 0; $goodsList[$i]['pending'] = 0;
} }
} }
@ -870,13 +868,6 @@ class ShopController extends BaseAuthedController
} }
$goods_id = $row['goods_id']; $goods_id = $row['goods_id'];
if (!empty($address)) {
// $pending = $this->checkPendingBuyGoodsNormal($address, $goods_id, $row['shop_id'], $id);
// if ($pending) {
// $this->_rspErr(1, 'pending');
// return;
// }
}
$desired_token_type = $row['token_type']; $desired_token_type = $row['token_type'];
$check_token_type = splitStr1($desired_token_type); $check_token_type = splitStr1($desired_token_type);
@ -1343,15 +1334,6 @@ class ShopController extends BaseAuthedController
} }
$free_num = $goods['free_num']; $free_num = $goods['free_num'];
// $pending = $this->checkPendingBuyGoodsNormal($address, $goods_id, $shop_id, $id);
// error_log("getChestItems start " . json_encode(
// array(
// 'goods_id' => $goods_id,
// 'items' => array_keys($record),
// 'free_num' => $free_num,
// 'pending' => 0,
// )
// ));
$this->_rspData( $this->_rspData(
array( array(
@ -1540,83 +1522,6 @@ class ShopController extends BaseAuthedController
} }
} }
private function countBuyGoodsRequestTimesByGoodsId($address, $goodsId)
{
$self = myself();
if (!$self) return;
$conn = $self->_getMysql('');
$sql = "SELECT COUNT(idx) AS cnt FROM t_bc_order WHERE address = '$address' AND item_id = '$goodsId'";
$row = $conn->execQuery($sql);
return $row[0]['cnt'];
}
private function checkPendingBuyGoodsNormal($address, $goodsId, $shop_id, $id)
{
$self = myself();
if (!$self) return;
$conn = $self->_getMysql('');
$rows = SqlHelper::select(
$conn,
't_bc_order',
array('ext_data', 'createtime'),
array(
'address' => $address,
'item_id' => $goodsId,
'status' => 0,
)
);
foreach ($rows as $row) {
if ($row['createtime'] + 15 * 60 < $self->_getNowTime()) continue; // 15分钟内有效
$extData = json_decode($row['ext_data'], true);
// error_log("checkPendingBuyGoodsNormal: " . json_encode($extData));
if ($extData['mode'] == SHOP_BUY_MODE_NORMAL) {
if ($extData['shop_id'] == $shop_id) {
if ($extData['id'] == $id) {
return 1;
}
}
}
}
return 0;
}
private function checkPendingBuyGoodsDS($address, $goodsId, $idx, $grid)
{
$self = myself();
if (!$self) return;
$conn = $self->_getMysql('');
$rows = SqlHelper::select(
$conn,
't_bc_order',
array('ext_data', 'createtime'),
array(
'address' => $address,
'item_id' => $goodsId,
'status' => 0,
)
);
foreach ($rows as $row) {
if ($row['createtime'] + 15 * 60 < $self->_getNowTime()) continue; // 15分钟内有效
$extData = json_decode($row['ext_data'], true);
if ($extData['mode'] == SHOP_BUY_MODE_DAILY_SELECTION) {
if ($extData['idx'] == $idx) {
if ($extData['grid'] == $grid) {
return 1;
}
}
}
}
return 0;
}
private function internalAddItem($propertyChgService, $itemMeta, $count, $sysAdd, $grade = null) private function internalAddItem($propertyChgService, $itemMeta, $count, $sysAdd, $grade = null)
{ {
switch ($itemMeta['type']) { switch ($itemMeta['type']) {

View File

@ -116,11 +116,21 @@ class GameItemMarketBuyOk
private function buyFromMarket($order, $idx) private function buyFromMarket($order, $idx)
{ {
$address = $order['address']; $address = $order['address'];
$goods = $this->getMarketGoods($address, $idx); $goods = $this->getMarketGoodsOnSale($address, $idx);
if (!$goods) { {
error_log('buyFromMarket goods not found, address:' . $address . ' idx:' . $idx);
//埋点
$event = [
'name' => LogService::MARKET_BUY_GOLD,
'val' => $goods['amount']
];
LogService::productGold($event, ['account_id' => $address, 'result' => 'fail']);
}
return;
}
$this->markMarketGoodsSold($address, $idx); $this->markMarketGoodsSold($address, $idx);
$this->_addGoods($address, $goods); $this->_addGoods($address, $goods); {
{
//埋点 //埋点
$event = [ $event = [
'name' => LogService::MARKET_BUY_GOLD, 'name' => LogService::MARKET_BUY_GOLD,
@ -130,14 +140,15 @@ class GameItemMarketBuyOk
} }
} }
private function getMarketGoods($address, $idx) private function getMarketGoodsOnSale($address, $idx)
{ {
$row = SqlHelper::selectOne( $row = SqlHelper::selectOne(
myself()->_getMysql($address), myself()->_getMysql($address),
't_market_store', 't_market_store',
array('order_id', 'item_id', 'amount', 's_price', 'owner_address'), array('order_id', 'item_id', 'amount', 's_price', 'owner_address'),
array( array(
'idx' => $idx 'idx' => $idx,
'status' => 0,
) )
); );
if (!$row) { if (!$row) {