Merge branch 'star' of git.kingsome.cn:server/game2006api into star
This commit is contained in:
commit
82cfc37706
@ -409,6 +409,7 @@ class Market(object):
|
|||||||
'group': 'Market',
|
'group': 'Market',
|
||||||
'url': 'webapp/index.php?c=Market&a=sell',
|
'url': 'webapp/index.php?c=Market&a=sell',
|
||||||
'params': [
|
'params': [
|
||||||
|
_common.ReqHead(),
|
||||||
['account', '', '账号id'],
|
['account', '', '账号id'],
|
||||||
['token', '', 'token'],
|
['token', '', 'token'],
|
||||||
['nft_token', '', 'nft_token'],
|
['nft_token', '', 'nft_token'],
|
||||||
@ -424,6 +425,49 @@ class Market(object):
|
|||||||
_common.RspHead()
|
_common.RspHead()
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'name': 'sellCancel',
|
||||||
|
'desc': '下架物品',
|
||||||
|
'group': 'Market',
|
||||||
|
'url': 'webapp/index.php?c=Market&a=sellCancel',
|
||||||
|
'params': [
|
||||||
|
_common.ReqHead(),
|
||||||
|
['account', '', '账号id'],
|
||||||
|
['idx', '', '出售的idx'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead()
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'sellUpdatePrice',
|
||||||
|
'desc': '修改价格',
|
||||||
|
'group': 'Market',
|
||||||
|
'url': 'webapp/index.php?c=Market&a=sellUpdatePrice',
|
||||||
|
'params':[
|
||||||
|
_common.ReqHead(),
|
||||||
|
['account', '', '账号id'],
|
||||||
|
['idx', '', '出售的idx'],
|
||||||
|
['s_price', '', '出售价格USDT'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead()
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'buy',
|
||||||
|
'desc': '购买商品 (金币购买)',
|
||||||
|
'group': 'Market',
|
||||||
|
'url': 'webapp/index.php?c=Market&a=buy',
|
||||||
|
'params': [
|
||||||
|
_common.ReqHead(),
|
||||||
|
['account', '', '账号id'],
|
||||||
|
['idx', '', '出售的idx'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead()
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'name': 'buyNft',
|
'name': 'buyNft',
|
||||||
'desc': '购买NFT',
|
'desc': '购买NFT',
|
||||||
|
@ -37,9 +37,21 @@ use services\LuckyBoxService;
|
|||||||
use services\ActivateNftService;
|
use services\ActivateNftService;
|
||||||
use models\Transaction;
|
use models\Transaction;
|
||||||
|
|
||||||
class MarketController extends BaseController
|
class MarketController extends BaseAuthedController
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public function _handlePre()
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
getReqVal('a', '') != 'eventSellOrder' &&
|
||||||
|
getReqVal('a', '') != 'eventBuyOrder' &&
|
||||||
|
getReqVal('a', '') != 'eventCancelOrder' &&
|
||||||
|
getReqVal('a', '') != 'eventPriceUpdateOrder'
|
||||||
|
) {
|
||||||
|
parent::_handlePre();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function getPreSaleInfo()
|
public function getPreSaleInfo()
|
||||||
{
|
{
|
||||||
$account = strtolower(getReqVal('account', ''));
|
$account = strtolower(getReqVal('account', ''));
|
||||||
@ -913,6 +925,12 @@ class MarketController extends BaseController
|
|||||||
$order_asc = getReqVal('order_asc', 1);
|
$order_asc = getReqVal('order_asc', 1);
|
||||||
$type = getReqVal('type', 1);
|
$type = getReqVal('type', 1);
|
||||||
$job_filters = getReqVal('job_filters', '');
|
$job_filters = getReqVal('job_filters', '');
|
||||||
|
|
||||||
|
$address = $this->_getAddress();
|
||||||
|
if ($address != $account) {
|
||||||
|
$this->_rspErr(1, 'account not match');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (empty($job_filters)) {
|
if (empty($job_filters)) {
|
||||||
$job_filter_array = array();
|
$job_filter_array = array();
|
||||||
} else {
|
} else {
|
||||||
@ -1043,7 +1061,88 @@ class MarketController extends BaseController
|
|||||||
$this->_rspOk();
|
$this->_rspOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buy() {
|
public function sellCancel()
|
||||||
|
{
|
||||||
|
$account = strtolower(getReqVal('account', ''));
|
||||||
|
$idx = getReqVal('idx', '');
|
||||||
|
|
||||||
|
$address = $this->_getAddress();
|
||||||
|
if ($address != $account) {
|
||||||
|
$this->_rspErr(1, 'not your goods, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$goods = $this->getGoodsByIdx($idx);
|
||||||
|
if (!$goods) {
|
||||||
|
$this->_rspErr(1, 'goods not found, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($goods['owner_address'] != $account) {
|
||||||
|
$this->_rspErr(1, 'not your goods, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->addItems($address, $goods['item_id'], $goods['amount'])) {
|
||||||
|
$this->_rspErr(1, "cancel failed, add item failed, idx:" . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$conn = $this->_getMarketMysql('');
|
||||||
|
$r = SqlHelper::update(
|
||||||
|
$conn,
|
||||||
|
't_market_store',
|
||||||
|
array(
|
||||||
|
'idx' => $idx,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'status' => 1,
|
||||||
|
'modifytime' => $this->_getNowTime(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->_rspOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sellUpdatePrice()
|
||||||
|
{
|
||||||
|
$account = strtolower(getReqVal('account', ''));
|
||||||
|
$idx = getReqVal('idx', '');
|
||||||
|
$s_price = getReqVal('s_price', '');
|
||||||
|
|
||||||
|
$address = $this->_getAddress();
|
||||||
|
if ($address != $account) {
|
||||||
|
$this->_rspErr(1, 'not your goods, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$goods = $this->getGoodsByIdx($idx);
|
||||||
|
if (!$goods) {
|
||||||
|
$this->_rspErr(1, 'goods not found, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($goods['owner_address'] != $account) {
|
||||||
|
$this->_rspErr(1, 'not your goods, idx:' . $idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$conn = $this->_getMarketMysql('');
|
||||||
|
$r = SqlHelper::update(
|
||||||
|
$conn,
|
||||||
|
't_market_store',
|
||||||
|
array(
|
||||||
|
'idx' => $idx,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
's_price' => $s_price,
|
||||||
|
'modifytime' => $this->_getNowTime(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->_rspOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buy()
|
||||||
|
{
|
||||||
$account = strtolower(getReqVal('account', ''));
|
$account = strtolower(getReqVal('account', ''));
|
||||||
$idx = getReqVal('idx', '');
|
$idx = getReqVal('idx', '');
|
||||||
|
|
||||||
@ -1053,7 +1152,7 @@ class MarketController extends BaseController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = services\BlockChainService::gameItemMallBuyWithAddress($account,
|
$response = services\BlockChainService::gameItemMallBuy(
|
||||||
Transaction::BUY_GOODS_FROM_MARKET_ACTION_TYPE,
|
Transaction::BUY_GOODS_FROM_MARKET_ACTION_TYPE,
|
||||||
$goods['s_price'],
|
$goods['s_price'],
|
||||||
$goods['item_id'],
|
$goods['item_id'],
|
||||||
@ -1068,7 +1167,6 @@ class MarketController extends BaseController
|
|||||||
$this->_rspData(array(
|
$this->_rspData(array(
|
||||||
'block_chain' => $response,
|
'block_chain' => $response,
|
||||||
));
|
));
|
||||||
|
|
||||||
}
|
}
|
||||||
private function sellMyNft()
|
private function sellMyNft()
|
||||||
{
|
{
|
||||||
@ -1539,6 +1637,21 @@ class MarketController extends BaseController
|
|||||||
return $rows;
|
return $rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addItems($address, $item_id, $amount)
|
||||||
|
{
|
||||||
|
$self = myself();
|
||||||
|
if (!$self) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = $this->addItem($address, $item_id, $amount);
|
||||||
|
if (!$r) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private function decItems($address, $item_id, $amount)
|
private function decItems($address, $item_id, $amount)
|
||||||
{
|
{
|
||||||
$self = myself();
|
$self = myself();
|
||||||
@ -1560,6 +1673,24 @@ class MarketController extends BaseController
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addItem($address, $item_id, $amount)
|
||||||
|
{
|
||||||
|
$self = myself();
|
||||||
|
if (!$self) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
switch ($item_id) {
|
||||||
|
case V_ITEM_GOLD: {
|
||||||
|
$r = $this->addGold($address, $amount);
|
||||||
|
if (!$r) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private function decItem($address, $item_id, $amount)
|
private function decItem($address, $item_id, $amount)
|
||||||
{
|
{
|
||||||
$self = myself();
|
$self = myself();
|
||||||
@ -1578,6 +1709,26 @@ class MarketController extends BaseController
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addGold($address, $amount)
|
||||||
|
{
|
||||||
|
$self = myself();
|
||||||
|
if (!$self) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = $this->updateUserInfo($address, array(
|
||||||
|
'gold' => function () use ($amount) {
|
||||||
|
return "gold + ${amount}";
|
||||||
|
}
|
||||||
|
));
|
||||||
|
|
||||||
|
if (!$r) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private function decGold($address, $amount)
|
private function decGold($address, $amount)
|
||||||
{
|
{
|
||||||
$self = myself();
|
$self = myself();
|
||||||
@ -1590,7 +1741,7 @@ class MarketController extends BaseController
|
|||||||
if ($count < $amount) {
|
if ($count < $amount) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = $this->updateUserInfo($address, array(
|
$r = $this->updateUserInfo($address, array(
|
||||||
'gold' => function () use ($amount) {
|
'gold' => function () use ($amount) {
|
||||||
return "GREATEST(0, gold - ${amount})";
|
return "GREATEST(0, gold - ${amount})";
|
||||||
@ -1710,7 +1861,8 @@ class MarketController extends BaseController
|
|||||||
return phpcommon\bnToStr($ret_price);
|
return phpcommon\bnToStr($ret_price);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getGoodsByIdx($idx) {
|
private function getGoodsByIdx($idx)
|
||||||
|
{
|
||||||
$self = myself();
|
$self = myself();
|
||||||
if (!$self) {
|
if (!$self) {
|
||||||
return null;
|
return null;
|
||||||
@ -1719,11 +1871,15 @@ class MarketController extends BaseController
|
|||||||
$row = SqlHelper::selectOne(
|
$row = SqlHelper::selectOne(
|
||||||
$self->_getMarketMysql(''),
|
$self->_getMarketMysql(''),
|
||||||
't_market_store',
|
't_market_store',
|
||||||
array('item_id', 'amount', 's_price'),
|
array('item_id', 'amount', 's_price', 'owner_address'),
|
||||||
array(
|
array(
|
||||||
'idx' => $idx
|
'idx' => $idx,
|
||||||
|
'status' => 0,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
if ($row['item_id'] == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,65 +83,6 @@ class BlockChainService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function gameItemMallBuyWithAddress($address, $actionType, $price, $itemId, $itemNum)
|
|
||||||
{
|
|
||||||
if (!($actionType > Transaction::BUY_BEGIN_ACTION_TYPE &&
|
|
||||||
$actionType < Transaction::BUY_END_ACTION_TYPE)) {
|
|
||||||
error_log('gameItemMallBuy action_type error:' . $actionType);
|
|
||||||
myself()->_rspErr(500, 'server internal error 1');
|
|
||||||
die();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$account = $address;
|
|
||||||
if (empty($account)) {
|
|
||||||
error_log('gameItemMallBuy address is emtpy:' . myself()->_getAccountId());
|
|
||||||
myself()->_rspErr(500, 'server internal error 2');
|
|
||||||
die();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$params = array(
|
|
||||||
'c' => 'GameItemMall',
|
|
||||||
'a' => 'buy',
|
|
||||||
'account' => $account,
|
|
||||||
'price' => $price,
|
|
||||||
);
|
|
||||||
{
|
|
||||||
$url = self::getWeb3ServiceUrl();
|
|
||||||
$response = '';
|
|
||||||
if (!phpcommon\HttpClient::get
|
|
||||||
($url,
|
|
||||||
$params,
|
|
||||||
$response)) {
|
|
||||||
myself()->_rspErr(500, 'server internal error 3, url:' . $url);
|
|
||||||
die();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
error_log("gameItemMallBuy:" . $response . "url:" . $url);
|
|
||||||
$rspObj = json_decode($response, true);
|
|
||||||
if ($rspObj['errcode'] == 0) {
|
|
||||||
$transId = $rspObj['trans_id'];
|
|
||||||
// Transaction::add(
|
|
||||||
// $transId,
|
|
||||||
// $actionType,
|
|
||||||
// '', //$tokenId,
|
|
||||||
// '', //$tokenType,
|
|
||||||
// 0, //$itemUniId,
|
|
||||||
// $itemId, //$itemId,
|
|
||||||
// $itemNum,
|
|
||||||
// 1
|
|
||||||
// );
|
|
||||||
return array(
|
|
||||||
'trans_id' => $transId,
|
|
||||||
'params' => $rspObj['params']
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
myself()->_rspErr(500, 'server internal error 4' . json_encode($rspObj));
|
|
||||||
die();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$price 是一个小数精确到小数点后5位
|
$price 是一个小数精确到小数点后5位
|
||||||
*/
|
*/
|
||||||
@ -156,7 +97,7 @@ class BlockChainService {
|
|||||||
private static function getWeb3ServiceUrl()
|
private static function getWeb3ServiceUrl()
|
||||||
{
|
{
|
||||||
if (SERVER_ENV == _DEBUG) {
|
if (SERVER_ENV == _DEBUG) {
|
||||||
return 'http://login-test.kingsome.cn/webapp/index.php';
|
return 'https://login-test.kingsome.cn/webapp/index.php';
|
||||||
}
|
}
|
||||||
if (SERVER_ENV == _TEST) {
|
if (SERVER_ENV == _TEST) {
|
||||||
return 'http://127.0.0.1:7672/webapp/index.php';
|
return 'http://127.0.0.1:7672/webapp/index.php';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user