game2006api/webapp/controller/HashRateController.class.php
2024-08-01 16:21:54 +08:00

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();
}
}