From 343a36b0bb22ecebc2c54aadd2afe31d51f7f288 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Dec 2022 11:44:19 +0800 Subject: [PATCH 1/5] ... --- .gitignore | 1 + webapp/controller/MarketController.class.php | 66 ++++++++++++++++++-- 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 15c2cfcd..b0dba552 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ nginx.htaccess .idea/ .vscode/ webapp/logs +._* diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index 3be14b33..b84ab3c6 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -578,7 +578,8 @@ class MarketController extends BaseController { if (in_array($row['info']['info']['job'], $job)==false) continue; if ($row['detail']['hero_lv']<$lv) continue; if (count($search)>0) { - if (!(in_array($row['detail']['hero_name'], $search) || in_array($row['detail']['token_id'], $search))) continue; + $searchLower = array_map('strtolower', $search); + if (!(in_array(strtolower($row['detail']['hero_name']), $searchLower) || in_array(strtolower($row['detail']['token_id']), $searchLower))) continue; } array_push($nfts, $row); } @@ -666,17 +667,69 @@ class MarketController extends BaseController { $job_filter_array = explode('|', $job_filters); $search_filters = getReqVal('search_filters', ''); $search_filter_array = explode('|', $search_filters); - $lv_filter = getReqVal('lv_filter', 15); + $lv_filter = getReqVal('lv_filter', 1); + $quality_filter = getReqVal('quality_filter', 1); + $durability_filter = getReqVal('durability_filter', 0); $price_filter = getReqVal('price_filter', ''); $price_filter_array = explode('|', $price_filter); + $job_filter_fn = function ($f) { + return ''; + }; + $lv_filter_fn = function ($f) { + $f = (int) $f; + return 'AND c_lv>=' . $f. ' '; + }; + $quality_filter_fn = function ($f) { + $f = (int) $f; + return 'AND c_quality>=' . $f. ' '; + }; + $durability_filter_fn = function ($f) { + $f = (int) $f; + return 'AND c_durability>=' . $f. ' '; + }; + $search_filter_fn = function ($f) { + return ''; + }; + + $order_fn = function ($method, $asc) { + switch ($method) { + case 2: + return 'ORDER BY s_price ' . ($asc == 0 ? 'ASC' : 'DESC' . ' '); + break; + case 3: + return 'ORDER BY c_quality ' . ($asc == 0 ? 'ASC' : 'DESC' . ' '); + break; + case 4: + return 'ORDER BY c_lv ' . ($asc == 0 ? 'ASC' : 'DESC' . ' '); + break; + case 5: + return 'ORDER BY c_durability ' . ($asc == 0 ? 'ASC' : 'DESC' . ' '); + break; + + // 所有其他不正常的排序都执行最新上架 + case 1: + default: + return 'ORDER BY createtime ' . ($asc == 0 ? 'ASC' : 'DESC' . ' '); + break; + } + return ''; + }; + $conn = myself()->_getMysql(''); - $rows = SqlHelper::ormSelect( - $conn, - 't_market_store', + $rows = $conn->execQuery( + 'SELECT * FROM t_market_store '. + 'WHERE token_type=:token_type '. + $job_filter_fn($job_filter_array). + $lv_filter_fn($lv_filter). + $quality_filter_fn($quality_filter). + $durability_filter_fn($durability_filter). + $search_filter_fn($search_filter_array). + $order_fn($order_method, $order_asc). + 'LIMIT '.$start.','.$page_size, array( - 'token_type' => $type + ':token_type' => $type, ) ); @@ -777,6 +830,7 @@ class MarketController extends BaseController { } public function sellMyNft() { + $account = getReqVal('account', ''); $token = getReqVal('token', ''); $nft_token = getReqVal('nft_token', ''); From bc7353bd1cef8a8b0c814da69cc51ce8ed4c209e Mon Sep 17 00:00:00 2001 From: songliang Date: Thu, 15 Dec 2022 13:15:38 +0800 Subject: [PATCH 2/5] ... --- webapp/controller/MarketController.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index b84ab3c6..cce70dab 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -604,7 +604,7 @@ class MarketController extends BaseController { $row['detail'] = Gun::toDtoInfo(Gun::findByTokenId2($row['token_id'])); if ($row['detail']['gun_lv']<$lv) continue; if (count($search)>0) { - if (!(in_array($rwo['detail']['gun_name'], $search) || in_array($row['detail']['token_id'], $search))) continue; + if (!(in_array($row['detail']['gun_name'], $search) || in_array($row['detail']['token_id'], $search))) continue; } array_push($nfts, $row); } From 5ee9fd8d66179e249f71c7a9efba7495dcf02a52 Mon Sep 17 00:00:00 2001 From: songliang Date: Thu, 15 Dec 2022 14:19:02 +0800 Subject: [PATCH 3/5] ... --- doc/Market.py | 2 ++ webapp/controller/MarketController.class.php | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/Market.py b/doc/Market.py index ef5f8e91..d11b06d2 100644 --- a/doc/Market.py +++ b/doc/Market.py @@ -345,6 +345,8 @@ class Market(object): ['job_filters', '', '职业过滤(用|分割)'], ['search_filters', '', '搜索过滤(用|分割)'], ['lv_filter', 0, '等级过滤'], + ['quality_filter', 0, '品阶顾虑'], + ['durability_filter', 0, '能量过滤'], ], 'response': [ _common.RspHead(), diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index cce70dab..90f4310a 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -541,7 +541,7 @@ class MarketController extends BaseController { myself()->_rspOk(); } - private function getNftListByAccountAndType($account, $type, $order_method, $order_asc, $job, $search, $lv) + private function getNftListByAccountAndType($account, $type, $order_method, $order_asc, $job, $search, $lv, $quality, $durability) { $sortByLevel = function ($a, $b) use ($order_asc) { return ($order_asc == 1 ? 1 : -1) * ($b['detail']['hero_lv'] - $a['detail']['hero_lv']); @@ -577,6 +577,8 @@ class MarketController extends BaseController { $row['detail'] = Hero::toDtoInfo(Hero::findByTokenId2($row['token_id'])); if (in_array($row['info']['info']['job'], $job)==false) continue; if ($row['detail']['hero_lv']<$lv) continue; + if ($row['detail']['quality']<$quality) continue; + if ($row['detail']['hero_tili']<$durability) continue; if (count($search)>0) { $searchLower = array_map('strtolower', $search); if (!(in_array(strtolower($row['detail']['hero_name']), $searchLower) || in_array(strtolower($row['detail']['token_id']), $searchLower))) continue; @@ -603,8 +605,11 @@ class MarketController extends BaseController { $row['info'] = Nft::toDto($nftDb); $row['detail'] = Gun::toDtoInfo(Gun::findByTokenId2($row['token_id'])); if ($row['detail']['gun_lv']<$lv) continue; + if ($row['detail']['quality']<$quality) continue; + if ($row['detail']['durability']<$durability) continue; if (count($search)>0) { - if (!(in_array($row['detail']['gun_name'], $search) || in_array($row['detail']['token_id'], $search))) continue; + $searchLower = array_map('strtolower', $search); + if (!(in_array(strtolower($row['detail']['gun_name']), $searchLower) || in_array(strtolower($row['detail']['token_id']), $searchLower))) continue; } array_push($nfts, $row); } @@ -802,9 +807,11 @@ class MarketController extends BaseController { } $lv_filter = getReqVal('lv_filter', 15); + $quality_filter = getReqVal('quality_filter', 15); + $durability_filter = getReqVal('durability_filter', 15); $account = '0x9a4d9dd2bfcad659975f0f5a480625c7929e9385'; - $rows = $this->getNftListByAccountAndType($account, $type, $order_method, $order_asc, $job_filter_array, $search_filter_array, $lv_filter); + $rows = $this->getNftListByAccountAndType($account, $type, $order_method, $order_asc, $job_filter_array, $search_filter_array, $lv_filter, $quality_filter, $durability_filter); $total = count($rows); $page_end = $start + $page_size; From 6ccc467bcef85864a5fb946afc317319c1e8af06 Mon Sep 17 00:00:00 2001 From: songliang Date: Thu, 15 Dec 2022 14:33:34 +0800 Subject: [PATCH 4/5] ... --- doc/Market.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Market.py b/doc/Market.py index d11b06d2..0747c547 100644 --- a/doc/Market.py +++ b/doc/Market.py @@ -319,6 +319,8 @@ class Market(object): ['job_filters', '', '职业过滤(用|分割)'], ['search_filters', '', '搜索过滤(用|分割)'], ['lv_filter', 0, '等级过滤'], + ['quality_filter', 0, '品阶顾虑'], + ['durability_filter', 0, '能量过滤'], ['price_filter', '', '价格过滤(用|分割)'] ], 'response': [ From 3a5a540cda2dba8d239478f81ad2a03e9b919bce Mon Sep 17 00:00:00 2001 From: songliang Date: Thu, 15 Dec 2022 14:49:08 +0800 Subject: [PATCH 5/5] ... --- webapp/controller/MarketController.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index 90f4310a..cfca7794 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -864,8 +864,10 @@ class MarketController extends BaseController { 'modifytime' => myself()->_getNowTime(), 's_price' => $s_price, 'c_name' => $nftDetail['info']['name'], - 'c_job' => isset($nftDetail['info']['job']) ? $nftDetail['info']['job'] : -1, - 'c_lv' => isset($nftDetail['info']['level']) ? $nftDetail['info']['level'] : -1, + 'c_job' => isset($nftDetail['info']['job']) ? $nftDetail['info']['job'] : 0, + 'c_lv' => isset($nftDetail['info']['level']) ? $nftDetail['info']['level'] : 0, + 'c_quality' => isset($nftDetail['info']['quality']) ? $nftDetail['info']['quality'] : 0, + 'c_durability' => isset($nftDetail['info']['durability']) ? $nftDetail['info']['durability'] : 0, 'c_id' => $nftDetail['item_id'], ) );