This commit is contained in:
aozhiwei 2021-12-07 18:10:16 +08:00
parent d60494418f
commit ce1f4b3fe1
5 changed files with 92 additions and 10 deletions

View File

@ -17,6 +17,8 @@ class Mission(object):
], ],
'response': [ 'response': [
_common.RspHead(), _common.RspHead(),
['current_active_value', 0, '当前活跃度'],
['max_active_value', 0, '活跃度上限'],
['!mission_list1', [_common.Mission()], '任务列表1'], ['!mission_list1', [_common.Mission()], '任务列表1'],
['!mission_list2', [_common.Mission()], '任务列表2'], ['!mission_list2', [_common.Mission()], '任务列表2'],
] ]

View File

@ -7,6 +7,7 @@ require_once('mt/Item.php');
require_once('mt/Parameter.php'); require_once('mt/Parameter.php');
require_once('mt/Drop.php'); require_once('mt/Drop.php');
require_once('mt/Task.php'); require_once('mt/Task.php');
require_once('mt/Season.php');
require_once('models/User.php'); require_once('models/User.php');
require_once('models/DynData.php'); require_once('models/DynData.php');
@ -16,9 +17,11 @@ require_once('models/HeroSkin.php');
require_once('models/GunSkin.php'); require_once('models/GunSkin.php');
require_once('models/ShopBuyRecord.php'); require_once('models/ShopBuyRecord.php');
require_once('models/Mission.php'); require_once('models/Mission.php');
require_once('models/Season.php');
require_once('services/AwardService.php'); require_once('services/AwardService.php');
require_once('services/PropertyChgService.php'); require_once('services/PropertyChgService.php');
require_once('services/SeasonService.php');
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
use models\User; use models\User;
@ -29,18 +32,52 @@ use models\HeroSkin;
use models\GunSkin; use models\GunSkin;
use models\ShopBuyRecord; use models\ShopBuyRecord;
use models\Mission; use models\Mission;
use models\Season;
class MissionController extends BaseAuthedController { class MissionController extends BaseAuthedController {
private $propertyChgService = null;
private $userInfo = null;
private $seasonService = null;
private $currSeasonMeta = null;
private $seasonDb = null;
public function _handlePre()
{
parent::_handlePre();
DynData::preload();
$this->currSeasonMeta = mt\Season::getCurrentSeason();
if (!$this->currSeasonMeta) {
$this->_rspErr(10, '服务器内部错误');
die();
}
$this->propertyChgService = new services\PropertyChgService();
$this->userInfo = $this->_safeGetOrmUserInfo();
$this->seasonService = new services\SeasonService();
if (!$this->seasonService->checkSeason($this->userInfo)) {
$this->userInfo = $this->_safeGetOrmUserInfo();
$this->propertyChgService->addUserChg();
}
$this->seasonDb = Season::find($this->currSeasonMeta['id']);
if (!$this->seasonDb) {
Season::add($this->currSeasonMeta['id']);
$this->seasonDb = Season::find($this->currSeasonMeta['id']);
}
if (!$this->seasonDb) {
$this->_rspErr(10, '服务器内部错误');
die();
}
}
public function missionList() public function missionList()
{ {
DynData::preload(); $type = getReqVal('type', 0);
$missionMetaList = array(); $missionMetaList = mt\Task::getCustomTypeMetaList($type);
$missionHash = Mission::allToHash(); $missionHash = Mission::allToHash();
$missionDtoList = array(); $missionDtoList = array();
foreach ($missionMetaList as $missionMeta) { foreach ($missionMetaList as $missionMeta) {
$missionDb = getXVal($missionHash, $missionId, null); $missionDb = getXVal($missionHash, $missionMeta['id'], null);
$missionDto = $this->getMissionDto($missionDb, $missionMeta); $missionDto = $this->getMissionDto($this->userInfo, $this->seasonDb, $missionDb, $missionMeta);
array_push($missionDtoList, $missionDto); array_push($missionDtoList, $missionDto);
} }
$this->_rspData(array( $this->_rspData(array(
@ -57,7 +94,7 @@ class MissionController extends BaseAuthedController {
return; return;
} }
$missionDb = Mission::find($missionId); $missionDb = Mission::find($missionId);
$missionDto = $this->getMissionDto($missionDb, $missionMeta); $missionDto = $this->getMissionDto($this->userInfo, $this->seasonDb, $missionDb, $missionMeta);
if (!$missionDto) { if (!$missionDto) {
$this->_rspErr(10, '服务器内部错误'); $this->_rspErr(10, '服务器内部错误');
return; return;
@ -499,10 +536,10 @@ class MissionController extends BaseAuthedController {
case mt\Task::CONSUME_GOLD_COND: case mt\Task::CONSUME_GOLD_COND:
{ {
//消耗X个金币 //消耗X个金币
/*if ($userInfo['consume_gold'] >= $missionDto['target']) { if ($userInfo['consume_gold'] >= $missionDto['target']) {
$missionDto['current'] = $missionDto['target']; $missionDto['current'] = $missionDto['target'];
$missionDto['state'] = Mission::RECEIVEABLE_STATE; $missionDto['state'] = Mission::RECEIVEABLE_STATE;
}*/ }
} }
break; break;
case mt\Task::BATTLE_RANK_COND: case mt\Task::BATTLE_RANK_COND:

View File

@ -9,7 +9,7 @@ class DynData extends BaseModel {
public static function preload() public static function preload()
{ {
if (!self::$dynData) { if (is_null(self::$dynData)) {
self::$dynData = array(); self::$dynData = array();
$rows = SqlHelper::ormSelect( $rows = SqlHelper::ormSelect(
myself()->_getSelfMysql(), myself()->_getSelfMysql(),
@ -32,7 +32,7 @@ class DynData extends BaseModel {
return getXVal(self::$dynData, $key, $defVal); return getXVal(self::$dynData, $key, $defVal);
} else { } else {
++self::$hitCount; ++self::$hitCount;
if (self::$hitCount > 5) { if (self::$hitCount > 5 && is_null(self::$dynData)) {
self::preload(); self::preload();
return self::getV($x, $y, $defVal); return self::getV($x, $y, $defVal);
} else { } else {

View File

@ -52,7 +52,7 @@ class Task {
const ACHIEVEMENT_MISSON_TYPE = 2; const ACHIEVEMENT_MISSON_TYPE = 2;
const ACTIVITY_MISSON_TYPE = 3; const ACTIVITY_MISSON_TYPE = 3;
const RANK_MISSON_TYPE = 4; const RANK_MISSON_TYPE = 4;
const SEASONCARD_MISSON_TYPE = 4; const SEASONCARD_MISSON_TYPE = 5;
const SEASON_WEAKLY_MISSON_SUBTYPE = 1; const SEASON_WEAKLY_MISSON_SUBTYPE = 1;
const SEASON_CHALLENGE_MISSON_SUBTYPE = 2; const SEASON_CHALLENGE_MISSON_SUBTYPE = 2;
@ -60,11 +60,43 @@ class Task {
const SEASON_MISSON_FLAG = 1; const SEASON_MISSON_FLAG = 1;
const DAILY_MISSION_CUSTOM_TYPE = 1;
const SEASON_WEEKLY_MISSION_CUSTOM_TYPE = 2;
public static function get($id) public static function get($id)
{ {
return getXVal(self::getMetaList(), $id); return getXVal(self::getMetaList(), $id);
} }
public static function getCustomTypeMetaList($type)
{
$metaList = array();
foreach (self::getMetaList() as $meta) {
switch ($type) {
case self::DAILY_MISSION_CUSTOM_TYPE:
{
if ($meta['type'] == self::DAILY_MISSON_TYPE) {
array_push($metaList, $meta);
}
}
break;
case self::SEASON_WEEKLY_MISSION_CUSTOM_TYPE:
{
if ($meta['type'] == self::SEASONCARD_MISSON_TYPE &&
$meta['subtype'] == self::SEASON_WEAKLY_MISSON_SUBTYPE) {
array_push($metaList, $meta);
}
}
break;
default:
{
}
break;
}
}
return $metaList;
}
protected static function getMetaList() protected static function getMetaList()
{ {
if (!self::$metaList) { if (!self::$metaList) {

View File

@ -0,0 +1,11 @@
<?php
namespace services;
use phpcommon\SqlHelper;
use mt;
use models\User;
class MissionService extends BaseService {
}