1
This commit is contained in:
parent
968832e5c4
commit
cfbe50aaa3
@ -1,34 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import _common
|
||||
|
||||
class Market(object):
|
||||
|
||||
def __init__(self):
|
||||
self.apis = [
|
||||
{
|
||||
'name': 'productList',
|
||||
'desc': '获取上架出售的NFTs',
|
||||
'group': 'Market',
|
||||
'url': 'webapp/index.php?c=Market&a=productList',
|
||||
'params': [
|
||||
['page', 0, '第几页数据'],
|
||||
['order_method', 0, '排序方式 0:默认排序(当前指向1) 1:上架时间 2:价格 3:星级质量 4:等级 5:能量值 6:生命值 7:攻击力 8:防御力'],
|
||||
['order_asc', 0, '排序方向, 0:从小到大 1:从大到小'],
|
||||
['type', 0, '物品类型 1:英雄 2:武器 3:芯片 5:碎片'],
|
||||
['job_filters', '', '职业过滤(用|分割)'],
|
||||
['search_filters', '', '搜索过滤(用|分割)'],
|
||||
['lv_filter', 0, '等级过滤'],
|
||||
['quality_filter', 0, '品阶顾虑'],
|
||||
['durability_filter', 0, '能量过滤'],
|
||||
['price_filter', '', '价格过滤(用|分割)'],
|
||||
['amount_filter', '', '数量过滤(低|高)'],
|
||||
['seller', '', '出售方钱包地址'],
|
||||
],
|
||||
'response': [
|
||||
_common.RspHead(),
|
||||
['pagination', _common.Pagination(), '分页信息'],
|
||||
['!rows', [_common.MarketGoods()], '商品列表'],
|
||||
]
|
||||
}
|
||||
]
|
@ -11,9 +11,9 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @api {GET} AA接口升级日志 接口升级日志
|
||||
* @api {GET} AA接口变更日志 接口变更日志
|
||||
* @apiPermission none
|
||||
* @apiGroup 接口升级日志
|
||||
* @apiGroup 接口变更日志
|
||||
* @apiVersion 0.0.1
|
||||
* @apiSuccessExample {json} Success-Response:
|
||||
* 2024/07/25
|
||||
@ -37,6 +37,8 @@
|
||||
* c=User&a=selectFreeItemS
|
||||
* 2024/08/02
|
||||
* c=Battle 改为 c=BattleData
|
||||
* 2024/08/06
|
||||
* 删除 c=Market
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
@ -1,214 +0,0 @@
|
||||
<?php
|
||||
require_once('mt/Hero.php');
|
||||
require_once('models/Nft.php');
|
||||
require_once('models/Hero.php');
|
||||
require_once('models/BcOrder.php');
|
||||
|
||||
require_once('phpcommon/bchelper.php');
|
||||
|
||||
use models\BcOrder;
|
||||
use phpcommon\SqlHelper;
|
||||
use models\Nft;
|
||||
use models\Hero;
|
||||
|
||||
|
||||
class MarketController extends BaseAuthedController {
|
||||
public function _handlePre()
|
||||
{
|
||||
parent::_handlePre();
|
||||
die;
|
||||
}
|
||||
public function productList()
|
||||
{
|
||||
$page = getReqVal('page', 1);
|
||||
$seller = getReqVal('seller', '');
|
||||
$queryData = array();
|
||||
if (!empty($seller)) {
|
||||
$queryData['seller'] = $seller;
|
||||
}
|
||||
$orderBy = '';
|
||||
$orderAsc = 'ASC';
|
||||
if (getReqVal('order_asc', '') == 1) {
|
||||
$orderAsc = 'DESC';
|
||||
}
|
||||
switch (getReqVal('order_method', '')) {
|
||||
case 1:
|
||||
{
|
||||
$orderBy = 'ORDER BY createtime ' . $orderAsc;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
$orderBy = 'ORDER BY length(price) ' . $orderAsc . ', price ' . $orderAsc;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
$orderBy = 'ORDER BY c_quality ' . $orderAsc;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
$orderBy = 'ORDER BY c_lv ' . $orderAsc;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
$orderBy = 'ORDER BY c_durability ' . $orderAsc;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$out = array(
|
||||
'rows' => array(),
|
||||
'pagination' => array()
|
||||
);
|
||||
SqlHelper::rawQueryPage(
|
||||
myself()->_getMySql(''),
|
||||
'SELECT * FROM t_market WHERE activated=:activated AND status = 0',
|
||||
array(
|
||||
':activated' => 1
|
||||
),
|
||||
array(
|
||||
'page' => $page,
|
||||
'perPage' => 8,
|
||||
'filter' => array(
|
||||
'data' => $queryData,
|
||||
'fields' => array(
|
||||
array(
|
||||
'name' => 'seller',
|
||||
'field_name' => 'seller',
|
||||
'cond' => '=',
|
||||
'ignore_empty' => true,
|
||||
),
|
||||
array(
|
||||
'name' => 'type',
|
||||
'field_name' => 'c_type',
|
||||
'cond' => '=',
|
||||
'ignore_empty' => true,
|
||||
),
|
||||
array(
|
||||
'name' => 'job_filters',
|
||||
'field_name' => '',
|
||||
'cond' => 'custom',
|
||||
'ignore_empty' => true,
|
||||
'custom_func' => function () use ($queryData) {
|
||||
$jobFilter = $queryData['job_filters'];
|
||||
$arrJobFilter = explode('|', $jobFilters);
|
||||
$jobs = implode($arrJobFilter);
|
||||
return " AND (state in (${jobs})) ";
|
||||
}
|
||||
),
|
||||
array(
|
||||
'name' => 'search_filters',
|
||||
'field_name' => '',
|
||||
'cond' => 'custom',
|
||||
'ignore_empty' => true,
|
||||
'custom_func' => function () use ($queryData) {
|
||||
$searchFilter = $queryData['search_filters'];
|
||||
$arrSearchFilter = explode('|', $searchFilters);
|
||||
if (count($arrSearchFilter) <= 0) {
|
||||
return ' AND 1=1 ';
|
||||
} else if (count($arrSearchFilter) == 1) {
|
||||
return ' AND c_name=\"' . $arrSearchFilter[0] . '\"';
|
||||
} else if (count($arrSearchFilter) == 2) {
|
||||
return ' AND (c_name=\"'
|
||||
. $arrSearchFilter[0] . '\" OR ' .
|
||||
'token_id=\"' . $arrSearchFilter[1] . '\")';
|
||||
}
|
||||
}
|
||||
),
|
||||
array(
|
||||
'name' => 'lv_filter',
|
||||
'field_name' => 'c_lv',
|
||||
'cond' => '>=',
|
||||
'ignore_empty' => true,
|
||||
),
|
||||
array(
|
||||
'name' => 'quality_filter',
|
||||
'field_name' => 'c_quality',
|
||||
'cond' => '>=',
|
||||
'ignore_empty' => true,
|
||||
),
|
||||
array(
|
||||
'name' => 'durability_filter',
|
||||
'field_name' => 'c_durability',
|
||||
'cond' => '>=',
|
||||
'ignore_empty' => true,
|
||||
),
|
||||
array(
|
||||
'name' => 'price_filter',
|
||||
'field_name' => '',
|
||||
'cond' => 'custom',
|
||||
'ignore_empty' => true,
|
||||
'custom_func' => function () use ($queryData) {
|
||||
$searchFilter = $queryData['price_filters'];
|
||||
$arrSearchFilter = explode('|', $searchFilters);
|
||||
return ' AND (length(price) >= length(\"'
|
||||
. $arrSearchFilter[0] . '\") AND ' .
|
||||
'length(price) <= length(\"' . $arrSearchFilter[1] . '\"))'
|
||||
. ' AND (price >= \"'
|
||||
. $arrSearchFilter[0] . '\" AND '
|
||||
. 'price <= \"' . $arrSearchFilter[1] . '\")';
|
||||
}
|
||||
),
|
||||
array(
|
||||
'name' => 'amount_filter',
|
||||
'field_name' => '',
|
||||
'cond' => 'custom',
|
||||
'ignore_empty' => true,
|
||||
'custom_func' => function () use ($queryData) {
|
||||
$searchFilter = $queryData['amount_filters'];
|
||||
$arrSearchFilter = explode('|', $searchFilters);
|
||||
return ' AND (length(amount) >= length(\"'
|
||||
. $arrSearchFilter[0] . '\") AND ' .
|
||||
'length(amount) <= length(\"' . $arrSearchFilter[1] . '\"))'
|
||||
. ' AND (amount >= \"'
|
||||
. $arrSearchFilter[0] . '\" AND '
|
||||
. 'amount <= \"' . $arrSearchFilter[1] . '\")';
|
||||
}
|
||||
)
|
||||
)
|
||||
),
|
||||
//'orderBy' => $orderBy,
|
||||
'handle' => function ($row) use (&$out) {
|
||||
array_push($out['rows'], $this->fillNftIntro($row));
|
||||
}
|
||||
),
|
||||
$out['pagination']
|
||||
);
|
||||
error_log(json_encode($out));
|
||||
myself()->_rspData($out);
|
||||
}
|
||||
|
||||
private function fillNftIntro($row) {
|
||||
$info = array(
|
||||
'order_id' => $row['order_id'],
|
||||
'token_id' => $row['token_id'],
|
||||
'nft_token' => $row['nft_token'],
|
||||
'amount' => $row['amount'],
|
||||
'seller' => $row['seller'],
|
||||
'currency' => $row['currency'],
|
||||
'price' => $row['update_price'] ? $row['update_price'] : $row['price'],
|
||||
'selltime' => $row['selltime'],
|
||||
'updatetime' => $row['createtime'],
|
||||
'details' => array()
|
||||
);
|
||||
$nftDb = Nft::getNftByNetCont($row['token_id'], $row['net_id'], $row['nft_token']);
|
||||
if ($nftDb) {
|
||||
switch ($nftDb['token_type']) {
|
||||
case Nft::HERO_TYPE:
|
||||
{
|
||||
error_log(json_encode($nftDb));
|
||||
$heroDb = Hero::findByTokenId2($nftDb['token_id']);
|
||||
if ($heroDb){
|
||||
$info['details'] = Hero::toDto($heroDb);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user