diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index b0ddcaab8..6350fc5b6 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -2,9 +2,8 @@ import { Application, BackendSession, HandlerService, pinus, } from 'pinus'; import { resResult } from '../../../pubUtils/util'; import { ENCRYPT_IV, ENCRYPT_KEY, STATUS, TASK_TYPE } from '../../../consts'; import { ActivityGroupModel } from '../../../db/ActivityGroup'; -import { ServerlistModel } from '../../../db/Serverlist'; -import { getActivitiesWithOrder, getActivity, getActivityById } from '../../../services/activity/activityService'; -import { ActivityModel, ActivityModelType } from '../../../db/Activity'; +import { getActivitiesWithOrder, getActivity, getActivityById, getActivityByServerId, shouldReplace } from '../../../services/activity/activityService'; +import { ActivityModelType } from '../../../db/Activity'; import { UserOrderModel } from '../../../db/UserOrder'; export default function (app: Application) { @@ -32,15 +31,30 @@ export class ActivityHandler { const uid: number = session.get('userid'); const sid: string = session.get('sid'); + let originActivities = await getActivityByServerId(serverId); + let maxIdByType = new Map(); // type => max + let activityById = new Map(); // id => activity - let playerActivityArray = []; + for(let activity of originActivities) { + let shouldPush = true; + if(shouldReplace(activity.type)) { // 该类型只能有一个id,选最大的那个 + let max = maxIdByType.get(activity.type)||0; + if(activity.activityId > max) { + activityById.delete(max); + maxIdByType.set(activity.type, activity.activityId); + } else { + shouldPush = false; + } + } + if(shouldPush) activityById.set(activity.activityId, activity); + } let groups = await ActivityGroupModel.findByServerId(serverId); let playerGroupArray = []; for (let groupData of groups) { let playerGroupActivityArray = []; for (let activityId of groupData.activities) { - let activityData = await getActivityById(activityId); + let activityData = activityById.get(activityId); if (activityData) { let playerActivityData = await getActivity(serverId, roleId, uid, guildCode, activityId, activityData.type); if(playerActivityData) { @@ -56,7 +70,7 @@ export class ActivityHandler { console.log(`${roleId} 活动合集 groupId:${groupData.groupId}, 合集类型${groupData.type}, 一共${playerGroupActivityArray.length}个`) } - return resResult(STATUS.SUCCESS, { playerActivityArray, playerGroupArray }); + return resResult(STATUS.SUCCESS, { playerActivityArray: [], playerGroupArray }); } async getActivitiesByOrder(msg: { localOrderID: string }, session: BackendSession) { diff --git a/game-server/app/services/activity/activityService.ts b/game-server/app/services/activity/activityService.ts index ee59350a8..660b8a9c5 100644 --- a/game-server/app/services/activity/activityService.ts +++ b/game-server/app/services/activity/activityService.ts @@ -407,4 +407,21 @@ export async function getActivitiesWithOrder(orderInfo: UserOrderModelType) { } } return activities; +} + +export function shouldReplace(activityType: ACTIVITY_TYPE) { + switch(activityType) { + case ACTIVITY_TYPE.TASK_PASS: + // case ACTIVITY_TYPE.SIGN_IN: + // case ACTIVITY_TYPE.SIGN_IN_VIP: + // case ACTIVITY_TYPE.GROWTH_FUND_MAIN: // 成长基金 6 + // case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: // 高阶成长基金 7 + // case ACTIVITY_TYPE.GROWTH_FUND_TOWER: // 镇念塔成长基金 8 + // case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP: // 高阶镇念塔成长基金 9 + // case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE: // 精英成长基金 10 + // case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP:// 高阶精英成长基金 11 + return true; + default: + return false; + } } \ No newline at end of file