From 2aac84bb8a8ac8abdeeae1eaa48c869b58d6ed64 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 1 Dec 2021 19:02:05 +0800 Subject: [PATCH] 1 --- webapp/controller/MissionController.class.php | 43 ++++++++++++++++++- webapp/models/Mission.php | 25 +++++++++++ webapp/mt/Drop.php | 13 ------ webapp/mt/Task.php | 42 ++++++++++++++++++ 4 files changed, 109 insertions(+), 14 deletions(-) diff --git a/webapp/controller/MissionController.class.php b/webapp/controller/MissionController.class.php index 9792740..89e2332 100644 --- a/webapp/controller/MissionController.class.php +++ b/webapp/controller/MissionController.class.php @@ -44,6 +44,37 @@ class MissionController extends BaseAuthedController { } $missionDb = Mission::find($missionId); $missionDto = $this->getMissionDto($missionDb, $missionMeta); + if (!$missionDto) { + $this->_rspErr(10, '服务器内部错误'); + return; + } + if ($missionDto[state] == Mission::RECEIVED_STATE) { + $this->_rspErr(2, '不能重复领取'); + return; + } + if ($missionDto[state] == Mission::NOT_FINISHED_STATE) { + $this->_rspErr(3, '任务目标未达成'); + return; + } + if ($missionDto[state] != Mission::RECEIVEABLE_STATE) { + $this->_rspErr(3, '未知任务状态'); + return; + } + $dropMeta = mt\Drop::get($missionMeta['reward']); + if (!$dropMeta) { + $this->_rspErr(10, '服务器内部错误drop错误'); + return; + } + $propertyChgService = new services\PropertyChgService(); + $awardService = new services\AwardService(); + Mission::add($missionId); + $missionDb = Mission::find($missionId); + $missionDto = $this->getMissionDto($missionDb, $missionMeta); + $this->_rspData(array( + 'award' => $awardService->toDto(), + 'property_chg' => $propertyChgService->toDto(), + 'mission_chg' => $missionDto + )); } private function getMissionDto($missionDb, $missionMeta) @@ -52,8 +83,18 @@ class MissionController extends BaseAuthedController { 'mission_id' => $missionMeta['id'], 'current' => 0, 'target' => 0, - 'state' => 0, + 'state' => Mission::NOT_FINISHED_STATE, ); + switch ($missionMeta['type']) { + case mt\Task::DAILY_LOGIN_TIMES_COND: + { + } + break; + default: + { + } + break; + } return $missionDto; } diff --git a/webapp/models/Mission.php b/webapp/models/Mission.php index 5963618..a666313 100644 --- a/webapp/models/Mission.php +++ b/webapp/models/Mission.php @@ -9,6 +9,10 @@ use phpcommon\SqlHelper; class Mission extends BaseModel { + const RECEIVEABLE_STATE = 0; + const RECEIVED_STATE = 1; + const NOT_FINISHED_STATE = 2; + public static function find($missionId) { $row = SqlHelper::ormSelectOne( @@ -57,4 +61,25 @@ class Mission extends BaseModel { return $missionHash; } + public static function add($missionId) + { + SqlHelper::upsert( + myself()->_getSelfMysql(), + 't_mission', + array( + 'account_id' => myself()->_getAccountId(), + 'mission_id' => $missionId + ), + array( + 'modifytime' => myself()->_getNowTime() + ), + array( + 'account_id' => myself()->_getAccountId(), + 'mission_id' => $missionId, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ) + ); + } + } diff --git a/webapp/mt/Drop.php b/webapp/mt/Drop.php index a2bb08f..2d7824c 100644 --- a/webapp/mt/Drop.php +++ b/webapp/mt/Drop.php @@ -11,19 +11,6 @@ class Drop { return array_key_exists($id, self::getMetaList()) ? self::getMetaList()[$id] : null; } - public static function getOldDrop($id) - { - $meta = self::get($id); - return array( - 'drop_id' => $meta['drop_id'], - 'item_id' => $meta['item_id'], - 'num' => $meta['num'], - 'weight' => $meta['weight'], - 'type' => $meta['type'], - 'time' => $meta['time'], - ); - } - public static function getDropData($meta) { $itemIds = splitStr1($meta['item_id']); diff --git a/webapp/mt/Task.php b/webapp/mt/Task.php index d607402..28d8a62 100644 --- a/webapp/mt/Task.php +++ b/webapp/mt/Task.php @@ -6,6 +6,48 @@ use phpcommon; class Task { + const DAILY_LOGIN_TIMES_COND = 1; //今日登陆 + const PLAYER_LEVEL_COND = 2; //玩家等级达到X + const TOTAL_BATTLE_TIMES_COND = 3; //进行X场比赛 + const SHARE_GAME_TIMES_COND = 4; //分享1次游戏 + const SINGLE_BATTLE_TIMES_COND = 5; //进行X场单人比赛 + const TEAM_BATTLE_TIMES_COND = 6; //进行X场组队比赛 + const SINGLE_BATTLE_RANK_COND = 7; //单人比赛排名前X + const TEAM_BATTLE_RANK_COND = 8; //组队比赛排名前X + const TOTAL_KILL_NUM_COND = 9; //累计击败X个敌人 + const TOTAL_DAMGE_OUT_COND = 10; //累计造成X点伤害 + const RESCUE_TEAMMATE_TIMES_COND = 11; //救援X个队友 + const TOTAL_SURVIVAL_TIME_COND = 12; //累计生存X分钟 + const USE_WEAPON_KILL_NUM_COND = 13; //使用X枪械击杀Y个敌人 + const USE_WEAPON_DAMGE_OUT_COND = 14; //使用X种枪械对敌人累计造成Y点伤害 + const USE_WEAPON_SLOT_TIMES_COND = 15; //使用某个槽位的次数 cond_param1=槽位 + const GET_EQUIP_TIMES_COND = 16; //获得某种类型的装备 cond_param1=equip.type cond_param2=equip.sub_type + const TOTAL_DIVING_TIMES_COND = 17; //累计潜水X次 + const TOTAL_DAMAGE_IN_COND = 18; //累计受到X点伤害 + const TOTAL_RECOVER_HP_COND = 19; //累计恢复X点血量 + const TOTAL_OPEN_AIRDROP_COND = 20; //累计打开空投补给X次 + const BATTLE_IN_HERO_LV_COND = 21; //单局内英雄技能升级到X级 + const BATTLE_IN_GUN_LV_COND = 22; //单局内英雄专属枪械升到X级 + const TOTAL_MEDICINE_TIMES_COND = 23; //累计使用X药品Y次 + const TOTAL_DESTORY_CAR_TIMES_COND = 24; //累计破坏载具X个 + const TOTAL_USE_CAMOUFLAGE_TIMES_COND = 25; //累计使用X个伪装物 + const TOTAL_USE_SKILL_TIMES_COND = 26; //累计使用X次角色技能 + const RIDE_CAR_MOVE_DISTANCE_COND = 27; //驾驶或乘坐载具累计移动X米(所有模式) + const RIDE_CAR_KILL_NUM_COND = 28; //驾驶或乘坐载具累计击杀X个敌人(所有模式) + const LIKE_TEAMMATE_TIMES_COND = 29; //战斗结算中累计给队友点赞X次 + const SEASON_LEVEL_COND = 30; //赛季段位达到X + const CONSUME_GOLD_COND = 31; //消耗X个金币 + const BATTLE_RANK_COND = 32; //获得X级评价Y次 + const FINISHED_ALL_DAILY_MISSION_COND = 33; //完成所有每日任务 + const SHOP_BUY_TIMES_COND = 34; //在X商店消费Y次 + const TOTAL_UPGRADE_TALENT_LV_COND = 35; //科研升级X次 + const TOTAL_GET_HERO_SKIN_COUNT_COND = 36; //累计获得X个角色时装 + const TOTAL_GET_GUN_SKIN_COUNT_COND = 37; //累计获得X个枪械皮肤 + const TOTAL_INVITE_FRIEND_TIMES_COND = 38; //邀请好友组队X次 + const TOTAL_GIVE_FRIEND_GOLD_COUNT_COND = 40; //赠送X个好友金币 + const TOTAL_INVITE_FRIEND_ONLINE_TIMES_COND = 41; //邀请X个好友上线 + const TOTAL_CREATE_OR_JOIN_GUILD_COUNT_COND = 42; //创建或加入1个战队 + public static function get($id) { return getXVal(self::getMetaList(), $id);