481 lines
18 KiB
PHP
481 lines
18 KiB
PHP
<?php
|
|
|
|
require_once('services/PropertyChgService.php');
|
|
require_once('services/ServerSwitchService.php');
|
|
require_once('services/HashRateService.php');
|
|
require_once('services/RookieTaskService.php');
|
|
require_once('services/MissionService.php');
|
|
require_once('mt/RankSeason.php');
|
|
require_once('mt/HashRateCommon.php');
|
|
require_once('mt/ActivityRewards.php');
|
|
require_once('mt/MapMode.php');
|
|
require_once('mt/ServerTaskTime.php');
|
|
require_once('mt/AchievementsCycle.php');
|
|
require_once('mt/CircuitTime.php');
|
|
require_once('mt/RookieTask.php');
|
|
|
|
|
|
|
|
|
|
require_once('models/SignLog.php');
|
|
require_once('models/RankingSetRecord.php');
|
|
//require_once('models/Staking.php');
|
|
require_once('models/SeasonRanking.php');
|
|
require_once('models/RewardsCec.php');
|
|
require_once('models/GlobalData.php');
|
|
require_once('models/HashRate.php');
|
|
require_once('models/Hero.php');
|
|
require_once('models/HeroSkin.php');
|
|
require_once('models/Chip.php');
|
|
require_once('models/Bag.php');
|
|
require_once('models/CircuitTask.php');
|
|
|
|
use models\CircuitTask;
|
|
use models\SignLog;
|
|
use phpcommon\SqlHelper;
|
|
use models\RankingSetRecord;
|
|
//use models\Staking;
|
|
use models\SeasonRanking;
|
|
use models\RewardsCec;
|
|
use models\GlobalData;
|
|
use models\HashRate;
|
|
use models\Hero;
|
|
use models\HeroSkin;
|
|
use models\Chip;
|
|
use models\Bag;
|
|
|
|
class OtherController extends BaseAuthedController {
|
|
const HERO = 1;
|
|
const CHIP = 2;
|
|
const BAG = 3;
|
|
const SIGN = 4;
|
|
const HASH_RATE = 5;
|
|
const HERO_SKIN = 6;
|
|
const ROOKIE_TASK = 7;
|
|
const DAILY_TASK = 8;
|
|
const INVITE_NEW_TASK = 9;
|
|
|
|
public function tag()
|
|
{
|
|
$types = getReqVal('types', 0);
|
|
$typeArr = explode(",",$types);
|
|
$list = array();
|
|
foreach ($typeArr as $type){
|
|
$state = 0;
|
|
switch ($type){
|
|
case self::HERO : {
|
|
$res = myself()->_getSelfMysql()->execQueryOne("SELECT COUNT(idx) as totalNum FROM t_hero WHERE account_id=:account AND is_old=:is_old LIMIT 1",array(
|
|
'account' => myself()->_getAccountId(),
|
|
'is_old' => 0,
|
|
));
|
|
if ($res['totalNum']){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::HERO,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::CHIP :{
|
|
$res = myself()->_getSelfMysql()->execQueryOne("SELECT COUNT(idx) as totalNum FROM t_chip WHERE account_id=:account AND is_old=:is_old LIMIT 1",array(
|
|
'account' => myself()->_getAccountId(),
|
|
'is_old' => 0,
|
|
));
|
|
if ($res['totalNum']){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::CHIP,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::BAG :{
|
|
$res = myself()->_getSelfMysql()->execQueryOne("SELECT COUNT(idx) as totalNum FROM t_bag WHERE account_id=:account AND item_num>0 AND is_old=:is_old LIMIT 1",array(
|
|
'account' => myself()->_getAccountId(),
|
|
'is_old' => 0,
|
|
));
|
|
if ($res['totalNum']){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::BAG,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::SIGN :{
|
|
$signDb = SignLog::find();
|
|
if ($signDb && $signDb['is_receive'] == 0){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::SIGN,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::HASH_RATE :{
|
|
$currentPeriod= \mt\AchievementsCycle::getCurrentPeriod();
|
|
if ($currentPeriod){
|
|
$hashRateService = new services\HashRateService();
|
|
$hashRateService->init();
|
|
if ($hashRateService->_isHaveRedTag($currentPeriod['id'])){
|
|
$state = 1;
|
|
}
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::HASH_RATE,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::HERO_SKIN :{
|
|
$res = myself()->_getSelfMysql()->execQueryOne("SELECT COUNT(idx) as totalNum FROM t_hero_skin WHERE account_id=:account AND is_old=:is_old LIMIT 1",array(
|
|
'account' => myself()->_getAccountId(),
|
|
'is_old' => 0,
|
|
));
|
|
if ($res['totalNum']){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::HERO_SKIN,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::ROOKIE_TASK :{
|
|
$metaList = \mt\RookieTask::allList();
|
|
foreach ($metaList as $meta){
|
|
$metaDto = \services\RookieTaskService::getTaskDto($meta);
|
|
if ($metaDto['state'] == \services\RookieTaskService::FINISHED_STATE){
|
|
$state = 1;
|
|
}
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::ROOKIE_TASK,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::DAILY_TASK :{
|
|
$missionService = new services\MissionService();
|
|
$userInfo = $this->_safeGetOrmUserInfo();
|
|
$missionService->init($userInfo, null);
|
|
if ($missionService->_isHaveRedTag(0)){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::DAILY_TASK,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
break;
|
|
case self::INVITE_NEW_TASK :{
|
|
$missionService = new services\MissionService();
|
|
if ($missionService->_isHaveRedTag(1)){
|
|
$state = 1;
|
|
}
|
|
array_push($list,array(
|
|
'type' => self::INVITE_NEW_TASK,
|
|
'state' => $state,
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->_rspData(array(
|
|
'list'=>$list
|
|
));
|
|
}
|
|
|
|
public function cancelTag()
|
|
{
|
|
$type = getReqVal('type', 0);
|
|
$unnid = getReqVal('item_unnid', 0);
|
|
$propertyChgService = new services\PropertyChgService();
|
|
switch ($type) {
|
|
case self::HERO :{
|
|
$heroDb = Hero::find($unnid);
|
|
if (!$heroDb){
|
|
$this->_rspErr(1, 'param item_unnid error');
|
|
return;
|
|
}
|
|
Hero::update($unnid,array(
|
|
'is_old' => 1
|
|
));
|
|
$propertyChgService->addHeroChg();
|
|
}
|
|
break;
|
|
case self::CHIP :{
|
|
$chipDb = Chip::find($unnid);
|
|
if (!$chipDb){
|
|
$this->_rspErr(2, 'param item_unnid error');
|
|
return;
|
|
}
|
|
Chip::update2($unnid,array(
|
|
'is_old' => 1
|
|
));
|
|
$propertyChgService->addChip();
|
|
}
|
|
break;
|
|
case self::BAG :{
|
|
$bagDb = Bag::findByUniId($unnid);
|
|
if (!$bagDb){
|
|
$this->_rspErr(3, 'param item_unnid error');
|
|
return;
|
|
}
|
|
SqlHelper::update
|
|
(myself()->_getSelfMysql(),
|
|
't_bag',
|
|
array(
|
|
'idx' => $unnid,
|
|
),
|
|
array(
|
|
'is_old' => 1
|
|
)
|
|
);
|
|
$propertyChgService->addBagChg();
|
|
}
|
|
break;
|
|
case self::HASH_RATE :{
|
|
|
|
}
|
|
break;
|
|
case self::HERO_SKIN :{
|
|
$skinDb = HeroSkin::find($unnid);
|
|
if (!$skinDb){
|
|
$this->_rspErr(1, 'param item_unnid error');
|
|
return;
|
|
}
|
|
HeroSkin::update($unnid,array(
|
|
'is_old' => 1
|
|
));
|
|
$propertyChgService->addHeroSkinChg();
|
|
}
|
|
break;
|
|
default:{
|
|
$this->_rspErr(4, 'param type error');
|
|
return;
|
|
}
|
|
}
|
|
$this->_rspData(array(
|
|
'property_chg' => $propertyChgService->toDto()
|
|
));
|
|
}
|
|
|
|
public function getGameModuleState(){
|
|
//七日签到
|
|
$signState = 0;
|
|
$signDb = SignLog::find();
|
|
if(($signDb['days'] == 7 && $signDb['is_receive'] == 1) || $signDb['days'] > 7){
|
|
$signState = 1;
|
|
}
|
|
//排位
|
|
$rankState = 0;
|
|
$currSeasonMeta = mt\RankSeason::getCurrentSeason();
|
|
if($currSeasonMeta){
|
|
$rankState = 1;
|
|
|
|
}
|
|
$countdown = 0;
|
|
$nextCurrSeasonMeta = mt\RankSeason::getNextCurrentSeason();
|
|
if ($nextCurrSeasonMeta){
|
|
$countdown = strtotime($nextCurrSeasonMeta['start_time']) - myself()->_getNowTime();
|
|
}
|
|
//算力
|
|
$hashRateState = 0;
|
|
$hashRateMeta = \mt\HashRateCommon::find(1);
|
|
if (myself()->_getNowTime() > strtotime($hashRateMeta['start_time'])){
|
|
$hashRateState = 1;
|
|
}
|
|
|
|
$data = array(
|
|
"firstTopUp" => myself()->_getV(TN_FIRST_TUPOP_STATUS,0),
|
|
"signDayState" => $signState,
|
|
"rankState" => $rankState,
|
|
"nextRankSeasonCountdown" => $countdown,
|
|
"hashRateState" => $hashRateState,
|
|
);
|
|
$this->_rspData(array(
|
|
'data'=>$data
|
|
));
|
|
}
|
|
|
|
public function getRankingState(){
|
|
$recordDb = RankingSetRecord::find();
|
|
$data = array(
|
|
'state' => 0 ,
|
|
);
|
|
if ($recordDb){
|
|
$data = RankingSetRecord::toDto($recordDb);;
|
|
}
|
|
$this->_rspData(array(
|
|
'data'=>$data
|
|
));
|
|
}
|
|
|
|
public function getCecRewardHistory(){
|
|
$historyList = array();
|
|
$totalCecVal = 0;
|
|
SeasonRanking::getSeasonList(function ($row) use (&$historyList,&$totalCecVal) {
|
|
if ($row && $row['ranking_point'] > 0){
|
|
$totalCecVal += ($row['ranking_point'] * 0.15);
|
|
array_push($historyList,array(
|
|
'type' => 1,
|
|
'cecVal' => $row['ranking_point'] * 0.15,
|
|
'createtime' => $row['createtime'],
|
|
));
|
|
}
|
|
});
|
|
|
|
// \models\RewardsCec::all(function ($row) use (&$historyList,&$totalCecVal) {
|
|
// if ($row){
|
|
// $totalCecVal += $row['reward_cec'];
|
|
// array_push($historyList,array(
|
|
// 'type' => 2,
|
|
// 'cecVal' => $row['reward_cec'],
|
|
// 'createtime' => $row['createtime'],
|
|
// ));
|
|
// }
|
|
// });
|
|
|
|
// $stakingDb = Staking::all(myself()->_getAddress());
|
|
// foreach ($stakingDb as $row) {
|
|
// if ($row['status'] == Staking::REDEEM_STATUS) {
|
|
// $item = Staking::toDto($row);
|
|
// $totalCecVal += $item['total_rewards'];
|
|
// array_push($historyList, array(
|
|
// "type" => 3,
|
|
// "cecVal" => $item['total_rewards'],
|
|
// "createtime" => $item['redeem_time']
|
|
// ));
|
|
// }
|
|
// }
|
|
$rewards = \mt\ActivityRewards::find(myself()->_getAccountId());
|
|
if ($rewards){
|
|
foreach ($rewards as $reward){
|
|
array_push($historyList, array(
|
|
"type" => -1,
|
|
"event_name" => $reward['event_name'],
|
|
"cecVal" => $reward['cec'],
|
|
"createtime" => strtotime($reward['time'])
|
|
));
|
|
}
|
|
}
|
|
|
|
$this->_rspData(array(
|
|
'cec'=>$totalCecVal,
|
|
'list'=>$historyList,
|
|
));
|
|
|
|
|
|
}
|
|
|
|
public function getMapModeList()
|
|
{
|
|
$modeList = array();
|
|
// $taskStatus = GlobalData::getServerTaskStatus();
|
|
// $taskMeta = mt\ServerTaskTime::getCurrentTime();
|
|
$rankSeasonMeta = mt\RankSeason::getCurrentSeason();
|
|
$circuitTimeMeta = mt\CircuitTime::getCurrentCircuit();
|
|
mt\MapMode::traverseMeta(function($modeMeta) use(&$modeList, $rankSeasonMeta,$circuitTimeMeta){
|
|
if ($modeMeta['is_open']) {
|
|
|
|
if ($modeMeta['limit_time'] == 1 && !$rankSeasonMeta) {
|
|
return true;
|
|
}
|
|
if ($modeMeta['limit_time'] == 3 && !$circuitTimeMeta){
|
|
return true;
|
|
}
|
|
$temp = array(
|
|
'id' => $modeMeta['id']
|
|
);
|
|
|
|
|
|
if ($modeMeta['daily_open_time']){
|
|
$dailyOpenTimeOffset = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ".$modeMeta['daily_open_time']));
|
|
$dailyEndTimeOffset = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ".$modeMeta['daily_end_time']));
|
|
$nowTimeOffset = myself()->_getDaySecondsOffset(myself()->_getNowTime());
|
|
$temp['daily_open_time'] = strtotime($modeMeta['daily_open_time']) ;
|
|
$temp['daily_end_time'] = strtotime($modeMeta['daily_end_time']);
|
|
$temp['state'] = 0;
|
|
if ($nowTimeOffset >= $dailyOpenTimeOffset && $nowTimeOffset <= $dailyEndTimeOffset ){
|
|
$temp['state'] = 1;
|
|
}
|
|
}
|
|
|
|
|
|
if ($modeMeta['daily_open_time_2']){
|
|
$dailyOpenTimeOffset = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ".$modeMeta['daily_open_time_2']));
|
|
$dailyEndTimeOffset = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ".$modeMeta['daily_end_time_2']));
|
|
$nowTimeOffset = myself()->_getDaySecondsOffset(myself()->_getNowTime());
|
|
$temp['daily_open_time_2'] = strtotime($modeMeta['daily_open_time_2']) ;
|
|
$temp['daily_end_time_2'] = strtotime($modeMeta['daily_end_time_2']);
|
|
if ($nowTimeOffset >= $dailyOpenTimeOffset && $nowTimeOffset <= $dailyEndTimeOffset){
|
|
$temp['state'] = 1;
|
|
}
|
|
}
|
|
if ($modeMeta['limit_time'] == 3){
|
|
$circuitStageMeta = mt\CircuitTime::getCurrentStage();
|
|
if($circuitStageMeta){
|
|
$temp['stage_state'] = 1;
|
|
}else{
|
|
$temp['stage_state'] = 0;
|
|
$temp['state'] = 0;
|
|
$nextStageMeta = mt\CircuitTime::getNextStage($circuitTimeMeta['circuit_season']);
|
|
$temp['next_star_time'] = strtotime($nextStageMeta['start_time']);
|
|
$temp['next_end_time'] = strtotime($nextStageMeta['end_time']);
|
|
}
|
|
if (myself()->_switchIsOpen('circuitTask')){
|
|
if (CircuitTask::_verifyCondition($circuitTimeMeta['circuit_season'])){
|
|
$temp['task_state'] = 1;
|
|
}else{
|
|
$temp['task_state'] = 0;
|
|
}
|
|
}else{
|
|
$temp['task_state'] = 1;
|
|
}
|
|
}
|
|
|
|
|
|
$isOpen = mt\MapMode::isOpen($modeMeta);
|
|
if ($isOpen) {
|
|
if ($modeMeta['mapMode'] == \mt\MapMode::CIRCUIT_MODE){
|
|
if (myself()->_switchIsOpen('circuitMatch')) {
|
|
if (count(CIRCUIT_MATCH_SERVER_LIST) <= 0 ||
|
|
in_array(myself()->_getZid(), CIRCUIT_MATCH_SERVER_LIST)) {
|
|
array_unshift($modeList,$temp);
|
|
}
|
|
}
|
|
}else{
|
|
array_push($modeList, $temp);
|
|
}
|
|
|
|
}
|
|
}
|
|
return true;
|
|
});
|
|
$this->_rspData(array(
|
|
'mode_list' => $modeList
|
|
));
|
|
}
|
|
|
|
public function getServerSwitch(){
|
|
$version = getReqVal('_version', 0);
|
|
$packageId = getReqVal('_packageid', 0);
|
|
$row = SqlHelper::ormSelectOne(myself()->_getConfDbMysql(), 't_audit',
|
|
array(
|
|
'model' => $packageId
|
|
));
|
|
$examining = !empty($row) && $row['version'] == $version && $row['is_auditing'] ? 1 : 0;
|
|
$con = services\ServerSwitchService::getGameSwitch();
|
|
$this->_rspData(array(
|
|
'data' => $examining ? $con['auditing'] : $con['normal']
|
|
));
|
|
}
|
|
|
|
|
|
}
|