141 lines
5.7 KiB
PHP
141 lines
5.7 KiB
PHP
<?php
|
|
require_once('services/HashRateService.php');
|
|
require_once('services/LootService.php');
|
|
|
|
require_once('mt/AchievementsPower.php');
|
|
require_once('mt/AchievementsCycle.php');
|
|
require_once('mt/Parameter.php');
|
|
require_once('models/HashRate.php');
|
|
|
|
use models\HashRate;
|
|
class HashRateController extends BaseAuthedController
|
|
{
|
|
private $hashRateService = null;
|
|
|
|
public function _handlePre()
|
|
{
|
|
parent::_handlePre();
|
|
$this->hashRateService = new services\HashRateService();
|
|
$this->hashRateService->init();
|
|
}
|
|
|
|
public function taskList(){
|
|
$type = getReqVal('type', 1);
|
|
$taskDtoList1 = array();
|
|
$taskDtoList2 = array();
|
|
$obtain_start_time = 0;
|
|
$obtain_end_time = 0;
|
|
$income_start_time = 0;
|
|
$income_end_time = 0;
|
|
$state = 0;
|
|
$myHashRate = 0;
|
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
|
if ($currentPeriod){
|
|
$mateList = \mt\AchievementsPower::getCustomTypeMetaList($type,$this->hashRateService);
|
|
foreach ($mateList as $mate) {
|
|
$taskDb = HashRate::find($mate['id'],$currentPeriod['id']);
|
|
$taskDto = $this->hashRateService->hashRateTaskDto($mate,$taskDb);
|
|
array_push($taskDtoList1, $taskDto);
|
|
}
|
|
$mateList2 = \mt\AchievementsPower::getListByType(\mt\AchievementsPower::TYPE5);
|
|
foreach ($mateList2 as $mate) {
|
|
$taskDb = HashRate::find($mate['id'],$currentPeriod['id']);
|
|
$taskDto = $this->hashRateService->hashRateTaskDto($mate,$taskDb);
|
|
array_push($taskDtoList2, $taskDto);
|
|
}
|
|
$obtain_start_time = strtotime($currentPeriod['obtain_start_time']);
|
|
$obtain_end_time = strtotime($currentPeriod['obtain_end_time']);
|
|
$income_start_time = strtotime($currentPeriod['income_start_time']);
|
|
$income_end_time = strtotime($currentPeriod['income_end_time']);
|
|
if(myself()->_getNowTime() >= $obtain_start_time && myself()->_getNowTime() <= $obtain_end_time){
|
|
$state = 1;
|
|
}elseif (myself()->_getNowTime() >= $income_start_time && myself()->_getNowTime() <= $income_end_time){
|
|
$state = 2;
|
|
}
|
|
$myHashRate = HashRate::getMyHashRate( $currentPeriod['id']);
|
|
}
|
|
$this->_rspData(array(
|
|
'task_list1' => $taskDtoList1,
|
|
'task_list2' => $taskDtoList2,
|
|
'obtain_start_time' => $obtain_start_time,
|
|
'obtain_end_time' => $obtain_end_time,
|
|
'income_start_time' => $income_start_time,
|
|
'income_end_time' => $income_end_time,
|
|
'state' => $state,
|
|
'refresh_times' => myself()->_getDailyV(TN_HASH_DAILY_REFRESH_TIMES,0),
|
|
'myHashRate' => $myHashRate,
|
|
));
|
|
}
|
|
|
|
public function commitTaskS(){
|
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
|
if (! $currentPeriod){
|
|
$this->_rspErr(1, 'Already ended');
|
|
return;
|
|
}
|
|
$taskId = getReqVal('task_id', 0);
|
|
$taskMeta = \mt\AchievementsPower::find($taskId);
|
|
if (!$taskMeta) {
|
|
$this->_rspErr(1, 'task_id error');
|
|
return;
|
|
}
|
|
$taskDb = HashRate::find($taskMeta['id'],$currentPeriod['id']);
|
|
$taskDto = $this->hashRateService->hashRateTaskDto($taskMeta,$taskDb);
|
|
|
|
if (!$taskDto) {
|
|
$this->_rspErr(10, 'server internal error');
|
|
return;
|
|
}
|
|
if ($taskDto['state'] == \services\HashRateService::RECEIVED_STATE) {
|
|
$this->_rspErr(2, "Can't get it again");
|
|
return;
|
|
}
|
|
if ($taskDto['state'] == \services\HashRateService::NOT_FINISHED_STATE) {
|
|
$this->_rspErr(3, 'task not achieved');
|
|
return;
|
|
}
|
|
$lootIndex = $taskMeta['Reward_Loot'];
|
|
$reward = \services\LootService::dropOutItem($lootIndex);
|
|
$rewardNum = $reward[0]['item_num'];
|
|
HashRate::add($taskMeta['id'],$currentPeriod['id']);
|
|
HashRate::rewardAdd($currentPeriod['id'],$rewardNum);
|
|
//刷新任务
|
|
$refreshTimes = myself()->_getDailyV(TN_HASH_DAILY_REFRESH_TIMES,0);
|
|
$refreshTimesMax = \mt\Parameter::getVal('economy_account_compute_refresh_max',5);
|
|
if ($taskMeta['is_refresh'] == \mt\AchievementsPower::REFRESH_STATE && $refreshTimes < $refreshTimesMax){
|
|
$this->hashRateService->refreshHashRateTask($taskMeta,$currentPeriod['id']);
|
|
}
|
|
$this->_rspData(array(
|
|
'award' => $reward,
|
|
));
|
|
}
|
|
|
|
public function refreshTask(){
|
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
|
if (! $currentPeriod){
|
|
$this->_rspErr(1, 'Already ended');
|
|
return;
|
|
}
|
|
$taskId = getReqVal('task_id', 0);
|
|
$taskMeta = \mt\AchievementsPower::find($taskId);
|
|
if (!$taskMeta) {
|
|
$this->_rspErr(1, 'task_id error');
|
|
return;
|
|
}
|
|
if ($taskMeta['is_refresh'] == \mt\AchievementsPower::NOT_REFRESH_STATE){
|
|
$this->_rspErr(1, 'Unable to refresh');
|
|
return;
|
|
}
|
|
$refreshTimes = myself()->_getDailyV(TN_HASH_DAILY_REFRESH_TIMES,0);
|
|
$refreshTimesMax = \mt\Parameter::getVal('economy_account_compute_refresh_max',5);
|
|
if ( $refreshTimes >= $refreshTimesMax){
|
|
$this->_rspErr(1, 'The number of refreshes was exhausted today');
|
|
return;
|
|
}
|
|
$this->hashRateService->refreshHashRateTask($taskMeta,$currentPeriod['id']);
|
|
$this->_rspOk();
|
|
}
|
|
|
|
|
|
|
|
} |