Nft::HERO_TYPE, 'equip' => Nft::EQUIP_TYPE, 'chip' => Nft::CHIP_TYPE, 'ring' => Nft::RING_TYPE, ); public static function isHeroOwner($openId, $tokenId) { return self::internalIsOwner($openId, 'hero', $tokenId); } public static function isEquipOwner($openId, $tokenId) { return self::internalIsOwner($openId, 'equip', $tokenId); } public static function isChipOwner($openId, $tokenId) { return self::internalIsOwner($openId, 'chip', $tokenId); } public static function getHeros($openId) { return self::internalGetList($openId, 'hero'); } public static function getEquips($openId) { return self::internalGetList($openId, 'equip'); } public static function getChips($openId) { return self::internalGetList($openId, 'chip'); } public static function getRing($openId) { return self::internalGetList($openId, 'ring'); } private static function internalGetList($openId, $name) { self::loadNft($openId, $name); return getXVal(self::$userData[$openId], $name . 'List'); } private static function internalIsOwner($openId, $name, $tokenId) { self::loadNft($openId, $name); $nftHash = getXVal(self::$userData[$openId], $name . 'Hash', array()); $nftDb = getXVal($nftHash, $tokenId); return $nftDb && $nftDb['owner_address'] == $openId; } private static function loadNft($openId, $name) { if (!in_array($openId, self::$userData)) { self::$userData[$openId] = array(); } if (!in_array($name . 'List', self::$userData[$openId])) { $listName = $name . 'List'; $hashName = $name . 'Hash'; $tokenType = self::$nftCfg[$name]; self::$userData[$openId][$listName] = Nft::GetNftListByType($openId, $tokenType); self::$userData[$openId][$hashName] = array(); foreach (self::$userData[$openId][$listName] as $nftDb) { self::$userData[$openId][$hashName][$nftDb['token_id']] = $nftDb; } } } // public static function addNft($itemId,$token_id){ // $itemMeta = Item::get($itemId); // if ($itemMeta) { // $tokenType = Nft::getTokenType($itemMeta); // if ($tokenType == Nft::NONE_TYPE) { // myself()->_rspErr(1, 'param item_id error'); // return false; // } else { // SqlHelper::insert( // myself()->_getMarketMysql(), // 't_nft', // array( // 'token_id' => $token_id, // 'token_type' => $tokenType, // 'game_id' => 2006, // 'item_id' => $itemId, // 'owner_address' => myself()->_getOpenId(), // 'createtime' => myself()->_getNowTime(), // 'modifytime' => myself()->_getNowTime(), // ) // ); // return true; // } // } else { // myself()->_rspErr(1, 'param item_id error'); // return false; // } // } }