diff --git a/doc/Circuit.py b/doc/Circuit.py index c253a37a..9b32a34c 100644 --- a/doc/Circuit.py +++ b/doc/Circuit.py @@ -31,7 +31,19 @@ class Circuit(object): ['!rank_list', [rankingInfo()], '榜信息'], ['my_rank', rankingInfo(), '个人榜信息'], ] - } + },{ + 'name': 'CircuitTaskList', + 'desc': '巡回赛任务', + 'group': 'Circuit', + 'url': 'webapp/index.php?c=Circuit&a=CircuitTaskList', + 'params': [ + _common.ReqHead(), + ], + 'response': [ + _common.RspHead(), + ['!list', [task()], '任务列表'], + ] + }, ] @@ -60,4 +72,13 @@ class rankingInfo(object): ['ranking', 0, '排名'], ['score', 0, '积分'], ['cec', 0, 'cec(个人榜信息才有)'], + ] + +class task(object): + + def __init__(self): + self.fields = [ + ['task_id', 0, '任务id'], + ['current', 0, '当前进度'], + ['target', 0, '目标进度'], ] \ No newline at end of file diff --git a/sql/gamedb.sql b/sql/gamedb.sql index f061f3a2..f4c92c2f 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -2255,3 +2255,23 @@ CREATE TABLE `t_lucky_symbol_record` ( ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `t_circuit_task_value` +-- + +DROP TABLE IF EXISTS `t_circuit_task_value`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_circuit_task_value` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `circuit_season` int(11) NOT NULL DEFAULT '0' COMMENT '期', + `task_type` int(11) NOT NULL DEFAULT '0' COMMENT '任务id', + `value` int(11) 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_id_task` (`account_id`, `task_type`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; + diff --git a/sql/gamedb2006_migrate_241001_01.sql b/sql/gamedb2006_migrate_241001_01.sql index ce5e0808..dc51239b 100644 --- a/sql/gamedb2006_migrate_241001_01.sql +++ b/sql/gamedb2006_migrate_241001_01.sql @@ -66,6 +66,7 @@ CREATE TABLE `t_hashrate_shop_buy_record` ( CREATE TABLE `t_circuit_task_value` ( `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `circuit_season` int(11) NOT NULL DEFAULT '0' COMMENT '期', `task_type` int(11) NOT NULL DEFAULT '0' COMMENT '任务id', `value` int(11) NOT NULL DEFAULT '0' COMMENT '任务进度', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', diff --git a/webapp/controller/CircuitController.class.php b/webapp/controller/CircuitController.class.php index 07d20844..b70fcf3a 100644 --- a/webapp/controller/CircuitController.class.php +++ b/webapp/controller/CircuitController.class.php @@ -3,16 +3,19 @@ require_once('mt/Parameter.php'); require_once('mt/CircuitTime.php'); require_once('mt/CircuitReward.php'); +require_once('mt/CircuitTask.php'); require_once('models/Circuit.php'); require_once('models/User.php'); require_once('models/Hero.php'); require_once('models/HeroSkin.php'); +require_once('models/CircuitTask.php'); use models\Circuit; use models\User; use models\Hero; use models\HeroSkin; +use models\CircuitTask; use phpcommon\SqlHelper; class CircuitController extends BaseAuthedController { private $redis_key_circuit_ranking = 'circuit_ranking'; @@ -33,9 +36,20 @@ class CircuitController extends BaseAuthedController { public function CircuitTaskList(){ $circuitCircuitMeta = mt\CircuitTime::getCurrentCircuit(); $nextCircuitMeta = mt\CircuitTime::getNextCircuit(); - if (!$circuitCircuitMeta){ - + $taskList = array(); + if (!$circuitCircuitMeta && $nextCircuitMeta){ + $metas = \mt\CircuitTask::getListBySeason($nextCircuitMeta['circuit_season']); + if (count($metas) > 0){ + foreach ($metas as $meta){ + array_push($taskList, array( + 'task_id' => $meta['id'], + 'current' => CircuitTask::getCurrentVal($nextCircuitMeta['circuit_season'],$meta['type']), + 'target' => $meta['target'], + )); + } + } } + $this->_rspData(array('list' => $taskList)); } public function getCurrentStage(){ diff --git a/webapp/controller/HashRateController.class.php b/webapp/controller/HashRateController.class.php index 52fe8123..6ad57b34 100644 --- a/webapp/controller/HashRateController.class.php +++ b/webapp/controller/HashRateController.class.php @@ -6,6 +6,7 @@ require_once('mt/AchievementsPower.php'); require_once('mt/AchievementsCycle.php'); require_once('mt/Parameter.php'); require_once('mt/RookieTask.php'); +require_once('mt/CircuitTask.php'); require_once('models/HashRate.php'); use models\HashRate; @@ -139,6 +140,7 @@ class HashRateController extends BaseAuthedController myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_RATE_DRAW_REWARD_TIMES_COND,1); }else{ myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_TASK_COMMIT_TIMES_COND,1); + myself()->_callModelStatic('CircuitTask','incTaskVal',mt\CircuitTask::COMPLETE_HASH_TASK_END,1); } myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::TOTAL_HASH_RATE_VALUE_COND,$rewardNum); diff --git a/webapp/controller/OutAppCircuitController.class.php b/webapp/controller/OutAppCircuitController.class.php index 8a89d0bb..9037eba0 100644 --- a/webapp/controller/OutAppCircuitController.class.php +++ b/webapp/controller/OutAppCircuitController.class.php @@ -53,7 +53,10 @@ class OutAppCircuitController extends BaseController { $currentStageMeta = \mt\CircuitTime::getCurrentStage(); $prevStageMeta = \mt\CircuitTime::getPrevStage(); - if (!$currentStageMeta && $prevStageMeta && !CircuitReward::_verifySettlement($prevStageMeta['circuit_season'],$prevStageMeta['circuit_phase'])){ + if (!$currentStageMeta && + $prevStageMeta && + $prevStageMeta['is_reward'] > 0 && + !CircuitReward::_verifySettlement($prevStageMeta['circuit_season'],$prevStageMeta['circuit_phase'])){ $rows = Circuit::getRankingList($prevStageMeta['circuit_season']); if (count($rows) > 0){ $totalWeight = 0; diff --git a/webapp/models/CircuitTask.php b/webapp/models/CircuitTask.php new file mode 100644 index 00000000..80d9b4de --- /dev/null +++ b/webapp/models/CircuitTask.php @@ -0,0 +1,69 @@ +_getSelfMysql(), + 't_circuit_task_value', + array( + 'account_id' => myself()->_getAccountId(), + 'circuit_season' => $season, + 'task_type' => $taskType, + ), + array( + 'value' => function () use ($value){ + return "value + ${value}"; + }, + 'modifytime' => myself()->_getNowTime(), + ), + array( + 'account_id' => myself()->_getAccountId(), + 'circuit_season' => $season, + 'task_type' => $taskType, + 'value' => $value, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime(), + ) + ); + } + + public static function getCurrentVal($season,$taskType){ + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_circuit_task_value', + array( + 'account_id' => myself()->_getAccountId(), + 'circuit_season' => $season, + 'task_type' => $taskType, + ) + ); + return $row ? $row['value'] : 0; + } + + +} \ No newline at end of file diff --git a/webapp/mt/CircuitTask.php b/webapp/mt/CircuitTask.php new file mode 100644 index 00000000..1b547868 --- /dev/null +++ b/webapp/mt/CircuitTask.php @@ -0,0 +1,32 @@ +mapMode == mt\MapMode::CIRCUIT_MODE){ $circuitMeta = mt\CircuitTime::getCurrentCircuit(); - if ($circuitMeta){ + if ($circuitMeta && CircuitTask::_verifyCondition($circuitMeta['circuit_season'])){ $minScore = mt\Parameter::getVal('circuit_rank_score_min',0); $multConstant = mt\Parameter::getVal('circuit_score_mult_constant',1); $shiftConstant = mt\Parameter::getVal('circuit_score_shift_constant',1); @@ -147,7 +149,7 @@ class RoomBattleDataService extends BaseService { $battleSingleDb = BattleSettlement::findSingle($this->battleSettlementDb['battle_uuid']); if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){ - error_log("金币模式:消极战斗"); + error_log("宝箱模式:消极战斗"); }else{ $this->_getBattleRewards($battleSingleDb, $userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member); myself()->_addItems($member['reward'], $awardService,$propertyChgService); diff --git a/webapp/services/TameBattleDataService.php b/webapp/services/TameBattleDataService.php index a355f826..9fd46617 100644 --- a/webapp/services/TameBattleDataService.php +++ b/webapp/services/TameBattleDataService.php @@ -17,6 +17,7 @@ require_once('mt/MapMode.php'); require_once('mt/BattleReward.php'); require_once('mt/CircuitTime.php'); require_once('mt/RookieTask.php'); +require_once('mt/CircuitTask.php'); require_once('models/Season.php'); require_once('models/Battle.php'); @@ -105,7 +106,7 @@ class TameBattleDataService extends BaseService { return false; } myself()->_fireEvent('Battle','onSettlement',$this->battleInfo); - + myself()->_callModelStatic('CircuitTask','incTaskVal',mt\CircuitTask::BATTLE_TIMES_END,1); $this->incRookieTaskValue(); //记录战斗有效行为 // $this->_updateBattleData();