From 20d979b1ece14651b6f95aa5d9fb58d8bafbc4f0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Jul 2024 14:07:07 +0800 Subject: [PATCH 01/13] 1 --- webapp/models/Nft.php | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/models/Nft.php b/webapp/models/Nft.php index 98aa21d3..f75ff077 100644 --- a/webapp/models/Nft.php +++ b/webapp/models/Nft.php @@ -28,6 +28,7 @@ class Nft extends BaseModel const EXPLORER_TYPE = 9; //Explorer const CANDY_TYPE = 10; //CANDY const GOLD_BULLION_TYPE = 11; //金砖 + const GCARD_HERO_TYPE = 12; //游戏内合成的nft英雄 const RING_TYPE = 19; //戒指 const AVATAR_TYPE = 30; //装饰 From 546dd97bd591304bdfc20c560369eff2ff15215c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Jul 2024 19:09:35 +0800 Subject: [PATCH 02/13] 1 --- .../controller/OutAppNftController.class.php | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index 72ef94cc..51e3e2cf 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -442,4 +442,65 @@ class OutAppNftController extends BaseController { return $quality; } + public function getHeroList() + { + $accountId = getReqVal('account_id', ''); + $rows = SqlHelper::ormSelect( + myself()->_getMarketMysql(), + 't_hero', + array( + 'account_id' => $accountId, + ) + ); + $rspData = array( + 'rows' => array() + ); + foreach ($rows as $row) { + $info = array( + 'uniid' => '', + 'net_id' => 0, + 'contract_address' => '', + 'token_id' => '', + 'owner_address' => '', + 'meta_url' => '', + 'name' => '', + 'item_id' => 0, + 'type' => 0, + 'image' => '', + 'on_sale' => 0, + 'detail' => array() + ); + $heroDb = $row; + $info['uniid'] = $heroDb['idx']; + $heroAttrs = emptyReplace(json_decode($heroDb['wealth_attr'], true), array()); + $heroResult = \mt\EconomyAttribute::getAttrValue($heroAttrs); + $wealth = $heroResult['wealth']; + $wealth_rate = $heroResult['wealth_rate']; + $lucky = $heroResult['lucky']; + $lucky_rate = $heroResult['lucky_rate']; + $heroAbility = Hero::abilityInfo($heroDb); + $heroMeta = \mt\Hero::get($heroDb['hero_id']); + if ($heroMeta) { + $itemMeta = \mt\Item::get($heroDb['hero_id']); + $heroAtteMeta = \mt\EconomyAttribute::findByGrade($itemMeta['relationship'],$heroDb['quality']); + //$info['meta_url'] = NFT_META_URL . '/hero/meta/' . $nftDb['net_id'] . '/' . $nftDb['token_id']; + $info['name'] = $heroMeta['name']; + $info['item_id'] = $heroMeta['id']; + $info['type'] = Nft::HERO_TYPE; + $info['image'] = 'https://res2.counterfire.games/nft/meta/' . $heroMeta['id'] . '_' . $this->getRealHeroQuality($heroDb) . '.gif'; + $info['detail']['quality'] = $this->getRealHeroQuality($heroDb); + $info['detail']['max_mining_days'] = $heroAtteMeta['validTime']; + $info['detail']['wealth'] = floor($wealth * (1+$wealth_rate)); + $info['detail']['lucky'] = floor($lucky * (1+$lucky_rate)); + $info['detail']['hp'] = $heroAbility['hp']; + $info['detail']['atk'] = $heroAbility['attack']; + $info['detail']['def'] = $heroAbility['defence']; + $info['detail']['block'] = $heroAbility['block']; + $info['detail']['crit'] = $heroAbility['critical']; + } + array_push($rspData['rows'], $info); + } + myself()->_rspData($rspData); + } + } From 54e4a116953e484fd1d6ba09d22f33bb1029ba13 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 Jul 2024 14:26:47 +0800 Subject: [PATCH 03/13] 1 --- webapp/controller/OutAppNftController.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index 51e3e2cf..4f1b1297 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -446,7 +446,7 @@ class OutAppNftController extends BaseController { { $accountId = getReqVal('account_id', ''); $rows = SqlHelper::ormSelect( - myself()->_getMarketMysql(), + myself()->_getMysql($accountId), 't_hero', array( 'account_id' => $accountId, From fb3873c960f1acb0a098ebebb2b2996d7653b5a7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 Jul 2024 16:59:18 +0800 Subject: [PATCH 04/13] 1 --- .../controller/BlockChainController.class.php | 4 +- .../controller/OutAppMintController.class.php | 110 ++++++++++++++++++ webapp/models/Hero.php | 37 ++++-- 3 files changed, 139 insertions(+), 12 deletions(-) create mode 100644 webapp/controller/OutAppMintController.class.php diff --git a/webapp/controller/BlockChainController.class.php b/webapp/controller/BlockChainController.class.php index 69439337..df13620d 100644 --- a/webapp/controller/BlockChainController.class.php +++ b/webapp/controller/BlockChainController.class.php @@ -124,6 +124,8 @@ class BlockChainController extends BaseAuthedController { switch ($type) { case 1: { + myself()->_rspErr(1, 'server internal error'); + return; $heroDb = Hero::find($uniid); if (!$heroDb) { myself()->_rspErr(1, 'hero not found'); @@ -145,7 +147,7 @@ class BlockChainController extends BaseAuthedController { myself()->_getNowTime(), myself()->_getAddress() ); - Hero::safeUpdateTokenId($heroDb['hero_uniid'], $tokenId); + Hero::safeUpdateTokenId(myself()->_getAccountId(), $heroDb['hero_uniid'], $tokenId); $heroDb = Hero::find($uniid); if (!$heroDb) { myself()->_rspErr(1, 'hero not found'); diff --git a/webapp/controller/OutAppMintController.class.php b/webapp/controller/OutAppMintController.class.php new file mode 100644 index 00000000..5c76ebb8 --- /dev/null +++ b/webapp/controller/OutAppMintController.class.php @@ -0,0 +1,110 @@ + $accountId, + 'uuid' => $uniid + ))); + $heroDb = Hero::findByAccountIdEx($accountId, $uniid); + if (!$heroDb) { + myself()->_rspErr(1, 'hero not found'); + return; + } + /* + if (!$heroDb['seal_type']) { + myself()->_rspErr(1, 'hero no seal'); + return; + }*/ + $isMint = true; + $tokenId = $heroDb['token_id']; + if ($heroDb['token_id'] && $heroDb['activate']) { + myself()->_rspErr(1, 'hero already on chain'); + return; + $isMint = false; + } else if (empty($tokenId) ){ + $tokenId = BuyRecord::genOrderId + ( + GAME_ID, + phpcommon\BC_FUNC_CREATION, + myself()->_getNowTime(), + $accountAddress + ); + Hero::safeUpdateTokenId($accountId, $heroDb['idx'], $tokenId); + $heroDb = Hero::findByAccountIdEx($accountId, $uniid); + if (!$heroDb) { + myself()->_rspErr(1, 'hero not found'); + return; + } + if ($heroDb['token_id'] != $tokenId) { + myself()->_rspErr(500, 'server internal error'); + return; + } + } + + $params = array( + 'c' => 'BcService', + 'a' => 'mintHero', + 'account_id' => $accountId, + 'account_address' => $accountAddress, + 'token_ids' => $tokenId, + 'nft_address' => NORMAL_HERO_CONTRACT_ADDRESS, + 'to_address' => $toAddress, + 'net_id' => NET_ID + ); + error_log(json_encode($params)); + { + $url = self::getWeb3ServiceUrl(); + $response = ''; + if (!phpcommon\HttpClient::get + ($url, + $params, + $response)) { + myself()->_rspErr(500, 'server internal error'); + die(); + return; + } + error_log($response); + $rspObj = json_decode($response, true); + if ($rspObj['errcode'] == 0) { + myself()->_rspData(array( + 'trans_id' => '', + 'trans_req' => $rspObj['trans_req'] + )); + } else { + myself()->_rspErr(500, 'server internal error'); + return; + } + } + } + + private static function getWeb3ServiceUrl() + { + $web3ServiceCluster = require_once('../config/web3service.cluster.php'); + return $web3ServiceCluster[rand() % count($web3ServiceCluster)]; + } + +} diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index cdb3932f..7430d483 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -72,6 +72,22 @@ class Hero extends BaseModel { return self::internalFind($accountId, User::findUserAddress($accountId), $heroUniId); } + public static function findByAccountIdEx($accountId, $heroUniId) + { + $row = SqlHelper::ormSelectOne( + myself()->_getMysql($accountId), + 't_hero', + array( + 'idx' => $heroUniId, + 'account_id' => $accountId, + ) + ); + if ($row) { + $row['hero_uniid'] = $row['idx']; + } + return $row; + } + public static function findByTokenId($tokenId) { $row = SqlHelper::ormSelectOne( @@ -671,18 +687,17 @@ class Hero extends BaseModel { } } - public static function safeUpdateTokenId($heroUniId, $tokenId) + public static function safeUpdateTokenId($accountId, $heroUniId, $tokenId) { - if (self::find($heroUniId)) { - myself()->_getSelfMysql()->execScript( - 'UPDATE t_hero SET token_id=:token_id ' . - 'WHERE idx=:idx AND token_id IS NULL;', - array( - ':idx' => $heroUniId, - ':token_id' => $tokenId, - ) - ); - } + myself()->_getMysql($accountId)->execScript( + 'UPDATE t_hero SET token_id=:token_id ' . + 'WHERE idx=:idx AND account_id=:account_id AND token_id IS NULL;', + array( + ':idx' => $heroUniId, + ':account_id' => $accountId, + ':token_id' => $tokenId, + ) + ); } public static function updateByTokenId($tokenId, $fieldsKv) From 203b393c8927debf20344c68742f537cd7dc80a5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 Jul 2024 23:52:43 +0800 Subject: [PATCH 05/13] 1 --- webapp/controller/BaseAuthedController.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/webapp/controller/BaseAuthedController.class.php b/webapp/controller/BaseAuthedController.class.php index e515ca5d..2f38a71c 100644 --- a/webapp/controller/BaseAuthedController.class.php +++ b/webapp/controller/BaseAuthedController.class.php @@ -88,8 +88,9 @@ class BaseAuthedController extends BaseController { // } // } if (SERVER_ENV == _ONLINE) { - //phpcommon\sendError(1001, 'session expiration'); - //die(); + phpcommon\sendError(1001, 'session expiration'); + die(); + return; } $this->accountId = getReqVal('account_id', ''); $this->sessionId = getReqVal('session_id', ''); From e35f85e2a73183a281d474d061ae25df3aa2309c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Jul 2024 15:44:48 +0800 Subject: [PATCH 06/13] 1 --- doc/AAMarket.py | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/AAMarket.py b/doc/AAMarket.py index d9227b43..7e08d14e 100644 --- a/doc/AAMarket.py +++ b/doc/AAMarket.py @@ -230,7 +230,6 @@ class AAMarket(object): 'params': [ ['net_id', 0, '链id'], ['contract_address', '', 'contract_address'], - ['to', '', '目標address'], ['!tokens', [ ['token_id', '', 'token_id'], ], 'nft list(目前只支持英雄并且只支持一个)'] From 9f2db0f12d6a397cd45ebcab34ef11a3df3dddb1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Jul 2024 16:16:47 +0800 Subject: [PATCH 07/13] 1 --- sql/bcnftdb.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql/bcnftdb.sql b/sql/bcnftdb.sql index 4cb8f8db..26432861 100644 --- a/sql/bcnftdb.sql +++ b/sql/bcnftdb.sql @@ -32,6 +32,7 @@ CREATE TABLE `t_nft` ( `last_owner_address` varchar(60) COMMENT 'last_owner_address', `last_lock_idx` bigint NOT NULL DEFAULT '0' COMMENT 'last_lock_idx', `last_lock_address` varchar(60) COMMENT 'last_lock_address', + `last_lock_sender` varchar(60) COMMENT 'last_lock_sender', `last_lock_time` int(11) NOT NULL DEFAULT '0' COMMENT 'last_lock_time', `creator_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'creator_address', `token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'token_id', @@ -55,6 +56,8 @@ CREATE TABLE `t_nft` ( KEY `idx_net_id_token_type_owner_address_last_owner_address` (`net_id`, `token_type`, `owner_address`, `last_owner_address`), KEY `idx_net_id_token_type_token_id` (`net_id`, `token_type`, `token_id`), KEY `idx_last_owner_address` (`last_owner_address`), + KEY `idx_last_lock_address` (`last_lock_address`), + KEY `idx_last_lock_sender` (`last_lock_sender`), KEY `idx_item_id` (`item_id`), KEY `idx_quality` (`quality`), KEY `idx_last_refresh_meta_time` (`last_refresh_meta_time`), From 443ccb88a689be814082d6c8e26d8a61b2b50a97 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Jul 2024 17:08:45 +0800 Subject: [PATCH 08/13] 1 --- webapp/controller/OutAppNftController.class.php | 8 ++++++++ webapp/models/Nft.php | 1 + 2 files changed, 9 insertions(+) diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index 4f1b1297..3ce337b9 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -350,6 +350,14 @@ class OutAppNftController extends BaseController { $this->fillBoxDetail($info); } } + case Nft::FOUNDER_TAG_TYPE: + { + $info['meta_url'] = 'https://nftmint.counterfire.games/nft/202403/' . $nftDb['token_id']; + $info['name'] = 'Founder’s Tag #1'; + $info['item_id'] = 0; + $info['type'] = $nftDb['token_type']; + $info['image'] = 'https://gateway.pinata.cloud/ipfs/QmNcUxWcNF85mx6aQp7PVNWJ89d9PqMpaHUT9vQTSTatGq'; + } break; } } diff --git a/webapp/models/Nft.php b/webapp/models/Nft.php index f75ff077..14ac81d1 100644 --- a/webapp/models/Nft.php +++ b/webapp/models/Nft.php @@ -29,6 +29,7 @@ class Nft extends BaseModel const CANDY_TYPE = 10; //CANDY const GOLD_BULLION_TYPE = 11; //金砖 const GCARD_HERO_TYPE = 12; //游戏内合成的nft英雄 + const FOUNDER_TAG_TYPE = 13; //游戏内合成的nft英雄 const RING_TYPE = 19; //戒指 const AVATAR_TYPE = 30; //装饰 From c49f7ed3b13ae523851dc841d94fba7bc8b68ca6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Jul 2024 20:47:15 +0800 Subject: [PATCH 09/13] 1 --- webapp/controller/OutAppNftController.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index 3ce337b9..a3a4d730 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -156,6 +156,7 @@ class OutAppNftController extends BaseController { $nftDb = Nft::getNftByNetIdTokenTypeTokenId($netId, $tokenType, $tokenId); switch ($tokenType) { case Nft::HERO_TYPE: + case Nft::GCARD_HERO_TYPE: { $heroDb = Hero::findByTokenId2($tokenId); if (!$heroDb){ @@ -300,6 +301,7 @@ class OutAppNftController extends BaseController { $info['owner_address'] = $nftDb['owner_address']; switch ($nftDb['token_type']) { case Nft::HERO_TYPE: + case Nft::GCARD_HERO_TYPE: { $heroDb = Hero::findByTokenId2($nftDb['token_id']); if ($heroDb) { @@ -350,6 +352,7 @@ class OutAppNftController extends BaseController { $this->fillBoxDetail($info); } } + break; case Nft::FOUNDER_TAG_TYPE: { $info['meta_url'] = 'https://nftmint.counterfire.games/nft/202403/' . $nftDb['token_id']; From 565a1f390de8bb52b1957ccab2c1a8ffaac68072 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2024 10:50:16 +0800 Subject: [PATCH 10/13] 1 --- doc/AAMarket.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doc/AAMarket.py b/doc/AAMarket.py index ac4ed73a..353ca29c 100644 --- a/doc/AAMarket.py +++ b/doc/AAMarket.py @@ -290,4 +290,31 @@ class AAMarket(object): ['trans_req', _common.MFTransactionRequest(), '调用合约参数'], ] }, + { + 'method': 'GET', + 'name': '/api/user/:account_address', + 'desc': '获取用户信息', + 'group': '!AAMarket', + 'url': 'https://market-test.kingsome.cn/api/user/:account_address', + 'params': [ + ], + 'response': [ + _common.RspHead(), + ['contribution_point', 0, '贡献点'], + ['gold', 0, '金币数'], + ] + }, + { + 'method': 'GET', + 'name': '/api/activity/stacking/expected_daily/:account_address', + 'desc': '质押活动-获取每日预期所得', + 'group': '!AAMarket', + 'url': '/api/activity/stacking/expected_daily/:account_address', + 'params': [ + ], + 'response': [ + _common.RspHead(), + ['contribution_point', 0, '贡献点'], + ] + }, ] From 5b019ce741bf67a1f535b2348d5bcc61fd73d07c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2024 13:56:22 +0800 Subject: [PATCH 11/13] 1 --- sql/gamedb.sql | 17 +++++++++++++++++ webapp/controller/OutAppNftController.class.php | 9 +++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/sql/gamedb.sql b/sql/gamedb.sql index fac2b5cc..21543e1f 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -1889,3 +1889,20 @@ CREATE TABLE `t_server_task_battle_count` ( `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`idx`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; + +DROP TABLE IF EXISTS `t_server_task_battle_count`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_server_task_battle_count` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'account_id', + `period` int(11) NOT NULL DEFAULT '0' COMMENT '周期', + `loot_index` int(11) NOT NULL DEFAULT '0' COMMENT '掉落包索引', + `state` int(11) NOT NULL DEFAULT '0' COMMENT '1:总计数 2:循环计数', + `val` bigint(20) NOT NULL DEFAULT '0' COMMENT 'val', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index a3a4d730..b3786f97 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -443,12 +443,9 @@ class OutAppNftController extends BaseController { private function getRealHeroQuality($heroDb) { $quality = $heroDb['quality'];; - if ($heroDb['createtime'] <= 1719985966) { - } else { - $quality = $quality - 1; - if ($quality <= 0) { - $quality = 1; - } + $quality = $quality - 1; + if ($quality <= 0) { + $quality = 1; } return $quality; } From 77c7c122131d3dffb4a39cf3e0ea889d1a9eacf6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2024 14:24:55 +0800 Subject: [PATCH 12/13] 1 --- webapp/services/NftService.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/webapp/services/NftService.php b/webapp/services/NftService.php index d00ae375..50661752 100644 --- a/webapp/services/NftService.php +++ b/webapp/services/NftService.php @@ -18,6 +18,7 @@ class NftService extends BaseService { private static $userData = array(); private static $nftCfg = array( 'hero' => Nft::HERO_TYPE, + 'normal_hero' => Nft::GCARD_HERO_TYPE, 'equip' => Nft::EQUIP_TYPE, 'chip' => Nft::CHIP_TYPE, 'ring' => Nft::RING_TYPE, @@ -36,7 +37,8 @@ class NftService extends BaseService { public static function isHeroOwner($openId, $tokenId) { - return self::internalIsOwner($openId, 'hero', $tokenId); + return self::internalIsOwner($openId, 'hero', $tokenId) || + self::internalIsOwner($openId, 'normal_hero', $tokenId);; } public static function isEquipOwner($openId, $tokenId) @@ -51,7 +53,9 @@ class NftService extends BaseService { public static function getHeros($openId) { - return self::internalGetList($openId, 'hero'); + $heros = self::internalGetList($openId, 'hero'); + $normalHeros = self::internalGetList($openId, 'normal_hero'); + return array_merge($heros, $normalHeros); } public static function getEquips($openId) From 18d75d5dabb3ae3dc227a75e1853141ff4b23f77 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2024 14:26:47 +0800 Subject: [PATCH 13/13] 1 --- webapp/controller/OutAppMintController.class.php | 4 ++++ webapp/controller/OutAppNftController.class.php | 3 +++ 2 files changed, 7 insertions(+) diff --git a/webapp/controller/OutAppMintController.class.php b/webapp/controller/OutAppMintController.class.php index 5c76ebb8..e021ab52 100644 --- a/webapp/controller/OutAppMintController.class.php +++ b/webapp/controller/OutAppMintController.class.php @@ -34,6 +34,10 @@ class OutAppMintController extends BaseController { myself()->_rspErr(1, 'hero not found'); return; } + if ($heroDb['quality'] <= 1) { + myself()->_rspErr(1, 'hero is N quality'); + return; + } /* if (!$heroDb['seal_type']) { myself()->_rspErr(1, 'hero no seal'); diff --git a/webapp/controller/OutAppNftController.class.php b/webapp/controller/OutAppNftController.class.php index a3a4d730..0b1783e2 100644 --- a/webapp/controller/OutAppNftController.class.php +++ b/webapp/controller/OutAppNftController.class.php @@ -467,6 +467,9 @@ class OutAppNftController extends BaseController { 'rows' => array() ); foreach ($rows as $row) { + if ($row['quality'] <= 1) { + continue; + } $info = array( 'uniid' => '', 'net_id' => 0,