From 7a145ea2af49d791ce36da8e2b035d4462359f3d Mon Sep 17 00:00:00 2001 From: songliang Date: Mon, 12 Dec 2022 10:45:43 +0800 Subject: [PATCH] ... --- doc/Market.py | 2 +- webapp/controller/MarketController.class.php | 94 +++++++++++++++----- 2 files changed, 74 insertions(+), 22 deletions(-) diff --git a/doc/Market.py b/doc/Market.py index 82ae4159..e1afbb7e 100644 --- a/doc/Market.py +++ b/doc/Market.py @@ -339,7 +339,7 @@ class Market(object): ['token', '', 'token'], ['start', 0, '分页开始偏移'], ['page_size', 0, '分页大小'], - ['order_method', 0, '排序方式 0:默认排序(当前指向1) 1:上架时间 2:价格 3:星级质量 4:等级 5:能量值 6:生命值 7:攻击力 8:防御力'], + ['order_method', 0, '排序方式 0:默认排序(当前指向1) 1:等级 2:能量值 3:星级 4:tokenid'], ['order_asc', 0, '排序方向, 0:从小到大 1:从大到小'], ['type', 0, '物品类型 1:英雄 2:武器 3:芯片'], ['job_filters', '', '职业过滤(用|分割)'], diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index bfb31e2b..0bbcc959 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -542,37 +542,89 @@ class MarketController extends BaseController { myself()->_rspOk(); } - private function getNftListByAccountAndType($account, $type) { + private function getNftListByAccountAndType($account, $type, $order_method, $order_asc) + { + $sortByLevel = function ($a, $b) use ($order_asc) { + + }; + $sortByStar = function ($a, $b) use($order_asc) { + + }; + $sortByPower = function ($a, $b) use($order_asc) { + + }; + $sortByTokenId = function ($a, $b) use ($order_asc) { + if ($order_asc == 1) { + return $b['token_id'] - $a['token_id']; + } else { + return $a['token_id'] - $b['token_id']; + } + }; $nfts = array(); switch ($type) { case 1: { - $rows = Nft::getNftListByType($account, $type); - foreach ($rows as &$row) { - $nftDb = Nft::getNft($row['token_id']); - $row['info'] = Nft::toDto($nftDb); - $row['detail'] = Hero::toDtoInfo(Hero::findByTokenId2($row['token_id'])); + $rows = Nft::getNftListByType($account, $type); + foreach ($rows as &$row) { + $nftDb = Nft::getNft($row['token_id']); + $row['info'] = Nft::toDto($nftDb); + $row['detail'] = Hero::toDtoInfo(Hero::findByTokenId2($row['token_id'])); + } + switch ($order_method) { + case 1: + usort($rows, $sortByLevel); + break; + case 2: + usort($rows, $sortByPower); + break; + case 3: + usort($rows, $sortByStar); + break; + } } - } break; + break; case 2: { - $rows = Nft::getNftListByType($account, $type); - foreach ($rows as &$row) { - $nftDb = Nft::getNft($row['token_id']); - $row['info'] = Nft::toDto($nftDb); - $row['detail'] = Gun::toDtoInfo(Gun::findByTokenId2($row['token_id'])); + $rows = Nft::getNftListByType($account, $type); + foreach ($rows as &$row) { + $nftDb = Nft::getNft($row['token_id']); + $row['info'] = Nft::toDto($nftDb); + $row['detail'] = Gun::toDtoInfo(Gun::findByTokenId2($row['token_id'])); + } + switch ($order_method) { + case 1: + usort($rows, $sortByLevel); + break; + case 2: + usort($rows, $sortByPower); + break; + case 3: + usort($rows, $sortByStar); + break; + } } - } break; + break; case 3: { - $rows = Nft::getNft1155List($account, $type); - foreach ($rows as &$row) { - $row['detail'] = Chip::toDto(Chip::getChipByTokenId($row['token_id'])); + $rows = Nft::getNft1155List($account, $type); + foreach ($rows as &$row) { + $row['detail'] = Chip::toDto(Chip::getChipByTokenId($row['token_id'])); + } + switch ($order_method) { + case 1: + usort($rows, $sortByLevel); + break; + case 2: + usort($rows, $sortByPower); + break; + } } - } break; + break; case 4: { - $rows = Nft::getNft1155List($account, $type); - } break; + $rows = Nft::getNft1155List($account, $type); + usort($rows, $sortByTokenId); + } + break; default: { - $rows = array(); - } + $rows = array(); + } } return $rows; }