Merge branch 'hjb' of git.kingsome.cn:server/game2006api into hjb
This commit is contained in:
commit
855c07b379
@ -1,123 +1,149 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import _common
|
import _common
|
||||||
|
|
||||||
class ComputingPower(object):
|
class ComputingPower(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.apis = [
|
self.apis = [
|
||||||
{
|
{
|
||||||
'name': 'info',
|
'name': 'info',
|
||||||
'desc': '获取算力信息',
|
'desc': '获取算力信息',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=info',
|
'url': 'webapp/index.php?c=ComputingPower&a=info',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['info', _common.ComputingPower(), '算力信息']
|
['info', _common.ComputingPower(), '算力信息']
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'getCrystalUi',
|
'name': 'getCrystalUi',
|
||||||
'desc': '获取晶体ui信息',
|
'desc': '获取晶体ui信息',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=getCrystalUi',
|
'url': 'webapp/index.php?c=ComputingPower&a=getCrystalUi',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['data', _common.CrystalUI(), '晶体的获取方式信息']
|
['data', _common.CrystalUI(), '晶体的获取方式信息']
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'exchangeCrystal',
|
'name': 'exchangeCrystal',
|
||||||
'desc': '兑换晶体',
|
'desc': '兑换晶体',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=exchangeCrystal',
|
'url': 'webapp/index.php?c=ComputingPower&a=exchangeCrystal',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
['item_id', 0, '晶体item'],
|
['item_id', 0, '晶体item'],
|
||||||
# ['item_num', 0, '晶体数量'],
|
# ['item_num', 0, '晶体数量'],
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['property_chg', _common.PropertyChg(), '属性变更'],
|
['property_chg', _common.PropertyChg(), '属性变更'],
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'getExchangeCrystalRecord',
|
'name': 'getExchangeCrystalRecord',
|
||||||
'desc': '获取兑换晶体记录',
|
'desc': '获取兑换晶体记录',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=getExchangeCrystalRecord',
|
'url': 'webapp/index.php?c=ComputingPower&a=getExchangeCrystalRecord',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['data', _common.ExchangeCrystalRecord(), '算力信息']
|
['data', _common.ExchangeCrystalRecord(), '算力信息']
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'exchangePower',
|
'name': 'exchangePower',
|
||||||
'desc': '晶体兑换算力',
|
'desc': '晶体兑换算力',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=exchangePower',
|
'url': 'webapp/index.php?c=ComputingPower&a=exchangePower',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
['num1', 0, '晶体260001兑换数'],
|
['num1', 0, '晶体260001兑换数'],
|
||||||
['num2', 0, '晶体260002兑换数'],
|
['num2', 0, '晶体260002兑换数'],
|
||||||
['num3', 0, '晶体260003兑换数'],
|
['num3', 0, '晶体260003兑换数'],
|
||||||
['num4', 0, '晶体260004兑换数'],
|
['num4', 0, '晶体260004兑换数'],
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['property_chg', _common.PropertyChg(), '属性变更'],
|
['property_chg', _common.PropertyChg(), '属性变更'],
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'exchangeUplimit',
|
'name': 'exchangeUplimit',
|
||||||
'desc': '每周晶体兑换上限',
|
'desc': '每周晶体兑换上限',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=exchangeUplimit',
|
'url': 'webapp/index.php?c=ComputingPower&a=exchangeUplimit',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['data', _common.ExchangeCrystalNum(), '本周期晶体兑换信息']
|
['data', _common.ExchangeCrystalNum(), '本周期晶体兑换信息']
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'getRewardHistory',
|
'name': 'getRewardHistory',
|
||||||
'desc': '获取奖励历史',
|
'desc': '获取奖励历史',
|
||||||
'group': 'ComputingPower',
|
'group': 'ComputingPower',
|
||||||
'url': 'webapp/index.php?c=ComputingPower&a=getRewardHistory',
|
'url': 'webapp/index.php?c=ComputingPower&a=getRewardHistory',
|
||||||
'params': [
|
'params': [
|
||||||
_common.ReqHead(),
|
_common.ReqHead(),
|
||||||
['star_time', 0, '开始时间,都没传查全部'],
|
['star_time', 0, '开始时间,都没传查全部'],
|
||||||
['end_time', 0, '结束时间,都没传查全部'],
|
['end_time', 0, '结束时间,都没传查全部'],
|
||||||
],
|
],
|
||||||
'response': [
|
'response': [
|
||||||
_common.RspHead(),
|
_common.RspHead(),
|
||||||
['!data', [_common.CECRewardHistory()], '算力信息'],
|
['!data', [_common.CECRewardHistory()], '算力信息'],
|
||||||
['pending_rewards', '', '剩余总计'],
|
['pending_rewards', '', '剩余总计'],
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
#
|
{
|
||||||
# {
|
'name': 'exchangeUplimitNew',
|
||||||
# 'name': 'getExchangePowerHistorys',
|
'desc': '晶体兑换上限',
|
||||||
# 'desc': '获取兑换算力历史',
|
'group': 'ComputingPower',
|
||||||
# 'group': 'ComputingPower',
|
'url': 'webapp/index.php?c=ComputingPower&a=exchangeUplimitNew',
|
||||||
# 'url': 'webapp/index.php?c=ComputingPower&a=getExchangePowerHistorys',
|
'params': [
|
||||||
# 'params': [
|
_common.ReqHead(),
|
||||||
# _common.ReqHead(),
|
],
|
||||||
# ],
|
'response': [
|
||||||
# 'response': [
|
_common.RspHead(),
|
||||||
# _common.RspHead(),
|
['totalNum', 0, '可领取的总晶体'],
|
||||||
# ['info', _common.ComputingPower(), '算力信息']
|
['!playing', [Info()], '游戏行为'],
|
||||||
# ]
|
['!staking', [Info()], '质押行为'],
|
||||||
# },
|
['!consuming', [Info()], '支出行为'],
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'claimCrystal',
|
||||||
|
'desc': '一键领取晶体',
|
||||||
|
'group': 'ComputingPower',
|
||||||
|
'url': 'webapp/index.php?c=ComputingPower&a=claimCrystal',
|
||||||
|
'params': [
|
||||||
|
_common.ReqHead(),
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
_common.RspHead(),
|
||||||
|
['award', _common.Award(), '奖励信息'],
|
||||||
|
['property_chg', _common.PropertyChg(), '属性变更'],
|
||||||
|
]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class Info(object):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.fields = [
|
||||||
|
['task_id', 0, 'task_id'],
|
||||||
|
['uplimit', '', '上限数量 -1为无上限'],
|
||||||
|
['chaim_num', 0, '可领取数量'],
|
||||||
|
]
|
3406
sql/gamedb.sql
3406
sql/gamedb.sql
File diff suppressed because it is too large
Load Diff
19
sql/gamedb2006_migrate_231027_01.sql
Normal file
19
sql/gamedb2006_migrate_231027_01.sql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
begin;
|
||||||
|
|
||||||
|
CREATE TABLE `t_hash_rate_task` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
|
||||||
|
`task_id` int(11) NOT NULL COMMENT '配置表HashRateTask',
|
||||||
|
`season` int(11) NOT NULL DEFAULT '0' COMMENT 'taskId 为10003可用',
|
||||||
|
`record_total` int(64) NOT NULL DEFAULT '0' COMMENT '记录总数据',
|
||||||
|
`claim_day` int(64) NOT NULL DEFAULT '0' COMMENT '当天领取数据',
|
||||||
|
`claim_total` int(64) NOT NULL DEFAULT '0' COMMENT '领取总数据',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `account_task_id` (`account_id`, `task_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
insert into version (version) values(2023092001);
|
||||||
|
|
||||||
|
commit;
|
File diff suppressed because it is too large
Load Diff
@ -12,6 +12,7 @@ require_once('models/User.php');
|
|||||||
require_once('models/Parachute.php');
|
require_once('models/Parachute.php');
|
||||||
require_once('models/ChipPage.php');
|
require_once('models/ChipPage.php');
|
||||||
require_once('models/Battle.php');
|
require_once('models/Battle.php');
|
||||||
|
require_once('models/HashRateTask.php');
|
||||||
require_once('services/BattleDataService.php');
|
require_once('services/BattleDataService.php');
|
||||||
require_once('services/TameBattleDataService.php');
|
require_once('services/TameBattleDataService.php');
|
||||||
require_once('services/FormulaService.php');
|
require_once('services/FormulaService.php');
|
||||||
@ -29,6 +30,7 @@ use models\User;
|
|||||||
use models\Parachute;
|
use models\Parachute;
|
||||||
use models\ChipPage;
|
use models\ChipPage;
|
||||||
use models\Battle;
|
use models\Battle;
|
||||||
|
use models\HashRateTask;
|
||||||
|
|
||||||
class BattleController extends BaseAuthedController {
|
class BattleController extends BaseAuthedController {
|
||||||
|
|
||||||
@ -124,6 +126,7 @@ class BattleController extends BaseAuthedController {
|
|||||||
// $ranked = getReqVal('pvp_personal_rank', 0);
|
// $ranked = getReqVal('pvp_personal_rank', 0);
|
||||||
$teamBattleDataService = new services\TameBattleDataService();
|
$teamBattleDataService = new services\TameBattleDataService();
|
||||||
$teamBattleDataService->calStarNum();
|
$teamBattleDataService->calStarNum();
|
||||||
|
HashRateTask::setRankedData();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function teamReport()
|
public function teamReport()
|
||||||
|
@ -1,387 +1,468 @@
|
|||||||
<?php
|
<?php
|
||||||
require_once('mt/HashRate.php');
|
require_once('mt/HashRate.php');
|
||||||
require_once('mt/HashRateCommon.php');
|
require_once('mt/HashRateCommon.php');
|
||||||
require_once('mt/Item.php');
|
require_once('mt/HashRateTask.php');
|
||||||
require_once('mt/Parameter.php');
|
require_once('mt/Item.php');
|
||||||
require_once('services/HashRateService.php');
|
require_once('mt/Parameter.php');
|
||||||
require_once('services/AwardService.php');
|
require_once('services/HashRateService.php');
|
||||||
require_once('services/PropertyChgService.php');
|
require_once('services/AwardService.php');
|
||||||
require_once('services/NumberService.php');
|
require_once('services/PropertyChgService.php');
|
||||||
|
require_once('services/NumberService.php');
|
||||||
require_once('models/ComputingPower.php');
|
|
||||||
require_once('models/CrystalRecord.php');
|
require_once('models/ComputingPower.php');
|
||||||
require_once('models/RewardsCec.php');
|
require_once('models/CrystalRecord.php');
|
||||||
require_once('models/Staking.php');
|
require_once('models/RewardsCec.php');
|
||||||
|
require_once('models/Staking.php');
|
||||||
use models\ComputingPower;
|
require_once('models/HashRateTask.php');
|
||||||
use models\CrystalRecord;
|
|
||||||
use models\RewardsCec;
|
use models\ComputingPower;
|
||||||
use models\Staking;
|
use models\CrystalRecord;
|
||||||
use mt\HashRate;
|
use models\RewardsCec;
|
||||||
use mt\Parameter;
|
use models\Staking;
|
||||||
use phpcommon\SqlHelper;
|
use models\HashRateTask;
|
||||||
class ComputingPowerController extends BaseAuthedController
|
use mt\HashRate;
|
||||||
{
|
use mt\Parameter;
|
||||||
public function info(){
|
use phpcommon\SqlHelper;
|
||||||
$period_state = -1 ; //-1:算力周期未开始 0:正常周期 1:等待周期 2:维护周期
|
class ComputingPowerController extends BaseAuthedController
|
||||||
$curr_period = array(
|
{
|
||||||
"period_begin" => 0,
|
public function info(){
|
||||||
"period_end" => 0,
|
$period_state = -1 ; //-1:算力周期未开始 0:正常周期 1:等待周期 2:维护周期
|
||||||
"await_time" => 0,
|
$curr_period = array(
|
||||||
"assignable_cec" => 0,
|
"period_begin" => 0,
|
||||||
"cec_pool" => 0,
|
"period_end" => 0,
|
||||||
"total_exchange_hash_rate" => 0,
|
"await_time" => 0,
|
||||||
"total_hash_rate" => 0,
|
"assignable_cec" => 0,
|
||||||
|
"cec_pool" => 0,
|
||||||
);
|
"total_exchange_hash_rate" => 0,
|
||||||
$reward = array(
|
"total_hash_rate" => 0,
|
||||||
"cec" => 0,
|
|
||||||
"point" => 0,
|
);
|
||||||
);
|
$reward = array(
|
||||||
$last_period = array(
|
"cec" => 0,
|
||||||
"period_begin" => 0,
|
"point" => 0,
|
||||||
"period_end" => 0,
|
);
|
||||||
"reward" => 0,
|
$last_period = array(
|
||||||
);
|
"period_begin" => 0,
|
||||||
|
"period_end" => 0,
|
||||||
$lastMeta = \mt\HashRateCommon::getLastPeriod();
|
"reward" => 0,
|
||||||
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
);
|
||||||
$nextMeta = \mt\HashRateCommon::getNextPeriod();
|
|
||||||
if (!$currentMeta && $lastMeta){
|
$lastMeta = \mt\HashRateCommon::getLastPeriod();
|
||||||
$ownerNum = ComputingPower::getOwnedBH($lastMeta['id']);
|
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
||||||
$totalNum = ComputingPower::getTotalBH($lastMeta['id']);
|
$nextMeta = \mt\HashRateCommon::getNextPeriod();
|
||||||
$target = \services\NumberService::ceilEx(min($totalNum / $lastMeta['cec_pool'] , 1),6);
|
if (!$currentMeta && $lastMeta){
|
||||||
if ($totalNum == 0) {
|
$ownerNum = ComputingPower::getOwnedBH($lastMeta['id']);
|
||||||
$ratio = 0;
|
$totalNum = ComputingPower::getTotalBH($lastMeta['id']);
|
||||||
}else{
|
$target = \services\NumberService::ceilEx(min($totalNum / $lastMeta['cec_pool'] , 1),6);
|
||||||
$ratio = $ownerNum/$totalNum;
|
if ($totalNum == 0) {
|
||||||
}
|
$ratio = 0;
|
||||||
$reward['cec'] = \services\NumberService::ceilEx($currentMeta['cec_pool'] * $target * $ratio,2);
|
}else{
|
||||||
if ($nextMeta){
|
$ratio = $ownerNum/$totalNum;
|
||||||
$period_state = 1;
|
}
|
||||||
$curr_period['period_begin'] = strtotime($nextMeta['start_time']);
|
$reward['cec'] = \services\NumberService::ceilEx($currentMeta['cec_pool'] * $target * $ratio,2);
|
||||||
$curr_period['period_end'] = strtotime($nextMeta['end_time']);
|
if ($nextMeta){
|
||||||
$curr_period['await_time'] = strtotime($nextMeta['start_time']) - myself()->_getNowTime();
|
$period_state = 1;
|
||||||
}else{
|
$curr_period['period_begin'] = strtotime($nextMeta['start_time']);
|
||||||
$period_state = 2;
|
$curr_period['period_end'] = strtotime($nextMeta['end_time']);
|
||||||
}
|
$curr_period['await_time'] = strtotime($nextMeta['start_time']) - myself()->_getNowTime();
|
||||||
}
|
}else{
|
||||||
if ($currentMeta){
|
$period_state = 2;
|
||||||
$period_state = 0;
|
}
|
||||||
$ownerNum = ComputingPower::getOwnedBH($currentMeta['id']);
|
}
|
||||||
$totalNum = ComputingPower::getTotalBH($currentMeta['id']);
|
if ($currentMeta){
|
||||||
$curr_period['period_begin'] = strtotime($currentMeta['start_time']);
|
$period_state = 0;
|
||||||
$curr_period['period_end'] = strtotime($currentMeta['end_time']);
|
$ownerNum = ComputingPower::getOwnedBH($currentMeta['id']);
|
||||||
$curr_period['assignable_cec'] = min($currentMeta['cec_pool'],$totalNum);
|
$totalNum = ComputingPower::getTotalBH($currentMeta['id']);
|
||||||
$curr_period['cec_pool'] = $currentMeta['cec_pool'];
|
$curr_period['period_begin'] = strtotime($currentMeta['start_time']);
|
||||||
$curr_period['total_exchange_hash_rate'] = $ownerNum;
|
$curr_period['period_end'] = strtotime($currentMeta['end_time']);
|
||||||
$curr_period['total_hash_rate'] = $totalNum;
|
$curr_period['assignable_cec'] = min($currentMeta['cec_pool'],$totalNum);
|
||||||
$curr_period['await_time'] = strtotime($currentMeta['end_time']) - myself()->_getNowTime();
|
$curr_period['cec_pool'] = $currentMeta['cec_pool'];
|
||||||
|
$curr_period['total_exchange_hash_rate'] = $ownerNum;
|
||||||
$target = \services\NumberService::ceilEx(min($totalNum / $currentMeta['cec_pool'] , 1),6);
|
$curr_period['total_hash_rate'] = $totalNum;
|
||||||
if ($totalNum == 0) {
|
$curr_period['await_time'] = strtotime($currentMeta['end_time']) - myself()->_getNowTime();
|
||||||
$ratio = 0;
|
|
||||||
}else{
|
$target = \services\NumberService::ceilEx(min($totalNum / $currentMeta['cec_pool'] , 1),6);
|
||||||
$ratio = $ownerNum/$totalNum;
|
if ($totalNum == 0) {
|
||||||
}
|
$ratio = 0;
|
||||||
$reward['cec'] = \services\NumberService::ceilEx($currentMeta['cec_pool'] * $target * $ratio,2);
|
}else{
|
||||||
$reward['point'] = $ownerNum;
|
$ratio = $ownerNum/$totalNum;
|
||||||
}
|
}
|
||||||
|
$reward['cec'] = \services\NumberService::ceilEx($currentMeta['cec_pool'] * $target * $ratio,2);
|
||||||
if ($lastMeta){
|
$reward['point'] = $ownerNum;
|
||||||
$last_period['period_begin'] = strtotime($lastMeta['start_time']);
|
}
|
||||||
$last_period['period_end'] = strtotime($lastMeta['end_time']);
|
|
||||||
$cecDb = RewardsCec::findByAccount(myself()->_getAccountId(),$lastMeta['id']);
|
if ($lastMeta){
|
||||||
$last_period['reward'] = $cecDb ? $cecDb['reward_cec'] : 0;
|
$last_period['period_begin'] = strtotime($lastMeta['start_time']);
|
||||||
$last_period['last_hash_rate'] = ComputingPower::getOwnedBH($lastMeta['id']);
|
$last_period['period_end'] = strtotime($lastMeta['end_time']);
|
||||||
}
|
$cecDb = RewardsCec::findByAccount(myself()->_getAccountId(),$lastMeta['id']);
|
||||||
|
$last_period['reward'] = $cecDb ? $cecDb['reward_cec'] : 0;
|
||||||
|
$last_period['last_hash_rate'] = ComputingPower::getOwnedBH($lastMeta['id']);
|
||||||
|
}
|
||||||
|
|
||||||
$info = array(
|
|
||||||
'period_state' => $period_state,
|
|
||||||
'curr_period' => $curr_period,
|
|
||||||
'curr_reward' => $reward,
|
$info = array(
|
||||||
'last_period' => $last_period,
|
'period_state' => $period_state,
|
||||||
'listing_state' => LISTING_SWITCH,
|
'curr_period' => $curr_period,
|
||||||
'owned_cec' => RewardsCec::getTotalCecNum(),
|
'curr_reward' => $reward,
|
||||||
'owned_total_hash_rate' =>ComputingPower::getMyTotalBH(),
|
'last_period' => $last_period,
|
||||||
);
|
'listing_state' => LISTING_SWITCH,
|
||||||
$this->_rspData(array(
|
'owned_cec' => RewardsCec::getTotalCecNum(),
|
||||||
'info' => $info
|
'owned_total_hash_rate' =>ComputingPower::getMyTotalBH(),
|
||||||
));
|
);
|
||||||
}
|
$this->_rspData(array(
|
||||||
|
'info' => $info
|
||||||
public function getCrystalUi(){
|
));
|
||||||
$crystalList = array();
|
}
|
||||||
$itemMetas = \mt\Item::getMetaListByType(\mt\Item::CRYSTAL_TYPE);
|
|
||||||
$hashRateService = new \services\HashRateService();
|
public function getCrystalUi(){
|
||||||
foreach ($itemMetas as $meta){
|
$crystalList = array();
|
||||||
$crystalDto = array();
|
$itemMetas = \mt\Item::getMetaListByType(\mt\Item::CRYSTAL_TYPE);
|
||||||
$hashRateService->getCrystalDto($meta,$crystalDto);
|
$hashRateService = new \services\HashRateService();
|
||||||
array_push($crystalList,$crystalDto);
|
foreach ($itemMetas as $meta){
|
||||||
}
|
$crystalDto = array();
|
||||||
$this->_rspData(array(
|
$hashRateService->getCrystalDto($meta,$crystalDto);
|
||||||
'data' => $crystalList
|
array_push($crystalList,$crystalDto);
|
||||||
));
|
}
|
||||||
}
|
$this->_rspData(array(
|
||||||
|
'data' => $crystalList
|
||||||
public function exchangeCrystal(){
|
));
|
||||||
$itemId = getReqVal('item_id', 0);
|
}
|
||||||
$itemMeta = \mt\Item::get($itemId);
|
|
||||||
if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE ){
|
public function exchangeCrystal(){
|
||||||
$this->_rspErr(1, 'param error');
|
$itemId = getReqVal('item_id', 0);
|
||||||
return ;
|
$itemMeta = \mt\Item::get($itemId);
|
||||||
}
|
if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE ){
|
||||||
$hashRateMeta = HashRate::findHash($itemId);
|
$this->_rspErr(1, 'param error');
|
||||||
if (!$hashRateMeta){
|
return ;
|
||||||
$this->_rspErr(1, 'param error');
|
}
|
||||||
return ;
|
$hashRateMeta = HashRate::findHash($itemId);
|
||||||
}
|
if (!$hashRateMeta){
|
||||||
$param = explode('|',$hashRateMeta['parameter']);
|
$this->_rspErr(1, 'param error');
|
||||||
$paramEd = explode(':',$param[0]);
|
return ;
|
||||||
$paramEx = explode(':',$param[1]);
|
}
|
||||||
$crystalNum = 0;
|
$param = explode('|',$hashRateMeta['parameter']);
|
||||||
switch ($itemId){
|
$paramEd = explode(':',$param[0]);
|
||||||
case ComputingPower::CRYSTAL1 : {
|
$paramEx = explode(':',$param[1]);
|
||||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
$crystalNum = 0;
|
||||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
switch ($itemId){
|
||||||
$killsNumEx = $killsNum - $killsNumEd;
|
case ComputingPower::CRYSTAL1 : {
|
||||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||||
$starNumEx = $starNum - $starNumEd ;
|
$killsNumEx = $killsNum - $killsNumEd;
|
||||||
$crystalNum = max(0,floor($killsNumEx / $paramEd[0]) * $paramEd[1] +
|
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||||
floor($starNumEx / $paramEx[0]) * $paramEx[1] );
|
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||||
}
|
$starNumEx = $starNum - $starNumEd ;
|
||||||
break;
|
$crystalNum = max(0,floor($killsNumEx / $paramEd[0]) * $paramEd[1] +
|
||||||
case ComputingPower::CRYSTAL2 : {
|
floor($starNumEx / $paramEx[0]) * $paramEx[1] );
|
||||||
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
}
|
||||||
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
break;
|
||||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
case ComputingPower::CRYSTAL2 : {
|
||||||
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]);
|
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||||
}
|
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
||||||
break;
|
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||||
case ComputingPower::CRYSTAL3 : {
|
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]);
|
||||||
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
}
|
||||||
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
break;
|
||||||
$consumeCostEx = $consumeCost - $consumeCostEd;
|
case ComputingPower::CRYSTAL3 : {
|
||||||
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]);
|
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||||
}
|
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
||||||
break;
|
$consumeCostEx = $consumeCost - $consumeCostEd;
|
||||||
case ComputingPower::CRYSTAL4 : {
|
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]);
|
||||||
$recordDb = CrystalRecord::getNewestRecordOne($itemId);
|
}
|
||||||
error_log('exchangeCrystal:'.json_encode($recordDb));
|
break;
|
||||||
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
case ComputingPower::CRYSTAL4 : {
|
||||||
$this->_rspErr(1, 'There are no available crystals');
|
$recordDb = CrystalRecord::getNewestRecordOne($itemId);
|
||||||
return ;
|
error_log('exchangeCrystal:'.json_encode($recordDb));
|
||||||
}
|
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
||||||
// $rate = Parameter::getVal('cec_exchange_rate',10);
|
$this->_rspErr(1, 'There are no available crystals');
|
||||||
$cecVal = Staking::getStakingTotalValue();
|
return ;
|
||||||
$crystalNum = max(0,floor($cecVal / $paramEd[0]) * $paramEd[1]);
|
}
|
||||||
|
// $rate = Parameter::getVal('cec_exchange_rate',10);
|
||||||
}
|
$cecVal = Staking::getStakingTotalValue();
|
||||||
}
|
$crystalNum = max(0,floor($cecVal / $paramEd[0]) * $paramEd[1]);
|
||||||
|
|
||||||
if ($crystalNum < 1){
|
}
|
||||||
$this->_rspErr(1, 'There are no available crystals');
|
}
|
||||||
return ;
|
|
||||||
}
|
if ($crystalNum < 1){
|
||||||
|
$this->_rspErr(1, 'There are no available crystals');
|
||||||
|
return ;
|
||||||
|
}
|
||||||
$items = array(
|
|
||||||
array(
|
|
||||||
'item_id' => $itemId,
|
|
||||||
'item_num' => $crystalNum,
|
$items = array(
|
||||||
)
|
array(
|
||||||
);
|
'item_id' => $itemId,
|
||||||
$propertyChgService = new services\PropertyChgService();
|
'item_num' => $crystalNum,
|
||||||
$awardService = new services\AwardService();
|
)
|
||||||
$this->_addItems($items,$awardService,$propertyChgService);
|
);
|
||||||
CrystalRecord::addCrystalRecord($itemId,$crystalNum);
|
$propertyChgService = new services\PropertyChgService();
|
||||||
switch ($itemId) {
|
$awardService = new services\AwardService();
|
||||||
case ComputingPower::CRYSTAL1 : {
|
$this->_addItems($items,$awardService,$propertyChgService);
|
||||||
|
CrystalRecord::addCrystalRecord($itemId,$crystalNum);
|
||||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
switch ($itemId) {
|
||||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
case ComputingPower::CRYSTAL1 : {
|
||||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
|
||||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||||
//floor($killsNumEx / $paramEd[0]) * $paramEd[1] 222 100:3 222/100=2 2*3=6 6/3=2 2*100
|
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||||
$newKillsNum = floor(($killsNum-$killsNumEd)/$paramEd[0]) * $paramEd[0];
|
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||||
myself()->_incV(TN_TOTAL_KILLS_NUM,-1,$newKillsNum);
|
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||||
$newStarNum = floor(($starNum-$starNumEd)/$paramEx[0]) * $paramEx[0];
|
//floor($killsNumEx / $paramEd[0]) * $paramEd[1] 222 100:3 222/100=2 2*3=6 6/3=2 2*100
|
||||||
myself()->_incV(TN_TOTAL_STAR_NUM,-1,$newStarNum);
|
$newKillsNum = floor(($killsNum-$killsNumEd)/$paramEd[0]) * $paramEd[0];
|
||||||
}
|
myself()->_incV(TN_TOTAL_KILLS_NUM,-1,$newKillsNum);
|
||||||
break;
|
$newStarNum = floor(($starNum-$starNumEd)/$paramEx[0]) * $paramEx[0];
|
||||||
case ComputingPower::CRYSTAL2 : {
|
myself()->_incV(TN_TOTAL_STAR_NUM,-1,$newStarNum);
|
||||||
myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE);
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case ComputingPower::CRYSTAL2 : {
|
||||||
case ComputingPower::CRYSTAL3 : {
|
myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE);
|
||||||
myself()->_incV(TN_TOTAL_CEG_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE);
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case ComputingPower::CRYSTAL3 : {
|
||||||
}
|
myself()->_incV(TN_TOTAL_CEG_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE);
|
||||||
$this->_rspData(array(
|
}
|
||||||
'award' => $awardService->toDto(),
|
break;
|
||||||
'property_chg' => $propertyChgService->toDto(),
|
}
|
||||||
));
|
$this->_rspData(array(
|
||||||
}
|
'award' => $awardService->toDto(),
|
||||||
|
'property_chg' => $propertyChgService->toDto(),
|
||||||
public function getExchangeCrystalRecord(){
|
));
|
||||||
$crystalRecordList = array();
|
}
|
||||||
CrystalRecord::getCrystalRecordList(function ($row) use (&$crystalRecordList) {
|
|
||||||
array_push($crystalRecordList,array(
|
public function getExchangeCrystalRecord(){
|
||||||
'item_id' => $row['item_id'],
|
$crystalRecordList = array();
|
||||||
'item_num' => $row['item_num'],
|
CrystalRecord::getCrystalRecordList(function ($row) use (&$crystalRecordList) {
|
||||||
'createtime' => $row['createtime'],
|
array_push($crystalRecordList,array(
|
||||||
));
|
'item_id' => $row['item_id'],
|
||||||
});
|
'item_num' => $row['item_num'],
|
||||||
$this->_rspData(array(
|
'createtime' => $row['createtime'],
|
||||||
'data' => $crystalRecordList,
|
));
|
||||||
));
|
});
|
||||||
}
|
$this->_rspData(array(
|
||||||
|
'data' => $crystalRecordList,
|
||||||
public function exchangeUplimit(){
|
));
|
||||||
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
}
|
||||||
if (!$currentMeta){
|
|
||||||
$this->_rspErr(1, 'kindly await');
|
public function exchangeUplimit(){
|
||||||
return ;
|
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
||||||
}
|
if (!$currentMeta){
|
||||||
$list = ComputingPower::findByPeriod($currentMeta['id']);
|
$this->_rspErr(1, 'kindly await');
|
||||||
$this->_rspData(array(
|
return ;
|
||||||
'data' => $list,
|
}
|
||||||
));
|
$list = ComputingPower::findByPeriod($currentMeta['id']);
|
||||||
}
|
$this->_rspData(array(
|
||||||
|
'data' => $list,
|
||||||
public function exchangePower(){
|
));
|
||||||
$num1 = getReqVal('num1', 0);
|
}
|
||||||
$num2 = getReqVal('num2', 0);
|
|
||||||
$num3 = getReqVal('num3', 0);
|
public function exchangePower(){
|
||||||
$num4 = getReqVal('num4', 0);
|
$num1 = getReqVal('num1', 0);
|
||||||
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
$num2 = getReqVal('num2', 0);
|
||||||
if (!$currentMeta){
|
$num3 = getReqVal('num3', 0);
|
||||||
$this->_rspErr(1, 'kindly await');
|
$num4 = getReqVal('num4', 0);
|
||||||
return ;
|
$currentMeta = \mt\HashRateCommon::getCurrentPeriod();
|
||||||
}
|
if (!$currentMeta){
|
||||||
if (!$num1 && !$num2 && !$num3 && !$num4 ){
|
$this->_rspErr(1, 'kindly await');
|
||||||
$this->_rspErr(1, 'exchange none');
|
return ;
|
||||||
return ;
|
}
|
||||||
}
|
if (!$num1 && !$num2 && !$num3 && !$num4 ){
|
||||||
$BH = 0 ;
|
$this->_rspErr(1, 'exchange none');
|
||||||
$costItems = array();
|
return ;
|
||||||
if ($num1 > 0){
|
}
|
||||||
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL1);
|
$BH = 0 ;
|
||||||
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
$costItems = array();
|
||||||
$BH += $num1 * $meta['amount_bh'];
|
if ($num1 > 0){
|
||||||
array_push($costItems,array(
|
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL1);
|
||||||
'item_id' => ComputingPower::CRYSTAL1,
|
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
||||||
'item_num' => $num1
|
$BH += $num1 * $meta['amount_bh'];
|
||||||
));
|
array_push($costItems,array(
|
||||||
}
|
'item_id' => ComputingPower::CRYSTAL1,
|
||||||
if ($num2 > 0){
|
'item_num' => $num1
|
||||||
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL2);
|
));
|
||||||
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
}
|
||||||
$BH += $num2 * $meta['amount_bh'];
|
if ($num2 > 0){
|
||||||
array_push($costItems,array(
|
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL2);
|
||||||
'item_id' => ComputingPower::CRYSTAL2,
|
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
||||||
'item_num' => $num2
|
$BH += $num2 * $meta['amount_bh'];
|
||||||
));
|
array_push($costItems,array(
|
||||||
}
|
'item_id' => ComputingPower::CRYSTAL2,
|
||||||
if ($num3 > 0){
|
'item_num' => $num2
|
||||||
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL3);
|
));
|
||||||
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
}
|
||||||
$BH += $num3 * $meta['amount_bh'];
|
if ($num3 > 0){
|
||||||
array_push($costItems,array(
|
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL3);
|
||||||
'item_id' => ComputingPower::CRYSTAL3,
|
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
||||||
'item_num' => $num3
|
$BH += $num3 * $meta['amount_bh'];
|
||||||
));
|
array_push($costItems,array(
|
||||||
}
|
'item_id' => ComputingPower::CRYSTAL3,
|
||||||
if ($num4 > 0){
|
'item_num' => $num3
|
||||||
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL4);
|
));
|
||||||
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
}
|
||||||
$BH += $num4 * $meta['amount_bh'];
|
if ($num4 > 0){
|
||||||
array_push($costItems,array(
|
$meta = \mt\HashRate::findHash(ComputingPower::CRYSTAL4);
|
||||||
'item_id' => ComputingPower::CRYSTAL4,
|
$this->_verificationCeiling($currentMeta['id'],$meta,$num1,$num2,$num3,$num4);
|
||||||
'item_num' => $num4
|
$BH += $num4 * $meta['amount_bh'];
|
||||||
));
|
array_push($costItems,array(
|
||||||
}
|
'item_id' => ComputingPower::CRYSTAL4,
|
||||||
$lackItem = null;
|
'item_num' => $num4
|
||||||
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
|
));
|
||||||
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
|
}
|
||||||
return;
|
$lackItem = null;
|
||||||
}
|
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
|
||||||
$this->_decItems($costItems);
|
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
|
||||||
$propertyChgService = new services\PropertyChgService();
|
return;
|
||||||
$propertyChgService->addBagChg();
|
}
|
||||||
ComputingPower::addPowerRecord(
|
$this->_decItems($costItems);
|
||||||
array(
|
$propertyChgService = new services\PropertyChgService();
|
||||||
'period' => $currentMeta['id'],
|
$propertyChgService->addBagChg();
|
||||||
'item_num1' => $num1,
|
ComputingPower::addPowerRecord(
|
||||||
'item_num2' => $num2,
|
array(
|
||||||
'item_num3' => $num3,
|
'period' => $currentMeta['id'],
|
||||||
'item_num4' => $num4,
|
'item_num1' => $num1,
|
||||||
'total_num' => $BH,
|
'item_num2' => $num2,
|
||||||
)
|
'item_num3' => $num3,
|
||||||
);
|
'item_num4' => $num4,
|
||||||
$this->_rspData(array(
|
'total_num' => $BH,
|
||||||
'property_chg' => $propertyChgService->toDto(),
|
)
|
||||||
));
|
);
|
||||||
|
$this->_rspData(array(
|
||||||
}
|
'property_chg' => $propertyChgService->toDto(),
|
||||||
|
));
|
||||||
public function getRewardHistory(){
|
|
||||||
$starTime = getReqVal('star_time', 0);
|
}
|
||||||
$endTime = getReqVal('end_time', 0);
|
|
||||||
$historyDb = RewardsCec::getHistoryByTime($starTime,$endTime);
|
public function getRewardHistory(){
|
||||||
$historyList = array();
|
$starTime = getReqVal('star_time', 0);
|
||||||
$pendingNum = 0;
|
$endTime = getReqVal('end_time', 0);
|
||||||
foreach ($historyDb as $row){
|
$historyDb = RewardsCec::getHistoryByTime($starTime,$endTime);
|
||||||
$historyDto = RewardsCec::toDto($row);
|
$historyList = array();
|
||||||
$pendingNum += $historyDto['pending_num'];
|
$pendingNum = 0;
|
||||||
array_push($historyList,$historyDto);
|
foreach ($historyDb as $row){
|
||||||
}
|
$historyDto = RewardsCec::toDto($row);
|
||||||
$this->_rspData(array(
|
$pendingNum += $historyDto['pending_num'];
|
||||||
'data' => $historyList,
|
array_push($historyList,$historyDto);
|
||||||
'pending_rewards' => strval($pendingNum),
|
}
|
||||||
));
|
$this->_rspData(array(
|
||||||
}
|
'data' => $historyList,
|
||||||
|
'pending_rewards' => strval($pendingNum),
|
||||||
private function _verificationCeiling($period,$meta,$num1,$num2,$num3,$num4){
|
));
|
||||||
$list = ComputingPower::findByPeriod($period);
|
}
|
||||||
switch ($meta['item_id']){
|
|
||||||
case ComputingPower::CRYSTAL1 : {
|
public function exchangeUplimitNew(){
|
||||||
if ($list['num1'] + $num1 > $meta['week_max']){
|
$hashRateService = new \services\HashRateService();
|
||||||
$this->_rspErr(1, 'Micro crystal exchange ceiling');
|
$crystalInfo = $hashRateService->getCrystalValue();
|
||||||
die ;
|
$this->_rspData(array(
|
||||||
}
|
'crystalInfo' => $crystalInfo
|
||||||
}
|
));
|
||||||
break;
|
}
|
||||||
case ComputingPower::CRYSTAL2 : {
|
|
||||||
if ($list['num2'] + $num2 > $meta['week_max']){
|
public function claimCrystal(){
|
||||||
$this->_rspErr(1, 'Standard crystal exchange ceiling');
|
$hashRateService = new \services\HashRateService();
|
||||||
die ;
|
$crystalInfo = $hashRateService->getCrystalValue();
|
||||||
}
|
if ($crystalInfo['totalNum'] < 1){
|
||||||
}
|
$this->_rspErr(1, 'No crystals available at this time');
|
||||||
break;
|
return ;
|
||||||
case ComputingPower::CRYSTAL3 : {
|
}
|
||||||
if ($list['num3'] + $num3 > $meta['week_max']){
|
foreach ($crystalInfo['playing'] as $val){
|
||||||
$this->_rspErr(1, 'Large crystal exchange ceiling');
|
if ($val['chaim_num'] < 1){
|
||||||
die ;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
$hashRateMt = \mt\HashRateTask::find($val['task_id']);
|
||||||
break;
|
switch ($val['task_id']){
|
||||||
case ComputingPower::CRYSTAL4 : {
|
case HashRateTask::RANK_TYPE :{
|
||||||
if ($list['num4'] + $num4 > $meta['week_max']){
|
$chaimUpTotal = $val['chaim_num'] / $hashRateMt['reward'];
|
||||||
$this->_rspErr(1, 'Giant crystal exchange ceiling');
|
HashRateTask::updateKv($val['task_id'],array(
|
||||||
die ;
|
'claim_total' => function () use($chaimUpTotal) {
|
||||||
}
|
return "claim_total + ${chaimUpTotal}";
|
||||||
}
|
},
|
||||||
break;
|
'modifytime' => myself()->_getNowTime()
|
||||||
}
|
));
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default : {
|
||||||
|
|
||||||
|
if ($val['task_id'] == HashRateTask::BATTLE_TIME_TYPE){
|
||||||
|
$chaimTotal = $val['chaim_num'] / $hashRateMt['reward'] * $hashRateMt['target'] * 1000;
|
||||||
|
}else{
|
||||||
|
$chaimTotal = $val['chaim_num'] / $hashRateMt['reward'] * $hashRateMt['target'];
|
||||||
|
}
|
||||||
|
HashRateTask::incDailyReward($val['task_id'],$val['chaim_num'],$chaimTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($crystalInfo['staking'] as $val){
|
||||||
|
if ($val['chaim_num'] > 0){
|
||||||
|
HashRateTask::updateKv($val['task_id'],array(
|
||||||
|
'claim_day' => 1,
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($crystalInfo['consuming'] as $val){
|
||||||
|
if ($val['chaim_num'] > 0){
|
||||||
|
$hashRateMt = \mt\HashRateTask::find($val['task_id']);
|
||||||
|
$chaimTotal = $val['chaim_num'] / $hashRateMt['reward'] * $hashRateMt['target'] * \services\HashRateService::EXCHANGE_RATE;
|
||||||
|
myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$chaimTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$items = array(
|
||||||
|
array(
|
||||||
|
'item_id' => ComputingPower::CRYSTAL_NEW,
|
||||||
|
'item_num' => $crystalInfo['totalNum'],
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$propertyChgService = new services\PropertyChgService();
|
||||||
|
$awardService = new services\AwardService();
|
||||||
|
$this->_addItems($items,$awardService,$propertyChgService);
|
||||||
|
CrystalRecord::addCrystalRecord(ComputingPower::CRYSTAL_NEW,$crystalInfo['totalNum']);
|
||||||
|
$this->_rspData(array(
|
||||||
|
'award' => $awardService->toDto(),
|
||||||
|
'property_chg' => $propertyChgService->toDto(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _verificationCeiling($period,$meta,$num1,$num2,$num3,$num4){
|
||||||
|
$list = ComputingPower::findByPeriod($period);
|
||||||
|
switch ($meta['item_id']){
|
||||||
|
case ComputingPower::CRYSTAL1 : {
|
||||||
|
if ($list['num1'] + $num1 > $meta['week_max']){
|
||||||
|
$this->_rspErr(1, 'Micro crystal exchange ceiling');
|
||||||
|
die ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ComputingPower::CRYSTAL2 : {
|
||||||
|
if ($list['num2'] + $num2 > $meta['week_max']){
|
||||||
|
$this->_rspErr(1, 'Standard crystal exchange ceiling');
|
||||||
|
die ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ComputingPower::CRYSTAL3 : {
|
||||||
|
if ($list['num3'] + $num3 > $meta['week_max']){
|
||||||
|
$this->_rspErr(1, 'Large crystal exchange ceiling');
|
||||||
|
die ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ComputingPower::CRYSTAL4 : {
|
||||||
|
if ($list['num4'] + $num4 > $meta['week_max']){
|
||||||
|
$this->_rspErr(1, 'Giant crystal exchange ceiling');
|
||||||
|
die ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(){
|
||||||
|
print_r(\mt\HashRateTask::getMetaList());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,137 +1,138 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace models;
|
namespace models;
|
||||||
require_once('services/NumberService.php');
|
require_once('services/NumberService.php');
|
||||||
|
|
||||||
use mt;
|
use mt;
|
||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
use services\NumberService;
|
use services\NumberService;
|
||||||
|
|
||||||
class ComputingPower extends BaseModel
|
class ComputingPower extends BaseModel
|
||||||
{
|
{
|
||||||
const CRYSTAL1 = 260001;
|
const CRYSTAL1 = 260001;
|
||||||
const CRYSTAL2 = 260002;
|
const CRYSTAL2 = 260002;
|
||||||
const CRYSTAL3 = 260003;
|
const CRYSTAL3 = 260003;
|
||||||
const CRYSTAL4 = 260004;
|
const CRYSTAL4 = 260004;
|
||||||
|
const CRYSTAL_NEW = 260010;
|
||||||
//获取我的算力
|
|
||||||
public static function getOwnedBH($period,$account = null){
|
//获取我的算力
|
||||||
if (!$account){
|
public static function getOwnedBH($period,$account = null){
|
||||||
$account = myself()->_getAccountId();
|
if (!$account){
|
||||||
}
|
$account = myself()->_getAccountId();
|
||||||
$rows = SqlHelper::ormSelect(
|
}
|
||||||
myself()->_getMysql($account),
|
$rows = SqlHelper::ormSelect(
|
||||||
't_power_exchange_record',
|
myself()->_getMysql($account),
|
||||||
array(
|
't_power_exchange_record',
|
||||||
'account_id'=>$account,
|
array(
|
||||||
'period' => $period
|
'account_id'=>$account,
|
||||||
)
|
'period' => $period
|
||||||
);
|
)
|
||||||
$my_total_num = 0;
|
);
|
||||||
if ($rows){
|
$my_total_num = 0;
|
||||||
foreach ($rows as $row){
|
if ($rows){
|
||||||
$my_total_num += $row['total_num'];
|
foreach ($rows as $row){
|
||||||
}
|
$my_total_num += $row['total_num'];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return NumberService::ceilEx($my_total_num,6);
|
|
||||||
}
|
return NumberService::ceilEx($my_total_num,6);
|
||||||
|
}
|
||||||
//获取全服总算力
|
|
||||||
public static function getTotalBH($period){
|
//获取全服总算力
|
||||||
$rows = SqlHelper::select(
|
public static function getTotalBH($period){
|
||||||
myself()->_getMysql(''),
|
$rows = SqlHelper::select(
|
||||||
't_power_exchange_record',
|
myself()->_getMysql(''),
|
||||||
array(
|
't_power_exchange_record',
|
||||||
"period",
|
array(
|
||||||
"total_num"
|
"period",
|
||||||
),
|
"total_num"
|
||||||
array(
|
),
|
||||||
'period' => $period
|
array(
|
||||||
)
|
'period' => $period
|
||||||
);
|
)
|
||||||
$total_num = 0;
|
);
|
||||||
if ($rows){
|
$total_num = 0;
|
||||||
foreach ($rows as $row){
|
if ($rows){
|
||||||
$total_num += $row['total_num'];
|
foreach ($rows as $row){
|
||||||
}
|
$total_num += $row['total_num'];
|
||||||
}
|
}
|
||||||
return $total_num;
|
}
|
||||||
}
|
return $total_num;
|
||||||
|
}
|
||||||
//获取我的总算力
|
|
||||||
public static function getMyTotalBH(){
|
//获取我的总算力
|
||||||
$rows = SqlHelper::select(
|
public static function getMyTotalBH(){
|
||||||
myself()->_getSelfMysql(),
|
$rows = SqlHelper::select(
|
||||||
't_power_exchange_record',
|
myself()->_getSelfMysql(),
|
||||||
array(
|
't_power_exchange_record',
|
||||||
"period",
|
array(
|
||||||
"total_num"
|
"period",
|
||||||
),
|
"total_num"
|
||||||
array(
|
),
|
||||||
'account_id'=>myself()->_getAccountId(),
|
array(
|
||||||
)
|
'account_id'=>myself()->_getAccountId(),
|
||||||
);
|
)
|
||||||
$total_num = 0;
|
);
|
||||||
if ($rows){
|
$total_num = 0;
|
||||||
foreach ($rows as $row){
|
if ($rows){
|
||||||
$total_num += $row['total_num'];
|
foreach ($rows as $row){
|
||||||
}
|
$total_num += $row['total_num'];
|
||||||
}
|
}
|
||||||
return $total_num;
|
}
|
||||||
}
|
return $total_num;
|
||||||
|
}
|
||||||
public static function findByPeriod($period){
|
|
||||||
$rows = SqlHelper::ormSelect(
|
public static function findByPeriod($period){
|
||||||
myself()->_getSelfMysql(),
|
$rows = SqlHelper::ormSelect(
|
||||||
't_power_exchange_record',
|
myself()->_getSelfMysql(),
|
||||||
array(
|
't_power_exchange_record',
|
||||||
'account_id'=>myself()->_getAccountId(),
|
array(
|
||||||
'period' => $period
|
'account_id'=>myself()->_getAccountId(),
|
||||||
)
|
'period' => $period
|
||||||
);
|
)
|
||||||
$list = array(
|
);
|
||||||
'num1' => 0,
|
$list = array(
|
||||||
'num2' => 0,
|
'num1' => 0,
|
||||||
'num3' => 0,
|
'num2' => 0,
|
||||||
'num4' => 0,
|
'num3' => 0,
|
||||||
);
|
'num4' => 0,
|
||||||
if ($rows){
|
);
|
||||||
foreach ($rows as $row){
|
if ($rows){
|
||||||
$list['num1'] += $row['item_num1'];
|
foreach ($rows as $row){
|
||||||
$list['num2'] += $row['item_num2'];
|
$list['num1'] += $row['item_num1'];
|
||||||
$list['num3'] += $row['item_num3'];
|
$list['num2'] += $row['item_num2'];
|
||||||
$list['num4'] += $row['item_num4'];
|
$list['num3'] += $row['item_num3'];
|
||||||
}
|
$list['num4'] += $row['item_num4'];
|
||||||
}
|
}
|
||||||
return $list;
|
}
|
||||||
}
|
return $list;
|
||||||
|
}
|
||||||
public static function addPowerRecord($fieldKv){
|
|
||||||
SqlHelper::insert(
|
public static function addPowerRecord($fieldKv){
|
||||||
myself()->_getSelfMysql(),
|
SqlHelper::insert(
|
||||||
't_power_exchange_record',
|
myself()->_getSelfMysql(),
|
||||||
array(
|
't_power_exchange_record',
|
||||||
'account_id'=>myself()->_getAccountId(),
|
array(
|
||||||
'address'=>myself()->_getAddress(),
|
'account_id'=>myself()->_getAccountId(),
|
||||||
'period'=>$fieldKv['period'],
|
'address'=>myself()->_getAddress(),
|
||||||
'item_num1'=>$fieldKv['item_num1'],
|
'period'=>$fieldKv['period'],
|
||||||
'item_num2' => $fieldKv['item_num2'],
|
'item_num1'=>$fieldKv['item_num1'],
|
||||||
'item_num3' => $fieldKv['item_num3'],
|
'item_num2' => $fieldKv['item_num2'],
|
||||||
'item_num4' => $fieldKv['item_num4'],
|
'item_num3' => $fieldKv['item_num3'],
|
||||||
'total_num' => $fieldKv['total_num'],
|
'item_num4' => $fieldKv['item_num4'],
|
||||||
'createtime'=>myself()->_getNowTime(),
|
'total_num' => $fieldKv['total_num'],
|
||||||
'modifytime'=>myself()->_getNowTime(),
|
'createtime'=>myself()->_getNowTime(),
|
||||||
)
|
'modifytime'=>myself()->_getNowTime(),
|
||||||
);
|
)
|
||||||
}
|
);
|
||||||
|
}
|
||||||
public static function getAccountGroup($period){
|
|
||||||
$sql = "select account_id,`period` from t_power_exchange_record where `period` = $period group by account_id";
|
public static function getAccountGroup($period){
|
||||||
$rows = myself()->_getMysql('')->execQuery($sql);
|
$sql = "select account_id,`period` from t_power_exchange_record where `period` = $period group by account_id";
|
||||||
return $rows;
|
$rows = myself()->_getMysql('')->execQuery($sql);
|
||||||
}
|
return $rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
175
webapp/models/HashRateTask.php
Normal file
175
webapp/models/HashRateTask.php
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace models;
|
||||||
|
|
||||||
|
require_once('mt/Rank.php');
|
||||||
|
require_once('mt/RankSeason.php');
|
||||||
|
|
||||||
|
use mt\Rank;
|
||||||
|
use mt\RankSeason;
|
||||||
|
use phpcommon\SqlHelper;
|
||||||
|
class HashRateTask extends BaseModel
|
||||||
|
{
|
||||||
|
const KILL_TYPE = 10001;
|
||||||
|
const STAR_TYPE = 10002;
|
||||||
|
const RANK_TYPE = 10003;
|
||||||
|
const BATTLE_TIME_TYPE = 10004;
|
||||||
|
const BATTLE_WIN_TYPE = 10005;
|
||||||
|
const VS_FOUR_BATTLE_WIN_TYPE = 10006;
|
||||||
|
const DAMAGE_TYPE = 10007;
|
||||||
|
|
||||||
|
public static function find(){
|
||||||
|
$rows = SqlHelper::ormSelect(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (count($rows) < 1){
|
||||||
|
$rows = array();
|
||||||
|
}
|
||||||
|
return $rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function toDto($row){
|
||||||
|
array(
|
||||||
|
'task_id' => $row['task_id']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findByTaskId($taskId){
|
||||||
|
return SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function incRecordNum($taskId,$num){
|
||||||
|
SqlHelper::upsert
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'record_total' => function () use($num) {
|
||||||
|
return "record_total + ${num}";
|
||||||
|
},
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
'record_total' => $num,
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getDailyReward($taskId){
|
||||||
|
$row = SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$modifytime = $row ? $row['modifytime'] : myself()->_getNowTime();
|
||||||
|
$num = $row ? $row['claim_day'] : 0;
|
||||||
|
|
||||||
|
if (myself()->_getDaySeconds($modifytime) < myself()->_getNowDaySeconds()) {
|
||||||
|
$num = 0;
|
||||||
|
}
|
||||||
|
return $num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function incDailyReward($taskId,$val,$total){
|
||||||
|
$oldVal = self::getDailyReward($taskId);
|
||||||
|
$val += $oldVal;
|
||||||
|
SqlHelper::upsert
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'claim_day' => $val,
|
||||||
|
'claim_total' => function () use($total) {
|
||||||
|
return "claim_total + ${total}";
|
||||||
|
},
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
'claim_day' => $val,
|
||||||
|
'claim_total' => $total,
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function updateKv($taskId,$fieldKv){
|
||||||
|
SqlHelper::update
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
),
|
||||||
|
$fieldKv
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function setRankedData(){
|
||||||
|
$SeasonMeta = RankSeason::getCurrentSeason();
|
||||||
|
if (!$SeasonMeta){
|
||||||
|
error_log("当前赛季结束");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (! self::findByTaskIdOrSeason(self::RANK_TYPE,$SeasonMeta['id'])){
|
||||||
|
$userDb = myself()->_safeGetOrmUserInfo();
|
||||||
|
$rankMeta = Rank::getRankById($userDb['rank']);
|
||||||
|
SqlHelper::insert
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => self::RANK_TYPE,
|
||||||
|
'season' => $SeasonMeta['id'],
|
||||||
|
'record_total' => $rankMeta['rank_order2'],
|
||||||
|
'claim_total' => $rankMeta['rank_order2'],
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findByTaskIdOrSeason($taskId,$season){
|
||||||
|
return SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_hash_rate_task',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'task_id' => $taskId,
|
||||||
|
'season' => $season,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
40
webapp/mt/HashRateTask.php
Normal file
40
webapp/mt/HashRateTask.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace mt;
|
||||||
|
|
||||||
|
use phpcommon;
|
||||||
|
|
||||||
|
class HashRateTask {
|
||||||
|
const PLAYING = 1;
|
||||||
|
const STAKING = 2;
|
||||||
|
const TRADING = 3;
|
||||||
|
const CONSUMING = 4;
|
||||||
|
const COMMUNITY = 5;
|
||||||
|
const NFT = 6;
|
||||||
|
public static function find($id){
|
||||||
|
return getXVal(self::getMetaList(), $id, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getListByType($type){
|
||||||
|
$mateList = array();
|
||||||
|
foreach (self::getMetaList() as $mate){
|
||||||
|
if ($mate['type'] == $type){
|
||||||
|
array_push($mateList,$mate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $mateList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getMetaList()
|
||||||
|
{
|
||||||
|
if (!self::$metaList) {
|
||||||
|
self::$metaList = getMetaTable('HashRateTask@HashRateTask.php');
|
||||||
|
}
|
||||||
|
return self::$metaList;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static $metaList;
|
||||||
|
|
||||||
|
}
|
@ -1,103 +1,253 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace services;
|
namespace services;
|
||||||
require_once('mt/HashRate.php');
|
require_once('mt/HashRate.php');
|
||||||
require_once('mt/Parameter.php');
|
require_once('mt/Parameter.php');
|
||||||
require_once('models/Bag.php');
|
require_once('mt/HashRateTask.php');
|
||||||
require_once('models/CrystalRecord.php');
|
require_once('mt/Rank.php');
|
||||||
require_once('models/Staking.php');
|
require_once('mt/RankSeason.php');
|
||||||
|
require_once('models/Bag.php');
|
||||||
use models\Bag;
|
require_once('models/CrystalRecord.php');
|
||||||
use models\CrystalRecord;
|
require_once('models/Staking.php');
|
||||||
use models\Staking;
|
require_once('models/HashRateTask.php');
|
||||||
use mt\HashRate;
|
|
||||||
use mt\Parameter;
|
use models\Bag;
|
||||||
|
use models\CrystalRecord;
|
||||||
class HashRateService extends BaseService
|
use models\Staking;
|
||||||
{
|
use models\HashRateTask;
|
||||||
const NONE_STATE = 0;
|
use mt\HashRate;
|
||||||
const RECEIVED_STATE = 1;
|
use mt\Parameter;
|
||||||
const EXCHANGE_RATE = 10;
|
use mt\Rank;
|
||||||
public function getCrystalDto($crystalMeta,&$crystalDto){
|
use mt\RankSeason;
|
||||||
$crystalDto = array(
|
|
||||||
'item_id' => $crystalMeta['id'],
|
class HashRateService extends BaseService
|
||||||
'pending' => 0,
|
{
|
||||||
'total' => array(),
|
const NONE_STATE = 0;
|
||||||
'claimed' => 0,
|
const RECEIVED_STATE = 1;
|
||||||
'state' => self::NONE_STATE,
|
const EXCHANGE_RATE = 10;
|
||||||
);
|
public function getCrystalDto($crystalMeta,&$crystalDto){
|
||||||
$hashRateMeta = HashRate::findHash($crystalMeta['id']);
|
$crystalDto = array(
|
||||||
$ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']);
|
'item_id' => $crystalMeta['id'],
|
||||||
$crystalDto['claimed'] = intval($ownedNum);
|
'pending' => 0,
|
||||||
switch ($crystalMeta['sub_type']){
|
'total' => array(),
|
||||||
case 1 : {
|
'claimed' => 0,
|
||||||
$param = explode('|',$hashRateMeta['parameter']);
|
'state' => self::NONE_STATE,
|
||||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
);
|
||||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
$hashRateMeta = HashRate::findHash($crystalMeta['id']);
|
||||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
$ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']);
|
||||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
$crystalDto['claimed'] = intval($ownedNum);
|
||||||
$killsNumEx = $killsNum - $killsNumEd;
|
switch ($crystalMeta['sub_type']){
|
||||||
$starNumEx = $starNum - $starNumEd ;
|
case 1 : {
|
||||||
$crystalDto['total'] = array(
|
$param = explode('|',$hashRateMeta['parameter']);
|
||||||
'param1' => floatval($killsNumEx),
|
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||||
'param2' => floatval($starNumEx),
|
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||||
);
|
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||||
$paramKill = explode(':',$param[0]);
|
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||||
$paramStar = explode(':',$param[1]);
|
$killsNumEx = $killsNum - $killsNumEd;
|
||||||
$totalNum = max(0,floor($killsNumEx / $paramKill[0]) * $paramKill[1] +
|
$starNumEx = $starNum - $starNumEd ;
|
||||||
floor($starNumEx / $paramStar[0]) * $paramStar[1] );
|
$crystalDto['total'] = array(
|
||||||
$crystalDto['pending'] = intval($totalNum);
|
'param1' => floatval($killsNumEx),
|
||||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
'param2' => floatval($starNumEx),
|
||||||
}
|
);
|
||||||
break;
|
$paramKill = explode(':',$param[0]);
|
||||||
case 2 : {
|
$paramStar = explode(':',$param[1]);
|
||||||
// 游戏内消费总价值
|
$totalNum = max(0,floor($killsNumEx / $paramKill[0]) * $paramKill[1] +
|
||||||
$param = explode(':',$hashRateMeta['parameter']);
|
floor($starNumEx / $paramStar[0]) * $paramStar[1] );
|
||||||
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
$crystalDto['pending'] = intval($totalNum);
|
||||||
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
}
|
||||||
$crystalDto['total'] = array(
|
break;
|
||||||
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
case 2 : {
|
||||||
);
|
// 游戏内消费总价值
|
||||||
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]);
|
$param = explode(':',$hashRateMeta['parameter']);
|
||||||
$crystalDto['pending'] = intval($totalNum);
|
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
||||||
}
|
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||||
break;
|
$crystalDto['total'] = array(
|
||||||
case 3 : {
|
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
||||||
// Market交易总价值
|
);
|
||||||
$param = explode(':',$hashRateMeta['parameter']);
|
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]);
|
||||||
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
$crystalDto['pending'] = intval($totalNum);
|
||||||
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
}
|
||||||
$crystalDto['total'] = array(
|
break;
|
||||||
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
case 3 : {
|
||||||
);
|
// Market交易总价值
|
||||||
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]);
|
$param = explode(':',$hashRateMeta['parameter']);
|
||||||
$crystalDto['pending'] = intval($totalNum);
|
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
||||||
}
|
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||||
break;
|
$crystalDto['total'] = array(
|
||||||
case 4 : {
|
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
||||||
// 质压总价值
|
);
|
||||||
$param = explode(':',$hashRateMeta['parameter']);
|
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]);
|
||||||
// $rate = Parameter::getVal('cec_exchange_rate',10);
|
$crystalDto['pending'] = intval($totalNum);
|
||||||
$cecVal = Staking::getStakingTotalValue();
|
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||||
$crystalDto['total'] = array(
|
}
|
||||||
'param1' => floatval($cecVal ),
|
break;
|
||||||
);
|
case 4 : {
|
||||||
$recordDb = CrystalRecord::getNewestRecordOne($crystalMeta['id']);
|
// 质压总价值
|
||||||
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
$param = explode(':',$hashRateMeta['parameter']);
|
||||||
$crystalDto['pending'] = 0;
|
// $rate = Parameter::getVal('cec_exchange_rate',10);
|
||||||
}else{
|
$cecVal = Staking::getStakingTotalValue();
|
||||||
$totalNum = max(0,floor($cecVal / $param[0]) * $param[1]);
|
$crystalDto['total'] = array(
|
||||||
$crystalDto['pending'] = intval($totalNum);
|
'param1' => floatval($cecVal ),
|
||||||
}
|
);
|
||||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
$recordDb = CrystalRecord::getNewestRecordOne($crystalMeta['id']);
|
||||||
}
|
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
||||||
break;
|
$crystalDto['pending'] = 0;
|
||||||
}
|
}else{
|
||||||
}
|
$totalNum = max(0,floor($cecVal / $param[0]) * $param[1]);
|
||||||
|
$crystalDto['pending'] = intval($totalNum);
|
||||||
|
}
|
||||||
|
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCrystalValue(){
|
||||||
|
$chaimNum = 0;
|
||||||
|
$playing = array();
|
||||||
|
$staking = array();
|
||||||
|
$trading = array();
|
||||||
|
$consuming = array();
|
||||||
|
$nft = array();
|
||||||
|
// $hashRateMt = \mt\HashRateTask::getListByType(\mt\HashRateTask::PLAYING);
|
||||||
|
// foreach ($hashRateMt as $meta){
|
||||||
|
// $finalVal = 0;
|
||||||
|
// $uplimit = $meta['upperlimit'] ;
|
||||||
|
// if ($meta['id'] == HashRateTask::RANK_TYPE){
|
||||||
|
// $seasonMeta = RankSeason::getCurrentSeason();
|
||||||
|
// if (!$seasonMeta){
|
||||||
|
// $seasonMeta = RankSeason::getLastSeason();
|
||||||
|
// }
|
||||||
|
// $hashRateDb = HashRateTask::findByTaskIdOrSeason($meta['id'],$seasonMeta['id']);
|
||||||
|
// $userDb = myself()->_safeGetOrmUserInfo();
|
||||||
|
// $rankMeta = Rank::getRankById($userDb['rank']);
|
||||||
|
// if ($rankMeta['rank_order2'] > $hashRateDb['record_total']){
|
||||||
|
// $finalVal = ($rankMeta['rank_order2'] - $hashRateDb['claim_total']) * $meta['reward'];
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// $hashRateDb = HashRateTask::findByTaskId($meta['id']);
|
||||||
|
// $targetVal = 0;
|
||||||
|
// if ($hashRateDb){
|
||||||
|
// $total = $hashRateDb['record_total'] - $hashRateDb['claim_total'];
|
||||||
|
// if ($hashRateDb['task_id'] == HashRateTask::BATTLE_TIME_TYPE){
|
||||||
|
// $targetVal = max(0,floor($total / 1000 / $meta['target'])) * $meta['reward'];
|
||||||
|
// }else{
|
||||||
|
// $targetVal = max(0,floor($total / $meta['target'])) * $meta['reward'];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// $claim_day = HashRateTask::getDailyReward($meta['id']);
|
||||||
|
// $uplimit = $meta['upperlimit'] - $claim_day;
|
||||||
|
// $finalVal = min($targetVal , $uplimit);
|
||||||
|
// }
|
||||||
|
// $chaimNum += $finalVal;
|
||||||
|
// array_push($detail,array(
|
||||||
|
// 'task_id' => $meta['id'],
|
||||||
|
// 'uplimit' => $uplimit,
|
||||||
|
// 'chaim_num' => $finalVal
|
||||||
|
// ));
|
||||||
|
// }
|
||||||
|
$hashRateTask = \mt\HashRateTask::getMetaList();
|
||||||
|
foreach ($hashRateTask as $metaTask){
|
||||||
|
$finalVal = 0;
|
||||||
|
$uplimit = $metaTask['upperlimit'] ;
|
||||||
|
switch ($metaTask['type']){
|
||||||
|
case \mt\HashRateTask::PLAYING :{
|
||||||
|
if ($metaTask['id'] == HashRateTask::RANK_TYPE){
|
||||||
|
$seasonMeta = RankSeason::getCurrentSeason();
|
||||||
|
if (!$seasonMeta){
|
||||||
|
$seasonMeta = RankSeason::getLastSeason();
|
||||||
|
}
|
||||||
|
$hashRateDb = HashRateTask::findByTaskIdOrSeason($metaTask['id'],$seasonMeta['id']);
|
||||||
|
$userDb = myself()->_safeGetOrmUserInfo();
|
||||||
|
$rankMeta = Rank::getRankById($userDb['rank']);
|
||||||
|
if ($rankMeta['rank_order2'] > $hashRateDb['record_total']){
|
||||||
|
$finalVal = ($rankMeta['rank_order2'] - $hashRateDb['claim_total']) * $metaTask['reward'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$hashRateDb = HashRateTask::findByTaskId($metaTask['id']);
|
||||||
|
$targetVal = 0;
|
||||||
|
if ($hashRateDb){
|
||||||
|
$total = $hashRateDb['record_total'] - $hashRateDb['claim_total'];
|
||||||
|
if ($hashRateDb['task_id'] == HashRateTask::BATTLE_TIME_TYPE){
|
||||||
|
$targetVal = max(0,floor($total / 1000 / $metaTask['target'])) * $metaTask['reward'];
|
||||||
|
}else{
|
||||||
|
$targetVal = max(0,floor($total / $metaTask['target'])) * $metaTask['reward'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$claim_day = HashRateTask::getDailyReward($metaTask['id']);
|
||||||
|
$uplimit = $metaTask['upperlimit'] - $claim_day;
|
||||||
|
$finalVal = min($targetVal , $uplimit);
|
||||||
|
}
|
||||||
|
$chaimNum += $finalVal;
|
||||||
|
array_push($playing,array(
|
||||||
|
'task_id' => $metaTask['id'],
|
||||||
|
'uplimit' => $uplimit,
|
||||||
|
'chaim_num' => $finalVal
|
||||||
|
));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case \mt\HashRateTask::STAKING :{
|
||||||
|
//质押价值
|
||||||
|
$stakingVal = Staking::getStakingTotalValue();
|
||||||
|
$targetVal = max(0,floor($stakingVal / $metaTask['target']) * $metaTask['reward']);
|
||||||
|
$claim_day = HashRateTask::getDailyReward($metaTask['id']);
|
||||||
|
if ($claim_day){
|
||||||
|
$finalVal = 0;
|
||||||
|
}else{
|
||||||
|
$finalVal = $targetVal;
|
||||||
|
}
|
||||||
|
$chaimNum += $finalVal;
|
||||||
|
array_push($staking,array(
|
||||||
|
'task_id' => $metaTask['id'],
|
||||||
|
'uplimit' => $uplimit,
|
||||||
|
'chaim_num' => $finalVal
|
||||||
|
));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// case \mt\HashRateTask::TRADING : {
|
||||||
|
// $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||||
|
// $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
||||||
|
// $total = $consumeCost - $consumeCostEd ;
|
||||||
|
// $finalVal = max(0,floor($total / self::EXCHANGE_RATE / $metaTask['target']) * $metaTask['reward']);
|
||||||
|
// $chaimNum += $finalVal;
|
||||||
|
// array_push($trading,array(
|
||||||
|
// 'task_id' => $metaTask['id'],
|
||||||
|
// 'uplimit' => $uplimit,
|
||||||
|
// 'chaim_num' => $finalVal
|
||||||
|
// ));
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
case \mt\HashRateTask::CONSUMING : {
|
||||||
|
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||||
|
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
||||||
|
$total = $consumeCost - $consumeCostEd;
|
||||||
|
$finalVal = max(0,floor($total / self::EXCHANGE_RATE / $metaTask['target']) * $metaTask['reward']);
|
||||||
|
$chaimNum += $finalVal;
|
||||||
|
array_push($consuming,array(
|
||||||
|
'task_id' => $metaTask['id'],
|
||||||
|
'uplimit' => $uplimit,
|
||||||
|
'chaim_num' => $finalVal
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array(
|
||||||
|
'totalNum' => $chaimNum,
|
||||||
|
'playing'=>$playing,
|
||||||
|
'staking'=>$staking,
|
||||||
|
'consuming'=>$consuming,
|
||||||
|
'nft'=>$nft,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user