1
This commit is contained in:
commit
805681b86f
@ -2,6 +2,22 @@
|
|||||||
|
|
||||||
import _common
|
import _common
|
||||||
|
|
||||||
|
class NftIntro(object):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.fields = [
|
||||||
|
['idx', 0, 'idx'],
|
||||||
|
['token_id', '', 'token_id'],
|
||||||
|
['token_type', 0, 'nft类型 1:英雄 2:枪支 3:芯片'],
|
||||||
|
['createtime', 0, '创建时间(上架时间)'],
|
||||||
|
['modifytime', 0, '修改时间(更新价格等)'],
|
||||||
|
['s_price', 0, '出售价格-暂定'],
|
||||||
|
['c_name', '', '缓存-名称'],
|
||||||
|
['c_job', 0, '缓存-职业'],
|
||||||
|
['c_lv', 0, '缓存-级别'],
|
||||||
|
['c_id', 0, '缓存-idx'],
|
||||||
|
['details', _common.NftDetail(), 'nft列表'],
|
||||||
|
]
|
||||||
class Market(object):
|
class Market(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -287,4 +303,53 @@ class Market(object):
|
|||||||
_common.NftView(),
|
_common.NftView(),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'name': 'listSellNfts',
|
||||||
|
'desc': '获取上架出售的NFTs',
|
||||||
|
'group': 'Market',
|
||||||
|
'url': 'webapp/index.php?c=Market&a=listSellNfts',
|
||||||
|
'params': [
|
||||||
|
['account', '', '账号id'],
|
||||||
|
['token', '', 'token'],
|
||||||
|
['start', 0, '分页开始偏移'],
|
||||||
|
['page_size', 0, '分页大小'],
|
||||||
|
['order_method', 0, '排序方式 0:默认排序(当前指向1) 1:上架时间 2:价格 3:星级质量 4:等级 5:能量值 6:生命值 7:攻击力 8:防御力'],
|
||||||
|
['order_asc', 0, '排序方向, 0:从小到大 1:从大到小'],
|
||||||
|
['type', 0, '物品类型 1:英雄 2:武器 3:芯片'],
|
||||||
|
['job_filters', '', '职业过滤(用|分割)'],
|
||||||
|
['search_filters', '', '搜索过滤(用|分割)'],
|
||||||
|
['lv_filter', 0, '等级过滤'],
|
||||||
|
['price_filter', '', '价格过滤(用|分割)']
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead(),
|
||||||
|
['total', 0, '出售的列表总数量(当前过滤配置)'],
|
||||||
|
['start', 0, '有效的分页偏移'],
|
||||||
|
['page_size', 0, '有效的分页大小'],
|
||||||
|
['!nfts', [NftIntro()], 'nft列表'],
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'listMyNfts',
|
||||||
|
'desc': '获取自己的NFTs',
|
||||||
|
'group': 'Market',
|
||||||
|
'url': 'webapp/index.php?c=Market&a=listMyNfts',
|
||||||
|
'params': [
|
||||||
|
['account', '', '账号id'],
|
||||||
|
['token', '', 'token'],
|
||||||
|
['start', 0, '分页开始偏移'],
|
||||||
|
['page_size', 0, '分页大小'],
|
||||||
|
['type', 0, '物品类型 1:英雄 2:武器 3:芯片'],
|
||||||
|
['job_filters', '', '职业过滤(用|分割)'],
|
||||||
|
['search_filters', '', '搜索过滤(用|分割)'],
|
||||||
|
['lv_filter', 0, '等级过滤'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead(),
|
||||||
|
['total', 0, '出售的列表总数量(当前过滤配置)'],
|
||||||
|
['start', 0, '有效的分页偏移'],
|
||||||
|
['page_size', 0, '有效的分页大小'],
|
||||||
|
['!nfts', [NftIntro()], 'nft列表'],
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
@ -8,7 +8,7 @@ function add(name) {
|
|||||||
function init() {
|
function init() {
|
||||||
add('fragment');
|
add('fragment');
|
||||||
add('damping');
|
add('damping');
|
||||||
//add('season');
|
add('season');
|
||||||
add('feeback');
|
add('feeback');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ const constant = require('../constant');
|
|||||||
class Season {
|
class Season {
|
||||||
seasonList = [];
|
seasonList = [];
|
||||||
async start() {
|
async start() {
|
||||||
|
console.log("season ranking start1");
|
||||||
while (true) {
|
while (true) {
|
||||||
await this.doRoutine(utils.getUtcTime());
|
await this.doRoutine(utils.getUtcTime());
|
||||||
const nowTime = utils.getUtcTime();
|
const nowTime = utils.getUtcTime();
|
||||||
@ -18,7 +19,7 @@ class Season {
|
|||||||
|
|
||||||
async doRoutine(nowTime) {
|
async doRoutine(nowTime) {
|
||||||
try {
|
try {
|
||||||
console.log("season ranking start");
|
console.log("season ranking start2");
|
||||||
// console.time("season ranking");
|
// console.time("season ranking");
|
||||||
this.seasonList = [];
|
this.seasonList = [];
|
||||||
metaFactory.traverseMetaList("RankSeason", (config, idx) => {
|
metaFactory.traverseMetaList("RankSeason", (config, idx) => {
|
||||||
@ -30,7 +31,7 @@ class Season {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("season ranking");
|
console.log("season ranking",this.seasonList);
|
||||||
if (this.checkSeasonEnd(nowTime)) {
|
if (this.checkSeasonEnd(nowTime)) {
|
||||||
await this.calcRanking(nowTime);
|
await this.calcRanking(nowTime);
|
||||||
}
|
}
|
||||||
|
@ -51,16 +51,18 @@ class BlockChainController extends BaseAuthedController {
|
|||||||
{
|
{
|
||||||
$trans = array();
|
$trans = array();
|
||||||
foreach (Transaction::all() as $tran) {
|
foreach (Transaction::all() as $tran) {
|
||||||
array_push(
|
if (myself()->_getNowTime() - $tran['createtime'] < 24*3600){
|
||||||
$trans,
|
array_push(
|
||||||
array(
|
$trans,
|
||||||
'trans_id' => $tran['trans_id'],
|
array(
|
||||||
'item_id' => $tran['item_id'],
|
'trans_id' => $tran['trans_id'],
|
||||||
'action' => Transaction::getActionDesc($tran),
|
'item_id' => $tran['item_id'],
|
||||||
'status' => Transaction::getStatusDesc($tran),
|
'action' => Transaction::getActionDesc($tran),
|
||||||
'time' => $tran['createtime'],
|
'status' => Transaction::getStatusDesc($tran),
|
||||||
)
|
'time' => $tran['createtime'],
|
||||||
);
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$this->_rspData(array(
|
$this->_rspData(array(
|
||||||
'transactions' => $trans
|
'transactions' => $trans
|
||||||
|
@ -65,6 +65,8 @@ class EventRankingController extends BaseAuthedController
|
|||||||
':type' => $type
|
':type' => $type
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->myRanked['value'] = $this->getMyValue($wave,$type);
|
||||||
$data = $this->paginate($rows,$page,$size);
|
$data = $this->paginate($rows,$page,$size);
|
||||||
$pages = $data['pages'];
|
$pages = $data['pages'];
|
||||||
$rankingList = $data['lists'];
|
$rankingList = $data['lists'];
|
||||||
@ -80,6 +82,7 @@ class EventRankingController extends BaseAuthedController
|
|||||||
':type' => $type
|
':type' => $type
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
$this->myRanked['value'] = $this->getMyValue($wave,$type);
|
||||||
$ranked = 0;
|
$ranked = 0;
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$ranked += 1;
|
$ranked += 1;
|
||||||
@ -111,6 +114,7 @@ class EventRankingController extends BaseAuthedController
|
|||||||
':type' => $type
|
':type' => $type
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
$this->myRanked['value'] = $this->getMyValue($wave,$type);
|
||||||
$data = $this->paginate($rows,$page,$size);
|
$data = $this->paginate($rows,$page,$size);
|
||||||
$pages = $data['pages'];
|
$pages = $data['pages'];
|
||||||
$rankingList = $data['lists'];
|
$rankingList = $data['lists'];
|
||||||
@ -219,6 +223,20 @@ class EventRankingController extends BaseAuthedController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getMyValue($wave,$type){
|
||||||
|
$value = myself()->_getSelfMysql()->execQuery(
|
||||||
|
'SELECT * FROM t_rank_activity ' .
|
||||||
|
'WHERE wave=:wave AND type=:type AND account_id=:account_id ' .
|
||||||
|
"LIMIT 1",
|
||||||
|
array(
|
||||||
|
':wave' => $wave,
|
||||||
|
':type' => $type,
|
||||||
|
':account_id' => myself()->_getAccountId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return $value ? $value[0]['value'] : 0;
|
||||||
|
}
|
||||||
|
|
||||||
private function celAward($wave,$type,$ranked){
|
private function celAward($wave,$type,$ranked){
|
||||||
$rankingMeta = \mt\EventRanking::findByWaveOrType($wave,$type);
|
$rankingMeta = \mt\EventRanking::findByWaveOrType($wave,$type);
|
||||||
$rewardNum = 0;
|
$rewardNum = 0;
|
||||||
@ -253,7 +271,7 @@ class EventRankingController extends BaseAuthedController
|
|||||||
public function settlementRankingAward(){
|
public function settlementRankingAward(){
|
||||||
$id = getReqVal('id', 0);
|
$id = getReqVal('id', 0);
|
||||||
// $currentRankingMeta = mt\EventRanking::getCurrentRanking();
|
// $currentRankingMeta = mt\EventRanking::getCurrentRanking();
|
||||||
// $awardList = array();
|
$awardList = array();
|
||||||
// if ($currentRankingMeta){
|
// if ($currentRankingMeta){
|
||||||
$lastRankingMeta = mt\EventRanking::find($id);
|
$lastRankingMeta = mt\EventRanking::find($id);
|
||||||
if ($lastRankingMeta){
|
if ($lastRankingMeta){
|
||||||
|
@ -21,6 +21,9 @@ require_once('phpcommon/bchelper.php');
|
|||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
use models\BoxOrder;
|
use models\BoxOrder;
|
||||||
use models\Nft;
|
use models\Nft;
|
||||||
|
use models\Hero;
|
||||||
|
use models\Gun;
|
||||||
|
use models\Chip;
|
||||||
use models\BuyRecord;
|
use models\BuyRecord;
|
||||||
use services\MarketService;
|
use services\MarketService;
|
||||||
use services\LuckyBoxService;
|
use services\LuckyBoxService;
|
||||||
@ -534,4 +537,135 @@ class MarketController extends BaseController {
|
|||||||
myself()->_rspOk();
|
myself()->_rspOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function listSellNfts()
|
||||||
|
{
|
||||||
|
$account = getReqVal('account', '');
|
||||||
|
$token = getReqVal('token', '');
|
||||||
|
$start = getReqVal('start', 0);
|
||||||
|
$page_size = getReqVal('page_size', 10);
|
||||||
|
$order_method = getReqVal('order_method', 0);
|
||||||
|
$order_asc = getReqVal('order_asc', 1);
|
||||||
|
$type = getReqVal('type', 1);
|
||||||
|
$job_filters = getReqVal('job_filters', '');
|
||||||
|
$job_filter_array = explode('|', $job_filters);
|
||||||
|
$search_filters = getReqVal('search_filters', '');
|
||||||
|
$search_filter_array = explode('|', $search_filters);
|
||||||
|
$lv_filter = getReqVal('lv_filter', 15);
|
||||||
|
$price_filter = getReqVal('price_filter', '');
|
||||||
|
$price_filter_array = explode('|', $price_filter);
|
||||||
|
|
||||||
|
$conn = myself()->_getMysql('');
|
||||||
|
|
||||||
|
$rows = SqlHelper::ormSelect(
|
||||||
|
$conn,
|
||||||
|
't_market_store'
|
||||||
|
);
|
||||||
|
|
||||||
|
$total = count($rows);
|
||||||
|
$page_end = $start + $page_size;
|
||||||
|
if ($page_end > $total)
|
||||||
|
$page_end = $total;
|
||||||
|
$nfts = array();
|
||||||
|
for ($x = $start; $x < $page_end; $x++) {
|
||||||
|
$row = $rows[$x];
|
||||||
|
$nftDb = Nft::getNft($row['token_id']);
|
||||||
|
if (!$nftDb) {
|
||||||
|
myself()->_rspErr(1, 'nft not exists');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$nft = Nft::toDto($nftDb);
|
||||||
|
|
||||||
|
$t = $row['token_type'];
|
||||||
|
switch($t) {
|
||||||
|
case Nft::HERO_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
case Nft::EQUIP_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
case Nft::CHIP_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$row['details'] = $nft;
|
||||||
|
array_push($nfts, $row);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_rspData(array(
|
||||||
|
"total" => count($rows),
|
||||||
|
"start" => $start,
|
||||||
|
"page_size" => $page_size,
|
||||||
|
'nfts' => $nfts,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function listMyNfts()
|
||||||
|
{
|
||||||
|
$account = getReqVal('account', '');
|
||||||
|
$token = getReqVal('token', '');
|
||||||
|
$start = getReqVal('start', 0);
|
||||||
|
$page_size = getReqVal('page_size', 10);
|
||||||
|
$order_method = getReqVal('order_method', 0);
|
||||||
|
$order_asc = getReqVal('order_asc', 1);
|
||||||
|
$type = getReqVal('type', 1);
|
||||||
|
$job_filters = getReqVal('job_filters', '');
|
||||||
|
$job_filter_array = explode('|', $job_filters);
|
||||||
|
$search_filters = getReqVal('search_filters', '');
|
||||||
|
$search_filter_array = explode('|', $search_filters);
|
||||||
|
$lv_filter = getReqVal('lv_filter', 15);
|
||||||
|
$price_filter = getReqVal('price_filter', '');
|
||||||
|
$price_filter_array = explode('|', $price_filter);
|
||||||
|
|
||||||
|
$conn = myself()->_getMysql('');
|
||||||
|
|
||||||
|
$rows = SqlHelper::ormSelect(
|
||||||
|
$conn,
|
||||||
|
't_market_store'
|
||||||
|
);
|
||||||
|
|
||||||
|
$total = count($rows);
|
||||||
|
$page_end = $start + $page_size;
|
||||||
|
if ($page_end > $total)
|
||||||
|
$page_end = $total;
|
||||||
|
$nfts = array();
|
||||||
|
for ($x = $start; $x < $page_end; $x++) {
|
||||||
|
$row = $rows[$x];
|
||||||
|
$nftDb = Nft::getNft($row['token_id']);
|
||||||
|
if (!$nftDb) {
|
||||||
|
myself()->_rspErr(1, 'nft not exists');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$nft = Nft::toDto($nftDb);
|
||||||
|
|
||||||
|
$t = $row['token_type'];
|
||||||
|
switch($t) {
|
||||||
|
case Nft::HERO_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
case Nft::EQUIP_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
case Nft::CHIP_TYPE: {
|
||||||
|
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$row['details'] = $nft;
|
||||||
|
array_push($nfts, $row);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_rspData(array(
|
||||||
|
"total" => count($rows),
|
||||||
|
"start" => $start,
|
||||||
|
"page_size" => $page_size,
|
||||||
|
'nfts' => $nfts,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ require_once('services/NftService.php');
|
|||||||
require_once('services/FormulaService.php');
|
require_once('services/FormulaService.php');
|
||||||
|
|
||||||
use mt;
|
use mt;
|
||||||
|
use phpcommon;
|
||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
use services\NftService;
|
use services\NftService;
|
||||||
use services\FormulaService;
|
use services\FormulaService;
|
||||||
@ -105,12 +106,17 @@ class Gun extends BaseModel {
|
|||||||
myself()->_getMysql($accountId),
|
myself()->_getMysql($accountId),
|
||||||
't_gun',
|
't_gun',
|
||||||
array(
|
array(
|
||||||
'account_id' => $accountId,
|
|
||||||
'idx' => $gunUniId,
|
'idx' => $gunUniId,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if ($row) {
|
if ($row) {
|
||||||
$row['gun_uniid'] = $row['idx'];
|
$row['gun_uniid'] = $row['idx'];
|
||||||
|
if ($row['account_id'] != $accountId) {
|
||||||
|
$openId = phpcommon\extractOpenId($accountId);
|
||||||
|
if (!NftService::isEquipOwner($openId, $row['token_id'])) {
|
||||||
|
$row = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
|
@ -8,22 +8,25 @@ use phpcommon\SqlHelper;
|
|||||||
class NftActive extends BaseModel
|
class NftActive extends BaseModel
|
||||||
{
|
{
|
||||||
public static function upsert($data){
|
public static function upsert($data){
|
||||||
if ($data['token_id']){
|
// if ($data['token_id']){
|
||||||
$where = array(
|
// $where = array(
|
||||||
'token_id' =>$data['token_id'],
|
// 'token_id' =>$data['token_id'],
|
||||||
'daytime' =>myself()->_getDaySeconds(myself()->_getNowTime()),
|
// 'daytime' =>myself()->_getDaySeconds(myself()->_getNowTime()),
|
||||||
);
|
// );
|
||||||
}else{
|
// }else{
|
||||||
$where = array(
|
// $where = array(
|
||||||
'uniid' =>$data['uniid'],
|
// 'uniid' =>$data['uniid'],
|
||||||
'daytime' =>myself()->_getDaySeconds(myself()->_getNowTime()),
|
// 'daytime' =>myself()->_getDaySeconds(myself()->_getNowTime()),
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
SqlHelper::upsert
|
SqlHelper::upsert
|
||||||
(myself()->_getSelfMysql(),
|
(myself()->_getSelfMysql(),
|
||||||
't_nft_active',
|
't_nft_active',
|
||||||
$where,
|
array(
|
||||||
|
'uniid' =>$data['uniid'],
|
||||||
|
'daytime' =>myself()->_getDaySeconds(myself()->_getNowTime()),
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
|
@ -264,6 +264,28 @@ class User extends BaseModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for ($i = 0; $i < $len - 1; $i++) {
|
||||||
|
for ($j = $i + 1; $j < $len; $j++) {
|
||||||
|
if ($users[$i]['score'] == $users[$j]['score'] &&
|
||||||
|
$users[$i]['score_modifytime'] > $users[$j]['score_modifytime']) {
|
||||||
|
$tmp = $users[$i];
|
||||||
|
$users[$i] = $users[$j];
|
||||||
|
$users[$j] = $tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ($i = 0; $i < $len - 1; $i++) {
|
||||||
|
for ($j = $i + 1; $j < $len; $j++) {
|
||||||
|
if ($users[$i]['score'] == $users[$j]['score'] &&
|
||||||
|
$users[$i]['score_modifytime'] == $users[$j]['score_modifytime'] &&
|
||||||
|
$users[$i]['idx'] < $users[$j]['idx']
|
||||||
|
) {
|
||||||
|
$tmp = $users[$i];
|
||||||
|
$users[$i] = $users[$j];
|
||||||
|
$users[$j] = $tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return $users;
|
return $users;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -994,7 +994,9 @@ class MissionService extends BaseService {
|
|||||||
//(PVE角色NFT每日获得极限(CEG)+PVE武器NFT每日获得极限(CEG))*90%/悬赏任务数量
|
//(PVE角色NFT每日获得极限(CEG)+PVE武器NFT每日获得极限(CEG))*90%/悬赏任务数量
|
||||||
$totalHeroUpLimit = 0;
|
$totalHeroUpLimit = 0;
|
||||||
$totalGunUpLimit = 0;
|
$totalGunUpLimit = 0;
|
||||||
$count = $this->getOfferRewardMissionCount();
|
// $count = $this->getOfferRewardMissionCount();
|
||||||
|
$count = mt\Parameter::getVal
|
||||||
|
('wanted_refresh_mission_num', 0);
|
||||||
$propertyChgService->addUserChg();
|
$propertyChgService->addUserChg();
|
||||||
foreach ($mission['objects'] as $obj) {
|
foreach ($mission['objects'] as $obj) {
|
||||||
switch ($obj['type']) {
|
switch ($obj['type']) {
|
||||||
@ -1074,7 +1076,9 @@ class MissionService extends BaseService {
|
|||||||
|
|
||||||
private function calcCegPreview($objects)
|
private function calcCegPreview($objects)
|
||||||
{
|
{
|
||||||
$count = $this->getOfferRewardMissionCount();
|
// $count = $this->getOfferRewardMissionCount();
|
||||||
|
$count = mt\Parameter::getVal
|
||||||
|
('wanted_refresh_mission_num', 0);
|
||||||
$cegNum = 0;
|
$cegNum = 0;
|
||||||
foreach ($objects as $obj) {
|
foreach ($objects as $obj) {
|
||||||
$type = $obj['type'];
|
$type = $obj['type'];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user