_getMarketMysql(), 't_nft', array( 'owner_address' => $account, 'deleted' => 0, ), function ($row) use (&$nftList) { if (self::isVisableNft($row)) { array_push($nftList, $row); } } ); return $nftList; } public static function getChipBlance($account, $tokenId) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft1155', array( 'owner_address' => $account, 'token_id' => $tokenId, ) ); return $row ? $row['balance'] : 0; } public static function getNftListByType($account, $type) { $nftList = array(); SqlHelper::ormSelect( myself()->_getMarketMysql(), 't_nft', array( 'owner_address' => LOCK_CONTRACT_ADDRESS, 'last_lock_address' => $account, 'token_type' => $type, 'deleted' => 0, ), function ($row) use (&$nftList) { array_push($nftList, $row); } ); return $nftList; } public static function getOwnerNftListByType($account, $type) { $nftList = array(); SqlHelper::ormSelect( myself()->_getMarketMysql(), 't_nft', array( 'owner_address' => $account, 'token_type' => $type, 'deleted' => 0, ), function ($row) use (&$nftList) { array_push($nftList, $row); } ); return $nftList; } public static function getNft1155List($account, $type) { switch ($type) { case 3: { $sql = "select * from t_nft1155 where owner_address=:owner_address and token_id>10000000 and balance>0"; }; break; case 5: { $sql = "select * from t_nft1155 where owner_address=:owner_address and token_id<10000000 and balance>0"; }; break; default: { $sql = ""; } } $whereKv = array( 'owner_address' => $account, ); if ($sql) { $list = myself()->_getMarketMysql()->execQuery($sql, $whereKv); } else { $list = array(); } return $list; } public static function getNft($tokenId) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft', array( 'token_id' => $tokenId, ) ); return $row; } public static function getNftByNetIdTokenTypeTokenId($netId, $tokenType, $tokenId) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft', array( 'net_id' => $netId, 'token_id' => $tokenId, 'token_type' => $tokenType, ) ); return $row; } public static function getNftByNetIdContractAddressTokenId($netId, $contractAddress, $tokenId) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft', array( 'net_id' => $netId, 'contract_address' => $contractAddress, 'token_id' => $tokenId, ) ); return $row; } public static function getNftByNetCont($tokenId, $netId, $contractAddress) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft', array( 'token_id' => $tokenId, 'net_id' => $netId, 'contract_address' => strtolower($contractAddress) ) ); return $row; } public static function findNftByOwner($owner, $tokenId) { if (!$owner || !$tokenId) { return; } $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft', array( 'owner_address' => $owner, 'token_id' => $tokenId, ) ); if (!$row) { $row = SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_nft1155', array( 'owner_address' => $owner, 'token_id' => $tokenId, ) ); if ($row) { if ($row['token_id'] > 10000000) { $row['token_type'] = self::CHIP_TYPE; $row['token_state'] = 0; $row['tags'] = ''; } else { $row['token_type'] = self::FRAGMENT_TYPE; $row['token_state'] = 0; $row['tags'] = ''; $row['item_id'] = $row['token_id']; } } } return $row; } // public static function addNftByFragmentBox($itemMeta,$num=0){ // if ($itemMeta) { // $tokenType = Nft::getTokenType($itemMeta); // if ($tokenType == Nft::NONE_TYPE) { // return false; // } else { // SqlHelper::insert( // myself()->_getMarketMysql(), // 't_nft', // array( // 'token_id' => self::genTempTokenId(), // 'token_type' => $tokenType, // 'game_id' => 2006, // 'item_id' => $itemMeta['include_item_id'], // 'owner_address' => myself()->_getOpenId(), // 'createtime' => myself()->_getNowTime(), // 'modifytime' => myself()->_getNowTime(), // ) // ); // return true; // } // } else { // return false; // } // } // public static function addNft($itemMeta){ // if ($itemMeta) { // $tokenID = self::genTempTokenId(); // $tokenType = Nft::getTokenType($itemMeta); // // if ($tokenType == Nft::NONE_TYPE) { // return false; // } else { // SqlHelper::insert( // myself()->_getMarketMysql(), // 't_nft', // array( // 'token_id' => $tokenID, // 'token_type' => $tokenType, // 'game_id' => 2006, // 'item_id' => $itemMeta['id'], // 'owner_address' => myself()->_getOpenId(), // 'createtime' => myself()->_getNowTime(), // 'modifytime' => myself()->_getNowTime(), // ) // ); // return $tokenID; // } // } else { // return false; // } // } private static function parseTags($tagsStr) { $tags = explode('|', $tagsStr); return $tags; } private static function isVisableNft($nftDb) { return in_array($nftDb['token_type'], array( self::HERO_TYPE, self::EQUIP_TYPE, self::CHIP_TYPE, self::BLIND_BOX_TYPE, self::FRAGMENT_TYPE, self::HONOR1_TYPE, self::RING_TYPE, self::GENESIS_TYPE, self::PLANET_TYPE, self::EXPLORER_TYPE )); } public static function genTempTokenId() { $row = SqlHelper::ormSelectOne (myself()->_getSelfMysql(), 't_realtime_data', array( 'name' => 'last_token_idx' ) ); $lastTokenIdx = 0; if ($row) { $lastTokenIdx = $row['value1']; } ++$lastTokenIdx; $tokenId = myself()->_getNowTime() . phpcommon\pad($lastTokenIdx % 999999, 6); if ($row) { SqlHelper::update (myself()->_getSelfMysql(), 't_realtime_data', array( 'name' => 'last_token_idx' ), array( 'value1' => $lastTokenIdx ) ); } else { SqlHelper::insert (myself()->_getSelfMysql(), 't_realtime_data', array( 'name' => 'last_token_idx', 'value1' => $lastTokenIdx, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } return $tokenId; } }