_getSelfMysql(), // 't_hero_skin', // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $skinId // ) // ); // return $row; // } public static function find($skinUniId) { return self::internalFind(myself()->_getAccountId(), myself()->_getAddress(), $skinUniId); } // public static function findBx($accountId,$skinUniId) // { // return self::internalFind($accountId, User::findUserAddress($accountId), $skinUniId); // } public static function findByAccountId($accountId, $skinUniId) { return self::internalFind($accountId, User::findUserAddress($accountId), $skinUniId); } // public static function takeonSkin($skinId,$heroId){ // $row = self::findBx($heroId); // SqlHelper::update( // myself()->_getSelfMysql(), // 't_hero_skin', // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $row['skin_id'] // ), // array( // 'hero_id'=>0 // ) // ); // SqlHelper::upsert( // myself()->_getSelfMysql(), // 't_hero_skin', // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $skinId // ), // array( // 'hero_id'=>$heroId // ), // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $skinId, // 'skin_state' => 0, // 'get_from' => 0, // 'consume_num' => 0, // 'try_expire_at' => 0, // 'hero_id' => $heroId, // 'createtime' => myself()->_getNowTime(), // 'modifytime' => myself()->_getNowTime() // ) // ); // } public static function getSkinList($cb){ SqlHelper::ormSelect( myself()->_getSelfMysql(), 't_hero_skin', array( 'account_id' => myself()->_getAccountId() ), function ($row) use($cb) { $cb($row); } ); foreach (NftService::getHeroSkin(myself()->_getAddress()) as $nftDb) { if (! $nftDb['deleted']){ $row = SqlHelper::ormSelectOne( myself()->_getSelfMysql(), 't_hero_skin', array( 'token_id' => $nftDb['token_id'], ) ); if ($row) { $cb($row); } } } } public static function toDto($meta) { $row = self::find($meta['id']); $is_have = 0; $use_state = 0; if ($row || $meta['isdefaultskin'] == 1){ $is_have = 1; } if ($row && $row['hero_id']){ $use_state = 1; } return array( 'skin_id'=>$meta['id'], 'is_have' => $is_have, 'use_state' => $use_state, ); } // public static function addSkin($itemMeta) // { // $heroId = 0; // if ($itemMeta['isdefaultskin'] == 1){ // $heroId = $itemMeta['playerid']; // } // SqlHelper::upsert( // myself()->_getSelfMysql(), // 't_hero_skin', // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $itemMeta['id'] // ), // array(), // array( // 'account_id' => myself()->_getAccountId(), // 'skin_id' => $itemMeta['id'], // 'skin_state' => 0, // 'get_from' => 0, // 'consume_num' => 0, // 'try_expire_at' => 0, // 'hero_id' => $heroId, // 'createtime' => myself()->_getNowTime(), // 'modifytime' => myself()->_getNowTime() // ) // ); // } private static function internalFind($accountId, $address, $skinUniId) { $row = SqlHelper::ormSelectOne( myself()->_getMysql($accountId), 't_hero_skin', array( 'idx' => $skinUniId, ) ); if ($row) { $row['skin_uniid'] = $row['idx']; if ($row['account_id'] != $accountId) { $openId = $address; if (!NftService::isHeroSkinOwner($openId, $row['token_id'])) { $row = null; } } } return $row; } public static function addFreeHeroSkin($heroSkinMeta) { return self::internalAddHeroSkin( myself()->_getSelfMysql(), $heroSkinMeta, myself()->_getAccountId(), null, self::FREE_STATE); } public static function addHeroSkin($heroSkinMeta) { return self::internalAddHeroSkin( myself()->_getSelfMysql(), $heroSkinMeta, myself()->_getAccountId(), null, self::GETED_STATE); } private static function internalAddHeroSkin($conn, $heroSkinMeta, $accountId, $tokenId,$state) { $fieldsKv = array( 'skin_id' => $heroSkinMeta['id'], 'skin_state' => $state, 'get_from' => 0, 'consume_num' => 0, 'try_expire_at' => 0, 'hero_id' => $heroSkinMeta['playerid'], 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ); if ($accountId) { $fieldsKv['account_id'] = $accountId; } if ($tokenId) { $fieldsKv['token_id'] = $tokenId; } SqlHelper::insert( $conn, 't_hero_skin', $fieldsKv ); } }