diff --git a/game-server/app/servers/activity/handler/dragonBoatHandler.ts b/game-server/app/servers/activity/handler/dragonBoatHandler.ts index 0a7874f98..725f32aed 100644 --- a/game-server/app/servers/activity/handler/dragonBoatHandler.ts +++ b/game-server/app/servers/activity/handler/dragonBoatHandler.ts @@ -1,5 +1,5 @@ import { Application, BackendSession, HandlerService, } from 'pinus'; -import { resResult } from '../../../pubUtils/util'; +import { parseNumberList, resResult } from '../../../pubUtils/util'; import { ITEM_CHANGE_REASON, STATUS } from '../../../consts'; import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { getPlayerDragonBoatData, getPlayerDragonBoatDataShow } from '../../../services/activity/dragonBoatService'; @@ -54,9 +54,13 @@ export class DragonBoatHandler { let route = playerData.findRoute(id); if(!route) return resResult(STATUS.ACTIVITY_DRAGON_BOAT_ROUTE_NOTFOUND); if(route.hasPass) return resResult(STATUS.ACTIVITY_DRAGON_BOAT_ROUTE_HAS_PASS); - if(route.preId) { - let preRoute = playerData.findRoute(route.preId); - if(!preRoute || !preRoute.hasPass) return resResult(STATUS.ACTIVITY_DRAGON_BOAT_PRE_NOT_PASS); + if(route.preId && route.preId != '&') { + let preIds = parseNumberList(route.preId); + let hasPass = preIds.find(preId => { + let preRoute = playerData.findRoute(preId); + return preRoute && preRoute.hasPass; + }); + if(!hasPass) return resResult(STATUS.ACTIVITY_DRAGON_BOAT_PRE_NOT_PASS); } let rewards = stringToRewardParam(route.reward); let playerRecord = await ActivityDragonBoatModel.record(serverId, activityId, playerData.roundIndex, roleId, { todayIndex: playerData.todayIndex, id, time: new Date(), rewards }) diff --git a/shared/domain/activityField/dragonBoatField.ts b/shared/domain/activityField/dragonBoatField.ts index ed3becd0e..4f652238b 100644 --- a/shared/domain/activityField/dragonBoatField.ts +++ b/shared/domain/activityField/dragonBoatField.ts @@ -6,7 +6,7 @@ import { ActivityBase } from './activityField'; // 后台格式 interface RouteInDb { id: number; // 唯一id,对应 dic_zyz_duanwu_dragonBoat的id - preId: number; // 前一个的节点,对应dic_zyz_duanwu_dragonBoat的id + preId: string; // 前一个的节点,对应dic_zyz_duanwu_dragonBoat的id type: number; // 节点显示类型,1-普通奖励 2-高级奖励 3-漩涡 reward: string; // 到了这个节点可以获得的奖励,type&id&count } @@ -20,7 +20,7 @@ interface DragonBoatDataInDb { class RouteData { id: number; // 唯一id,对应 dic_zyz_duanwu_dragonBoat的id - preId: number; // 前一个的节点,对应dic_zyz_duanwu_dragonBoat的id + preId: string; // 前一个的节点,对应dic_zyz_duanwu_dragonBoat的id type: number; // 节点显示类型,1-普通奖励 2-高级奖励 3-漩涡 reward: string; // 到了这个节点可以获得的奖励,type&id&count resultReward: {id: number, count: number}[];