diff --git a/game-server/app/servers/activity/handler/newHeroGachaHandler.ts b/game-server/app/servers/activity/handler/newHeroGachaHandler.ts new file mode 100644 index 000000000..3b5cae258 --- /dev/null +++ b/game-server/app/servers/activity/handler/newHeroGachaHandler.ts @@ -0,0 +1,33 @@ +import { Application, BackendSession, HandlerService, } from 'pinus'; +import { resResult } from '../../../pubUtils/util'; +import { STATUS } from '../../../consts'; +import { getPlayerNewHeroGachaData } from '../../../services/activity/newHeroService'; + + +export default function (app: Application) { + new HandlerService(app, {}); + return new NewHeroGachaHandler(app); +} + +export class NewHeroGachaHandler { + constructor(private app: Application) { + } + + /** + * @description 获取关卡活动数据 + * @param {{ activityId: number}} msg + * @param {BackendSession} session + * @memberof NewHeroGachaHandler + */ + async getData(msg: { activityId: number }, session: BackendSession) { + const { activityId } = msg; + const roleId = session.get('roleId'); + const serverId = session.get('serverId'); + + let playerData = await getPlayerNewHeroGachaData(activityId, serverId, roleId) + + if (!playerData) return resResult(STATUS.ACTIVITY_MISSING); + + return resResult(STATUS.SUCCESS, playerData); + } +} diff --git a/game-server/app/services/checkParam.ts b/game-server/app/services/checkParam.ts index 504151c35..a72aa499c 100644 --- a/game-server/app/services/checkParam.ts +++ b/game-server/app/services/checkParam.ts @@ -105,6 +105,7 @@ export function checkRouteParam(route: string, msg: any) { case 'activity.newHeroGachaHandler.getNewHeroGachaActivity': case 'activity.newHeroGiftsHandler.getNewHeroGiftsActivity': case 'activity.newHeroGKHandler.getNewHeroGKActivity': + case 'activity.newHeroGachaHandler.getData': case 'activity.popUpShopHandler.getPopUpShopActivity': case 'activity.rechargeMoneyHandler.getRechargeMoneyActivity': case 'activity.refreshShopHandler.getRefreshShopActivity': diff --git a/shared/domain/activityField/newHeroGachaField.ts b/shared/domain/activityField/newHeroGachaField.ts index cc684a598..89f8b1362 100644 --- a/shared/domain/activityField/newHeroGachaField.ts +++ b/shared/domain/activityField/newHeroGachaField.ts @@ -1,6 +1,7 @@ import { ActivityModelType } from '../../db/Activity'; import { UserGachaType } from '../../db/UserGacha'; import { DicGacha } from '../../pubUtils/dictionary/DicGacha'; +import { getGachaRemainFloor } from '../../pubUtils/util'; import { ActivityBase } from './activityField'; interface NewHeroGachaItemInDb { @@ -29,6 +30,7 @@ export class NewHeroGachaData extends ActivityBase { pickHero: number = 0; count: number = 0; isFree: boolean = false; // 免费次数 + remainFloor: number = 0; constructor(activityData: ActivityModelType, createTime: number, serverTime: number) { super(activityData, createTime, serverTime) @@ -59,6 +61,7 @@ export class NewHeroGachaData extends ActivityBase { this.pickHero = data.pickHero; this.count = data.count; this.isFree = data.freeCount < dic?.free.count; + this.remainFloor = getGachaRemainFloor(data.gachaId, data.floor||[]) } } diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index e3651a82d..1de0396e0 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -839,7 +839,7 @@ export function arrToMap(arr: T[], getKey: (obj: T) => number|string): Map