From 6ccd751f0d73296335dcedbcc15fd0bcfbf16ebf Mon Sep 17 00:00:00 2001 From: hujiabin <519660157@qq.com> Date: Fri, 11 Oct 2024 12:05:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E4=BA=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/RookieTask.py | 59 ++++++++++ sql/gamedb.sql | 55 +++++++++ sql/gamedb2006_migrate_241001_01.sql | 30 +++++ webapp/bootstrap/constant.php | 1 + webapp/controller/BagController.class.php | 2 + .../controller/BaseAuthedController.class.php | 18 ++- webapp/controller/ChipController.class.php | 2 + .../controller/ChipPageController.class.php | 3 + .../controller/HashRateController.class.php | 9 ++ .../controller/RookieTaskController.class.php | 78 ++++++++++++ .../controller/SavingPotController.class.php | 3 + webapp/events/Synthesis.php | 3 + webapp/events/Upgrade.php | 3 +- webapp/models/RookieTask.php | 111 ++++++++++++++++++ webapp/mt/RookieTask.php | 53 +++++++++ webapp/services/RookieTaskService.php | 42 +++++++ webapp/services/TameBattleDataService.php | 2 + 17 files changed, 472 insertions(+), 2 deletions(-) create mode 100644 doc/RookieTask.py create mode 100644 webapp/controller/RookieTaskController.class.php create mode 100644 webapp/models/RookieTask.php create mode 100644 webapp/mt/RookieTask.php create mode 100644 webapp/services/RookieTaskService.php diff --git a/doc/RookieTask.py b/doc/RookieTask.py new file mode 100644 index 00000000..10731e9f --- /dev/null +++ b/doc/RookieTask.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +import _common + +class RookieTask(object): + + def __init__(self): + self.apis = [ + { + 'name': 'bindRookieTask', + 'desc': '记录用户新人任务开启', + 'group': 'RookieTask', + 'url': 'webapp/index.php?c=RookieTask&a=bindRookieTask', + 'params': [ + _common.ReqHead(), + ], + 'response': [ + _common.RspHead(), + ] + },{ + 'name': 'taskList', + 'desc': '新人任务列表', + 'group': 'RookieTask', + 'url': 'webapp/index.php?c=RookieTask&a=taskList', + 'params': [ + _common.ReqHead(), + ], + 'response': [ + _common.RspHead(), + ['!task_list1', [Task()], '任务列表1'], + ['!task_list2', [Task()], '任务列表2'], + ] + },{ + 'name': 'commitTaskS', + 'desc': '提交任务', + 'group': 'RookieTask', + 'url': 'webapp/index.php?c=RookieTask&a=commitTaskS', + 'params': [ + _common.ReqHead(), + ['task_id', [Task()], '任务id'], + ], + 'response': [ + _common.RspHead(), + ['award', _common.Award(), '奖励信息'], + ['property_chg', _common.PropertyChg(), '属性变更'], + ] + }, + ] + + +class Task(object): + + def __init__(self): + self.fields = [ + ['task_id', 0, '任务id'], + ['current', 0, '任务进度-当前'], + ['target', 0, '任务进度-目标'], + ['state', 0, '任务状态 0:未完成 1:完成未领取 2:完成已领取 3:未到时间'], + ] \ No newline at end of file diff --git a/sql/gamedb.sql b/sql/gamedb.sql index 39c00db2..236bfc85 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -2139,3 +2139,58 @@ CREATE TABLE `t_user_bind_gold_record` ( ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `t_user_rookie_task_bind` +-- + +DROP TABLE IF EXISTS `t_user_rookie_task_bind`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_user_rookie_task_bind` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY `account_id` (`account_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `t_rookie_task` +-- + +DROP TABLE IF EXISTS `t_rookie_task`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_rookie_task` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `task_id` int(11) NOT NULL DEFAULT '0' COMMENT '任务id', + `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_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; + + +-- +-- Table structure for table `t_rookie_task_value` +-- + +DROP TABLE IF EXISTS `t_rookie_task_value`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_rookie_task_value` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `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 a9d1b65d..79b8a2b9 100644 --- a/sql/gamedb2006_migrate_241001_01.sql +++ b/sql/gamedb2006_migrate_241001_01.sql @@ -14,6 +14,36 @@ CREATE TABLE `t_user_bind_gold_record` ( PRIMARY KEY (`idx`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +CREATE TABLE `t_user_rookie_task_bind` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY `account_id` (`account_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +CREATE TABLE `t_rookie_task` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `task_id` int(11) NOT NULL DEFAULT '0' COMMENT '任务id', + `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_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +CREATE TABLE `t_rookie_task_value` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)', + `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; + insert into version (version) values(2024092401); commit; diff --git a/webapp/bootstrap/constant.php b/webapp/bootstrap/constant.php index ec577b24..25c32671 100644 --- a/webapp/bootstrap/constant.php +++ b/webapp/bootstrap/constant.php @@ -27,6 +27,7 @@ define('V_ITEM_REVIVE_COIN', 140001); //复活币 define('V_ITEM_CHIP_META', 100007); //芯片升级材料 define('V_ITEM_GOLD_BULLION_1W', 10017); //金砖1w define('V_ITEM_GOLD_BULLION_10W', 10018); //金砖10w +define('V_ITEM_ROOKIE_TASK_POINT', 10027); //新人七日任务积分 define('TN_BEGIN', 8001); define('TN_ACTIVE', 8002); diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index 19635851..f183eff4 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -6,6 +6,7 @@ require_once('mt/Drop.php'); require_once('mt/Hero.php'); require_once('mt/LootConfig.php'); require_once('mt/StakingVip.php'); +require_once('mt/RookieTask.php'); require_once('models/Bag.php'); require_once('models/Hero.php'); @@ -443,6 +444,7 @@ class BagController extends BaseAuthedController { ); $this->_decItems($costItems); $this->openBattleBox($itemDb,$itemMeta,$itemNum,$costItems); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::PIGGY_BANK_OPEN_BOX_TIMES_COND,$itemNum); } private function openBattleBox($itemDb,$itemMeta,$itemNum,$costItems){ diff --git a/webapp/controller/BaseAuthedController.class.php b/webapp/controller/BaseAuthedController.class.php index 76449fec..b60c7e65 100644 --- a/webapp/controller/BaseAuthedController.class.php +++ b/webapp/controller/BaseAuthedController.class.php @@ -26,6 +26,7 @@ require_once('mt/Drop.php'); require_once('mt/StarLevel.php'); require_once('mt/BattlePass.php'); require_once('mt/AchievementsCycle.php'); +require_once('mt/RookieTask.php'); use phpcommon\SqlHelper; use models\Bag; @@ -346,7 +347,16 @@ class BaseAuthedController extends BaseController { public function _isVirtualItem($itemId) { - return in_array($itemId, array(V_ITEM_BIND_GOLD,V_ITEM_GOLD, V_ITEM_DIAMOND, V_ITEM_EXP, V_ITEM_ACTIVE,V_ITEM_BCEG,V_ITEM_STAR)); + return in_array($itemId, array( + V_ITEM_BIND_GOLD, + V_ITEM_GOLD, + V_ITEM_DIAMOND, + V_ITEM_EXP, + V_ITEM_ACTIVE, + V_ITEM_BCEG, + V_ITEM_STAR, + V_ITEM_ROOKIE_TASK_POINT, + )); } public function _addVirtualItem($itemId, $itemNum) @@ -450,6 +460,12 @@ class BaseAuthedController extends BaseController { case V_ITEM_BIND_GOLD: { $this->_incDailyV(TN_DAILY_BIND_GOLD, 0,$itemNum); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::PIGGY_BANK_GOLD_COND,$itemNum); + } + break; + case V_ITEM_ROOKIE_TASK_POINT: + { + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::TOTAL_COMMIT_TASK_TIMES_COND,$itemNum); } break; default: diff --git a/webapp/controller/ChipController.class.php b/webapp/controller/ChipController.class.php index 0c7de310..f619e16b 100644 --- a/webapp/controller/ChipController.class.php +++ b/webapp/controller/ChipController.class.php @@ -8,6 +8,7 @@ require_once('mt/BattleRandAttribute.php'); require_once('mt/EconomyAttribute.php'); require_once('mt/Manufacture.php'); require_once('mt/Parameter.php'); +require_once('mt/RookieTask.php'); require_once('services/PropertyChgService.php'); require_once('services/AwardService.php'); @@ -299,6 +300,7 @@ class ChipController extends BaseAuthedController )); $this->_addItems($items,$awardService,$propertyChgService); } + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::SALVAGE_CHIP_TIMES_COND,count($uniidArr)); $propertyChgService->addChip(); $propertyChgService->addBagChg(); $event = array( diff --git a/webapp/controller/ChipPageController.class.php b/webapp/controller/ChipPageController.class.php index 6b55886f..7d459fd4 100644 --- a/webapp/controller/ChipPageController.class.php +++ b/webapp/controller/ChipPageController.class.php @@ -4,6 +4,7 @@ require_once('models/Chip.php'); require_once('models/ChipPage.php'); require_once('models/Hero.php'); require_once('mt/EconomyAttribute.php'); +require_once('mt/RookieTask.php'); require_once('services/ChipPageService.php'); require_once('services/PropertyChgService.php'); @@ -88,6 +89,7 @@ class ChipPageController extends BaseAuthedController $this->_decItems($costItems); $propertyChgService->addUserChg(); ChipPage::unlockSlot($chipPageDb,$slotId); + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::OPEN_CHIP_SLOT_TIMES_COND,1); $this->_rspData(array( 'property_chg' => $propertyChgService->toDto(), )); @@ -144,6 +146,7 @@ class ChipPageController extends BaseAuthedController ChipPage::update($hero_unnid,array( 'data' => json_encode($data) )); + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::EMBED_CHIP_COND,1); $newChipPageDb = ChipPage::find($hero_unnid); $chipPageDto = ChipPage::toDtoInfo($newChipPageDb); $this->_rspData(array( diff --git a/webapp/controller/HashRateController.class.php b/webapp/controller/HashRateController.class.php index 93b34f97..52fe8123 100644 --- a/webapp/controller/HashRateController.class.php +++ b/webapp/controller/HashRateController.class.php @@ -5,6 +5,7 @@ require_once('services/LootService.php'); require_once('mt/AchievementsPower.php'); require_once('mt/AchievementsCycle.php'); require_once('mt/Parameter.php'); +require_once('mt/RookieTask.php'); require_once('models/HashRate.php'); use models\HashRate; @@ -134,6 +135,13 @@ class HashRateController extends BaseAuthedController $rewardNum = $reward[0]['item_num']; HashRate::add($taskMeta['id'],$currentPeriod['id']); HashRate::rewardAdd($currentPeriod['id'],$rewardNum); + if ($taskMeta['task_type'] == \mt\AchievementsPower::TYPE5){ + 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('RookieTask','incTaskVal',mt\RookieTask::TOTAL_HASH_RATE_VALUE_COND,$rewardNum); // //刷新任务 // $refreshTimes = myself()->_getDailyV(TN_HASH_DAILY_REFRESH_TIMES,0); // $refreshTimesMax = \mt\Parameter::getVal('economy_account_compute_refresh_max',5); @@ -169,6 +177,7 @@ class HashRateController extends BaseAuthedController return; } $this->hashRateService->refreshHashRateTask($taskMeta,$currentPeriod['id']); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::HASH_TASK_REFRESH_TIMES_COND,1); $this->_rspOk(); } diff --git a/webapp/controller/RookieTaskController.class.php b/webapp/controller/RookieTaskController.class.php new file mode 100644 index 00000000..0f42a2dc --- /dev/null +++ b/webapp/controller/RookieTaskController.class.php @@ -0,0 +1,78 @@ +_rspOk(); + } + + public function taskList(){ + $day = getReqVal('day', 1); + $metaList = \mt\RookieTask::getCustomDayMetaList($day); + $taskList1 = array(); + foreach ($metaList as $meta){ + $metaDto = \services\RookieTaskService::getTaskDto($meta); + array_push($taskList1,$metaDto); + } + $metaList2 = \mt\RookieTask::getCustomDayMetaList(); + $taskList2 = array(); + foreach ($metaList2 as $meta){ + $metaDto = \services\RookieTaskService::getTaskDto($meta); + array_push($taskList2,$metaDto); + } + $this->_rspData(array( + 'task_list1' => $taskList1, + 'task_list2' => $taskList2, + )); + } + + public function commitTaskS(){ + $task_id = getReqVal('task_id', 0); + $taskMeta = mt\RookieTask::find($task_id); + if (!$taskMeta) { + $this->_rspErr(1, 'task_id parameter error'); + return; + } + $taskMetaDto = \services\RookieTaskService::getTaskDto($taskMeta); + if (!$taskMetaDto) { + $this->_rspErr(10, 'server internal error'); + return; + } + if ($taskMetaDto['state'] == \services\RookieTaskService::RECEIVED_STATE) { + $this->_rspErr(2, "Can't get it again"); + return; + } + if ($taskMetaDto['state'] == \services\RookieTaskService::NOT_FINISHED_STATE) { + $this->_rspErr(3, 'task objectives not achieved'); + return; + } + if ($taskMetaDto['state'] == \services\RookieTaskService::UNARRIVED_TIME_STATE) { + $this->_rspErr(3, 'The task is not started'); + return; + } + $dropMeta = mt\Drop::get($taskMeta['reward']); + if (!$dropMeta) { + $this->_rspErr(10, 'server internal error:' . $taskMeta['reward']); + return; + } + $propertyChgService = new services\PropertyChgService(); + $awardService = new services\AwardService(); + $this->_scatterDrop('rookieTask:' . $task_id, $dropMeta, $awardService, $propertyChgService); + RookieTask::add($task_id); + $this->_rspData(array( + 'award' => $awardService->toDto(), + 'property_chg' => $propertyChgService->toDto(), + )); + } + +} \ No newline at end of file diff --git a/webapp/controller/SavingPotController.class.php b/webapp/controller/SavingPotController.class.php index 2cea08d3..30199bf4 100644 --- a/webapp/controller/SavingPotController.class.php +++ b/webapp/controller/SavingPotController.class.php @@ -4,6 +4,7 @@ require_once('services/AwardService.php'); require_once('mt/ServerTaskTime.php'); require_once('mt/Parameter.php'); +require_once('mt/RookieTask.php'); require_once('models/Hero.php'); @@ -51,6 +52,7 @@ class SavingPotController extends BaseAuthedController { $this->_addItems($items, $awardService,$propertyChgService); $this->_setDailyV(TN_DAILY_DRAW_BIND_GOLD_STATE, 0,1); $this->_setDailyV(TN_DAILY_BIND_GOLD, 0,0); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::PIGGY_BANK_OPEN_TIMES_COND,1); SqlHelper::insert (myself()->_getSelfMysql(), 't_user_bind_gold_record', @@ -97,6 +99,7 @@ class SavingPotController extends BaseAuthedController { $this->_addItems($items, $awardService,$propertyChgService); $this->_setDailyV(TN_DAILY_DRAW_BIND_GOLD_STATE, 0,1); $this->_setDailyV(TN_DAILY_BIND_GOLD, 0,0); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::PIGGY_BANK_DRAW_TIMES_COND,1); SqlHelper::insert (myself()->_getSelfMysql(), 't_user_bind_gold_record', diff --git a/webapp/events/Synthesis.php b/webapp/events/Synthesis.php index ca82f50a..e0941448 100644 --- a/webapp/events/Synthesis.php +++ b/webapp/events/Synthesis.php @@ -2,16 +2,19 @@ namespace events; +require_once('mt/RookieTask.php'); class Synthesis { public static function onHroSyn($params){ myself()->_callServiceStatic('HashRateService', 'onSynHero', $params); + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::SYN_HERO_TIMES_COND,$params); } public static function onChipSyn($params){ myself()->_callServiceStatic('HashRateService', 'onSynChip', $params); + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::SYN_CHIP_TIMES_COND,$params); } public static function onSkinSyn($params){ diff --git a/webapp/events/Upgrade.php b/webapp/events/Upgrade.php index bda08725..2859b8f2 100644 --- a/webapp/events/Upgrade.php +++ b/webapp/events/Upgrade.php @@ -2,12 +2,13 @@ namespace events; - +require_once('mt/RookieTask.php'); class Upgrade { public static function onHeroUpgrade(){ myself()->_callServiceStatic('HashRateService', 'onUpLvHero'); + myself()->_callModelStatic('RookieTask','incTaskVal',\mt\RookieTask::UP_HERO_TIMES_COND,1); } public static function onChipUpgrade(){ diff --git a/webapp/models/RookieTask.php b/webapp/models/RookieTask.php new file mode 100644 index 00000000..82403bb6 --- /dev/null +++ b/webapp/models/RookieTask.php @@ -0,0 +1,111 @@ +_getSelfMysql(), + 't_user_rookie_task_bind', + array( + 'account_id' => myself()->_getAccountId(), + ) + ); + if (!$row){ + SqlHelper::insert( + myself()->_getSelfMysql(), + 't_user_rookie_task_bind', + array( + 'account_id' => myself()->_getAccountId(), + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime(), + ) + ); + } + } + public static function getMyStarTime(){ + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_user_rookie_task_bind', + array( + 'account_id' => myself()->_getAccountId(), + ) + ); + if (!$row){ + self::bindUser(); + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_user_rookie_task_bind', + array( + 'account_id' => myself()->_getAccountId(), + ) + ); + } + return myself()->_getDaySeconds($row['createtime']); + } + + public static function incTaskVal($taskType,$value){ + SqlHelper::upsert( + myself()->_getSelfMysql(), + 't_rookie_task_value', + array( + 'account_id' => myself()->_getAccountId(), + 'task_type' => $taskType, + ), + array( + 'value' => function () use ($value){ + return "value + ${value}"; + }, + 'modifytime' => myself()->_getNowTime(), + ), + array( + 'account_id' => myself()->_getAccountId(), + 'task_type' => $taskType, + 'value' => $value, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime(), + ) + ); + } + + public static function getCurrentVal($taskType){ + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_rookie_task_value', + array( + 'account_id' => myself()->_getAccountId(), + 'task_type' => $taskType, + ) + ); + return $row ? $row['value'] : 0; + } + + public static function find($taskId){ + return SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_rookie_task', + array( + 'account_id' => myself()->_getAccountId(), + 'task_id' => $taskId, + ) + ); + } + + public static function add($taskId){ + SqlHelper::insert( + myself()->_getSelfMysql(), + 't_rookie_task', + array( + 'account_id' => myself()->_getAccountId(), + 'task_id' => $taskId, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime(), + ) + ); + } + +} \ No newline at end of file diff --git a/webapp/mt/RookieTask.php b/webapp/mt/RookieTask.php new file mode 100644 index 00000000..f88076ea --- /dev/null +++ b/webapp/mt/RookieTask.php @@ -0,0 +1,53 @@ + $taskMeta['id'], + 'current' => RookieTask::getCurrentVal($taskMeta['type']), + 'target' => getXVal($taskMeta, 'target', 1), + 'state' => self::NOT_FINISHED_STATE, + ); + $starTime = RookieTask::getMyStarTime(); + if ($taskMeta['task_day'] > 0){ + $time = ($taskMeta['task_day']-1) * 86400; + if (myself()->_getNowDaySeconds() < $starTime+$time){ + $taskDto['state'] = self::UNARRIVED_TIME_STATE; + } + } + if ($taskDto['current'] >= $taskDto['target']) { + $taskDto['current'] = $taskDto['target']; + $taskDto['state'] = self::FINISHED_STATE; + } + $taskDb = RookieTask::find($taskMeta['id']); + if ($taskDb){ + $taskDto['state'] = self::RECEIVED_STATE; + } + return $taskDto; + } +} \ No newline at end of file diff --git a/webapp/services/TameBattleDataService.php b/webapp/services/TameBattleDataService.php index 7fe3405b..a149095f 100644 --- a/webapp/services/TameBattleDataService.php +++ b/webapp/services/TameBattleDataService.php @@ -16,6 +16,7 @@ require_once('mt/ServerTaskTime.php'); require_once('mt/MapMode.php'); require_once('mt/BattleReward.php'); require_once('mt/CircuitTime.php'); +require_once('mt/RookieTask.php'); require_once('models/Season.php'); require_once('models/Battle.php'); @@ -104,6 +105,7 @@ class TameBattleDataService extends BaseService { return false; } myself()->_fireEvent('Battle','onSettlement',$this->battleInfo); + myself()->_callModelStatic('RookieTask','incTaskVal',mt\RookieTask::BATTLE_TIMES_COND,1); //记录战斗有效行为 // $this->_updateBattleData(); //记录战斗数据的排行榜