2023-09-22 19:26:31 +08:00

141 lines
3.8 KiB
PHP

<?php
namespace models;
use mt;
use phpcommon\SqlHelper;
use services\NftService;
class Avatar extends BaseModel
{
public static function find($avatarUniId){
return self::internalFind(myself()->_getAccountId(), myself()->_getAddress(), $avatarUniId);
}
private static function internalFind($accountId, $address, $avatarUniId)
{
$row = SqlHelper::ormSelectOne(
myself()->_getMysql($accountId),
't_avatar',
array(
'idx' => $avatarUniId,
)
);
if ($row) {
$row['avatar_uniid'] = $row['idx'];
if ($row['account_id'] != $accountId) {
$openId = $address;
if (!NftService::isAvatarOwner($openId, $row['token_id'])) {
$row = null;
}
}
}
return $row;
}
public static function getAvatarByHeroIdx($heroUniid){
$rows = SqlHelper::ormSelect(
myself()->_getSelfMysql(),
't_avatar',
array(
'hero_idx' => $heroUniid,
)
);
return $rows;
}
public static function getOneByType($heroUniid,$itemType){
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_avatar',
array(
'hero_idx' => $heroUniid,
'item_type' => $itemType,
)
);
return $row;
}
public static function getAvatarList($cb){
SqlHelper::ormSelect(
myself()->_getSelfMysql(),
't_avatar',
array(
'account_id' => myself()->_getAccountId()
),
function ($row) use($cb) {
$cb($row);
}
);
foreach (NftService::getAvatar(myself()->_getAddress()) as $nftDb) {
if (! $nftDb['deleted']){
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_avatar',
array(
'token_id' => $nftDb['token_id'],
)
);
$cb($row);
}
}
}
public static function addAvatar($avatarMeta){
SqlHelper::insert(
myself()->_getSelfMysql(),
't_avatar',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $avatarMeta['id'],
'item_type' => $avatarMeta['sub_type'],
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
}
public static function equipUpdate($avatarDb,$heroUniid){
$row = self::getOneByType($heroUniid,$avatarDb['item_type']);
if ($row){
SqlHelper::update(
myself()->_getSelfMysql(),
't_avatar',
array(
'idx' => $row['idx'],
),
array(
'status' => 0,
'hero_idx' => null,
'modifytime' => myself()->_getNowTime(),
)
);
}
SqlHelper::update(
myself()->_getSelfMysql(),
't_avatar',
array(
'idx' => $avatarDb['idx'],
),
array(
'status' => 1,
'hero_idx' => $heroUniid,
'modifytime' => myself()->_getNowTime(),
)
);
}
public static function update($avatarUniid,$feildKv){
SqlHelper::update(
myself()->_getSelfMysql(),
't_avatar',
array(
'idx' => $avatarUniid,
),
$feildKv
);
}
}