diff --git a/game-server/app/servers/activity/handler/newHeroGKHandler.ts b/game-server/app/servers/activity/handler/newHeroGKHandler.ts new file mode 100644 index 000000000..f0b2ac621 --- /dev/null +++ b/game-server/app/servers/activity/handler/newHeroGKHandler.ts @@ -0,0 +1,66 @@ +import { Application, BackendSession, HandlerService, } from 'pinus'; +import { resResult } from '../../../pubUtils/util'; +import { STATUS } from '../../../consts'; +import { getPlayerNewHeroGKData } from '../../../services/activity/newHeroGKService'; + + +export default function (app: Application) { + new HandlerService(app, {}); + return new NewHeroGKHandler(app); +} + +export class NewHeroGKHandler { + constructor(private app: Application) { + } + + /************************新将演绎 (通用每日关卡,分页,自定义每个关卡开放的时间长短);(配置N个武将,每个武将有X个关卡;活动期间,*天(时间自定义)开启每个武将对应的一个关卡,只有第一次通关会获得奖励)****************************/ + + /** + * @description 获取关卡活动数据 + * @param {{ activityId: number}} msg + * @param {BackendSession} session + * @memberof NewHeroGKHandler + */ + async getNewHeroGKActivity(msg: { activityId: number }, session: BackendSession) { + const { activityId } = msg; + const roleId = session.get('roleId'); + const serverId = session.get('serverId'); + + let playerData = await getPlayerNewHeroGKData(activityId, serverId, roleId) + + if (!playerData) return resResult(STATUS.ACTIVITY_MISSING); + + return resResult(STATUS.SUCCESS, playerData); + } + + /** + * @description 获取今日挑战的单个奖励 + * @param {{ activityId: number, pageIndex: number, index:number}} msg + * @param {BackendSession} session + * @memberof NewHeroGKHandler + */ + async getGK(msg: { activityId: number, pageIndex: number, index: number }, session: BackendSession) { + const { activityId, pageIndex, index } = msg; + const roleId = session.get('roleId'); + const serverId = session.get('serverId'); + const sid = session.get('sid'); + const roleName = session.get('roleName'); + + + // let playerData = await getPlayerNewHeroGKData(activityId, serverId, roleId) + // if (!playerData) return resResult(STATUS.ACTIVITY_MISSING); + + // let dailyItemData: NewHeroGKItem = playerData.findNewHeroGKItem(pageIndex, index); + // if (!dailyItemData) { + // return resResult(STATUS.ACTIVITY_DATA_ERROR); + // } + + // if (dailyItemData.begin > playerData.todayIndex || dailyItemData.end < playerData.todayIndex) { + // return resResult(STATUS.ACTIVITY_DAY_INDEX_OVER); + // } + // // await challengeNewHeroGK(serverId, roleId, activityId, pageIndex, dailyItemData.gk) + + return resResult(STATUS.SUCCESS); + } + +} diff --git a/game-server/app/services/activity/newHeroGKService.ts b/game-server/app/services/activity/newHeroGKService.ts new file mode 100644 index 000000000..e1c484919 --- /dev/null +++ b/game-server/app/services/activity/newHeroGKService.ts @@ -0,0 +1,85 @@ +import { ACTIVITY_TYPE } from '../../consts'; +import { ActivityModel, ActivityModelType } from '../../db/Activity'; +import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK'; +import { NewHeroGKData } from '../../domain/activityField/newHeroGKField'; +import { getRoleCreateTime, getServerCreateTime } from '../redisService'; +import { getActivitiesByType, getActivityById } from './activityService'; + + +/** + * 获取活动数据 + * + * @param {number} serverId 区Id + * @param {number} activityId 活动Id + * @param {string} roleId 角色Id + * + */ +export async function newHeroGKActivity(serverId: number, roleId: string) { + let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.DAILY_GK); + if (activityDataArray.length === 0) { + return null; + } + let activityData: ActivityModelType = activityDataArray[0]; + let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityData.activityId, roleId); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGKData(activityData, createTime, serverTime); + playerData.setPlayerRecords(playerRecord); + return playerData; +} + + +/** + * 玩家玩家活动数据 + * + * @param {number} serverId 区Id + * @param {number} activityId 活动Id + * @param {string} roleId 角色Id + * + */ +export async function getPlayerNewHeroGKData(activityId: number, serverId: number, roleId: string) { + let activityData = await getActivityById(activityId); + let playerRecord: ActivityNewHeroGKModelType = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); + + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + let playerData = new NewHeroGKData(activityData, createTime, serverTime); + playerData.setPlayerRecords(playerRecord); + + return playerData; +} + +/** + * 挑战每日关卡成功 + * + * @param {number} activityId 活动id + * @param {number} gk 关卡id + * + */ +// export async function challengeNewHeroGK(serverId: number, roleId: string, activityId: number, pageIndex: number, gk: number) { +// let isFirst = false; +// let activityData: ActivityModelType = await getActivityById(activityId); +// let playerRecords = await ActivityNewHeroGKModel.findData(serverId, activityId, roleId); +// let records = playerRecords && playerRecords.records ? playerRecords.records : []; + +// let createTime = await getRoleCreateTime(roleId); +// let serverTime = await getServerCreateTime(serverId); +// let playerData = new NewHeroGKData(activityData, createTime, serverTime); +// let item = playerData.findItemByGK(pageIndex, gk); +// if (item) { +// let index = item.index; +// let recordIndex = records.findIndex(obj => { return obj.pageIndex == pageIndex && obj.index == index }); +// if (recordIndex == -1) { +// isFirst = true; +// await ActivityNewHeroGKModel.addRecord(serverId, activityId, roleId, pageIndex, index); +// } +// } else { +// console.log('challengeNewHeroGK没有找到对应关卡活动数据', activityId, gk) +// } +// return isFirst; +// } + + + +