This commit is contained in:
hujiabin 2024-10-17 14:09:36 +08:00
parent c43b938564
commit 143db181aa
10 changed files with 172 additions and 7 deletions

View File

@ -31,7 +31,19 @@ class Circuit(object):
['!rank_list', [rankingInfo()], '榜信息'], ['!rank_list', [rankingInfo()], '榜信息'],
['my_rank', 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()], '任务列表'],
]
},
] ]
@ -61,3 +73,12 @@ class rankingInfo(object):
['score', 0, '积分'], ['score', 0, '积分'],
['cec', 0, 'cec(个人榜信息才有)'], ['cec', 0, 'cec(个人榜信息才有)'],
] ]
class task(object):
def __init__(self):
self.fields = [
['task_id', 0, '任务id'],
['current', 0, '当前进度'],
['target', 0, '目标进度'],
]

View File

@ -2255,3 +2255,23 @@ CREATE TABLE `t_lucky_symbol_record` (
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */; /*!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 */;

View File

@ -66,6 +66,7 @@ CREATE TABLE `t_hashrate_shop_buy_record` (
CREATE TABLE `t_circuit_task_value` ( CREATE TABLE `t_circuit_task_value` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', `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', `task_type` int(11) NOT NULL DEFAULT '0' COMMENT '任务id',
`value` int(11) NOT NULL DEFAULT '0' COMMENT '任务进度', `value` int(11) NOT NULL DEFAULT '0' COMMENT '任务进度',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',

View File

@ -3,16 +3,19 @@
require_once('mt/Parameter.php'); require_once('mt/Parameter.php');
require_once('mt/CircuitTime.php'); require_once('mt/CircuitTime.php');
require_once('mt/CircuitReward.php'); require_once('mt/CircuitReward.php');
require_once('mt/CircuitTask.php');
require_once('models/Circuit.php'); require_once('models/Circuit.php');
require_once('models/User.php'); require_once('models/User.php');
require_once('models/Hero.php'); require_once('models/Hero.php');
require_once('models/HeroSkin.php'); require_once('models/HeroSkin.php');
require_once('models/CircuitTask.php');
use models\Circuit; use models\Circuit;
use models\User; use models\User;
use models\Hero; use models\Hero;
use models\HeroSkin; use models\HeroSkin;
use models\CircuitTask;
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
class CircuitController extends BaseAuthedController { class CircuitController extends BaseAuthedController {
private $redis_key_circuit_ranking = 'circuit_ranking'; private $redis_key_circuit_ranking = 'circuit_ranking';
@ -33,10 +36,21 @@ class CircuitController extends BaseAuthedController {
public function CircuitTaskList(){ public function CircuitTaskList(){
$circuitCircuitMeta = mt\CircuitTime::getCurrentCircuit(); $circuitCircuitMeta = mt\CircuitTime::getCurrentCircuit();
$nextCircuitMeta = mt\CircuitTime::getNextCircuit(); $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(){ public function getCurrentStage(){
$circuitStageMeta = mt\CircuitTime::getCurrentStage(); $circuitStageMeta = mt\CircuitTime::getCurrentStage();

View File

@ -6,6 +6,7 @@ require_once('mt/AchievementsPower.php');
require_once('mt/AchievementsCycle.php'); require_once('mt/AchievementsCycle.php');
require_once('mt/Parameter.php'); require_once('mt/Parameter.php');
require_once('mt/RookieTask.php'); require_once('mt/RookieTask.php');
require_once('mt/CircuitTask.php');
require_once('models/HashRate.php'); require_once('models/HashRate.php');
use models\HashRate; use models\HashRate;
@ -139,6 +140,7 @@ class HashRateController extends BaseAuthedController
myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_RATE_DRAW_REWARD_TIMES_COND,1); myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_RATE_DRAW_REWARD_TIMES_COND,1);
}else{ }else{
myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_TASK_COMMIT_TIMES_COND,1); 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); myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::TOTAL_HASH_RATE_VALUE_COND,$rewardNum);

View File

@ -53,7 +53,10 @@ class OutAppCircuitController extends BaseController {
$currentStageMeta = \mt\CircuitTime::getCurrentStage(); $currentStageMeta = \mt\CircuitTime::getCurrentStage();
$prevStageMeta = \mt\CircuitTime::getPrevStage(); $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']); $rows = Circuit::getRankingList($prevStageMeta['circuit_season']);
if (count($rows) > 0){ if (count($rows) > 0){
$totalWeight = 0; $totalWeight = 0;

View File

@ -0,0 +1,69 @@
<?php
namespace models;
use mt;
use phpcommon\SqlHelper;
class CircuitTask extends BaseModel
{
public static function _verifyCondition($season){
$metas = mt\CircuitTask::getListBySeason($season);
foreach ($metas as $meta){
$current = self::getCurrentVal($season,$meta['type']);
if ($current < $meta['target']){
return false;
}
}
return true;
}
public static function incTaskVal($taskType,$value){
$circuitCircuitMeta = mt\CircuitTime::getCurrentCircuit();
$nextCircuitMeta = mt\CircuitTime::getNextCircuit();
if ($circuitCircuitMeta || !$nextCircuitMeta){
return;
}
$season = $nextCircuitMeta['circuit_season'];
SqlHelper::upsert(
myself()->_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;
}
}

32
webapp/mt/CircuitTask.php Normal file
View File

@ -0,0 +1,32 @@
<?php
namespace mt;
use phpcommon;
class CircuitTask {
const BATTLE_TIMES_END = 1;
const COMPLETE_HASH_TASK_END = 2;
public static function getListBySeason($season){
$metas = array();
foreach (self::getMetaList() as $meta){
if ($meta['limit_type'] == $season){
array_push($metas,$meta);
}
}
return $metas;
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('circuitTask@circuitTask.php');
}
return self::$metaList;
}
protected static $metaList;
}

View File

@ -7,6 +7,7 @@ require_once('models/HashRate.php');
require_once('models/Season.php'); require_once('models/Season.php');
require_once('models/TicketConsumeRecord.php'); require_once('models/TicketConsumeRecord.php');
require_once('models/Circuit.php'); require_once('models/Circuit.php');
require_once('models/CircuitTask.php');
require_once('mt/MapMode.php'); require_once('mt/MapMode.php');
require_once('mt/Rank.php'); require_once('mt/Rank.php');
@ -24,6 +25,7 @@ require_once('services/BattleBoxService.php');
require_once('phpcommon/tglog.php'); require_once('phpcommon/tglog.php');
use models\Circuit; use models\Circuit;
use models\CircuitTask;
use models\TicketConsumeRecord; use models\TicketConsumeRecord;
use mt; use mt;
use services; use services;
@ -133,7 +135,7 @@ class RoomBattleDataService extends BaseService {
//巡回模式排位分计算 //巡回模式排位分计算
if ($this->mapMode == mt\MapMode::CIRCUIT_MODE){ if ($this->mapMode == mt\MapMode::CIRCUIT_MODE){
$circuitMeta = mt\CircuitTime::getCurrentCircuit(); $circuitMeta = mt\CircuitTime::getCurrentCircuit();
if ($circuitMeta){ if ($circuitMeta && CircuitTask::_verifyCondition($circuitMeta['circuit_season'])){
$minScore = mt\Parameter::getVal('circuit_rank_score_min',0); $minScore = mt\Parameter::getVal('circuit_rank_score_min',0);
$multConstant = mt\Parameter::getVal('circuit_score_mult_constant',1); $multConstant = mt\Parameter::getVal('circuit_score_mult_constant',1);
$shiftConstant = mt\Parameter::getVal('circuit_score_shift_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']); $battleSingleDb = BattleSettlement::findSingle($this->battleSettlementDb['battle_uuid']);
if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){ if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){
error_log("金币模式:消极战斗"); error_log("宝箱模式:消极战斗");
}else{ }else{
$this->_getBattleRewards($battleSingleDb, $userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member); $this->_getBattleRewards($battleSingleDb, $userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member);
myself()->_addItems($member['reward'], $awardService,$propertyChgService); myself()->_addItems($member['reward'], $awardService,$propertyChgService);

View File

@ -17,6 +17,7 @@ require_once('mt/MapMode.php');
require_once('mt/BattleReward.php'); require_once('mt/BattleReward.php');
require_once('mt/CircuitTime.php'); require_once('mt/CircuitTime.php');
require_once('mt/RookieTask.php'); require_once('mt/RookieTask.php');
require_once('mt/CircuitTask.php');
require_once('models/Season.php'); require_once('models/Season.php');
require_once('models/Battle.php'); require_once('models/Battle.php');
@ -105,7 +106,7 @@ class TameBattleDataService extends BaseService {
return false; return false;
} }
myself()->_fireEvent('Battle','onSettlement',$this->battleInfo); myself()->_fireEvent('Battle','onSettlement',$this->battleInfo);
myself()->_callModelStatic('CircuitTask','incTaskVal',mt\CircuitTask::BATTLE_TIMES_END,1);
$this->incRookieTaskValue(); $this->incRookieTaskValue();
//记录战斗有效行为 //记录战斗有效行为
// $this->_updateBattleData(); // $this->_updateBattleData();