212 lines
8.0 KiB
PHP
212 lines
8.0 KiB
PHP
<?php
|
|
|
|
require_once('mt/Item.php');
|
|
require_once('mt/Hero.php');
|
|
require_once('mt/Parameter.php');
|
|
|
|
require_once('models/Nft.php');
|
|
require_once('models/Hero.php');
|
|
require_once('models/Gun.php');
|
|
require_once('models/Chip.php');
|
|
require_once('models/Fragment.php');
|
|
require_once('models/BcOrder.php');
|
|
|
|
require_once('services/BlockChainService.php');
|
|
require_once('services/LogService.php');
|
|
|
|
require_once('phpcommon/bchelper.php');
|
|
|
|
use models\BcOrder;
|
|
use phpcommon\SqlHelper;
|
|
use models\Nft;
|
|
use models\Hero;
|
|
use models\Gun;
|
|
use models\Chip;
|
|
use models\Fragment;
|
|
use models\Transaction;
|
|
use services\LogService;
|
|
|
|
class MarketController extends BaseAuthedController {
|
|
|
|
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(
|
|
'pagination' => array()
|
|
);
|
|
SqlHelper::rawQueryPage(
|
|
myself()->_getMySql(''),
|
|
'SELECT * FROM t_market WHERE activated=:activated',
|
|
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) {
|
|
array_push($out['rows'], $this->fillNftIntro($row));
|
|
}
|
|
),
|
|
$out['pagination']
|
|
);
|
|
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'],
|
|
);
|
|
$nftDb = Nft::getNftByNetCont($row['token_id'], $row['net_id'], $row['nft_token']);
|
|
if ($nftDb) {
|
|
$nftDb['detail'] = Nft::toDto($nftDb);
|
|
}
|
|
return $info;
|
|
}
|
|
|
|
}
|