2022-04-09 14:35:59 +08:00

147 lines
3.7 KiB
PHP

<?php
namespace models;
require_once('mt/Item.php');
use mt;
use phpcommon\SqlHelper;
class Nft extends BaseModel {
const NONE_TYPE = 0;
const HERO_TYPE = 1;
const EQUIP_TYPE = 2;
const CHIP_TYPE = 3;
public static function getTokenType($itemMeta)
{
switch ($itemMeta['type']) {
case mt\Item::HERO_TYPE:
{
return self::HERO_TYPE;
}
break;
case mt\Item::GUN_TYPE:
{
return self::EQUIP_TYPE;
}
break;
case mt\Item::MATERIAL_TYPE:
{
if ($itemMeta['sub_type'] == mt\Item::MATERIAL_CHIP_SUBTYPE){
return self::CHIP_TYPE;
}
}
break;
}
return self::NONE_TYPE;
}
public static function getNftList($account)
{
$nftList = array();
SqlHelper::ormSelect(
myself()->_getMarketMysql(),
't_nft',
array(
'owner_address' => $account
),
function ($row) use(&$nftList) {
array_push($nftList, $row);
}
);
return $nftList;
}
public static function getNftListByType($account, $type)
{
$nftList = array();
SqlHelper::ormSelect(
myself()->_getMarketMysql(),
't_nft',
array(
'owner_address' => $account,
'token_type' => $type,
),
function ($row) use(&$nftList) {
array_push($nftList, $row);
}
);
return $nftList;
}
public static function getNft($tokenId)
{
$row = SqlHelper::ormSelectOne(
myself()->_getMarketMysql(),
't_nft',
array(
'token_id' => $tokenId,
)
);
return $row;
}
public static function toDto($nftDb)
{
$itemMeta = mt\Item::get($nftDb['item_id']);
if (!$itemMeta){
return null;
}
$nft = array(
'token_id' => $nftDb['token_id'],
'owner_address' => $nftDb['owner_address'],
'owner_name' => '',
'item_id' => $nftDb['item_id'],
'type' => $nftDb['token_type'],
'state' => $nftDb['token_state'],
'image' => 'https://www.cebg.games/res/avatars/' . $itemMeta['id'] . '.png',
'currency_list' => array(),
'transaction_recrod' => array(),
'info' => array(
'name' => $itemMeta['name'],
'attr' => array()
),
'mint_time' => $nftDb['createtime']
);
switch ($nftDb['token_type']) {
case Nft::HERO_TYPE:
{
$heroMeta = mt\Hero::get($nftDb['item_id']);
if ($heroMeta) {
//$nft['info']['name'] = $heroMeta['name'];
$nft['info']['job'] = $heroMeta['herotype'];
$nft['info']['level'] = 1;
$nft['info']['quality'] = 1;
$nft['info']['hp'] = $heroMeta['hp'];
$nft['info']['speed'] = $heroMeta['move_speed'];
$nft['info']['atk'] = $heroMeta['damage'];
$nft['info']['def'] = $heroMeta['defence'];
$nft['info']['advanced_count'] = 0;
$nft['info']['lucky'] = 0;
$nft['info']['success_rate'] = 0;
}
}
break;
case Nft::EQUIP_TYPE:
{
$nft['info']['level'] = 1;
$nft['info']['quality'] = 1;
}
break;
case Nft::CHIP_TYPE:
{
}
break;
default:
{
return null;
}
}
return $nft;
}
}