225 lines
6.2 KiB
PHP
225 lines
6.2 KiB
PHP
<?php
|
|
|
|
namespace models;
|
|
|
|
require_once('mt/Hero.php');
|
|
require_once('services/NftService.php');
|
|
|
|
use mt;
|
|
use services\NftService;
|
|
use phpcommon\SqlHelper;
|
|
|
|
class HeroSkin extends BaseModel {
|
|
|
|
const GETED_STATE = 0;
|
|
const FREE_STATE = 1;
|
|
|
|
// public static function find($skinId)
|
|
// {
|
|
// $row = SqlHelper::ormSelectOne(
|
|
// myself()->_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
|
|
);
|
|
}
|
|
|
|
}
|