🐞 fix(朝夕拾遗): 同时出现两个活动时选择id较大的

This commit is contained in:
luying
2022-12-08 21:01:06 +08:00
parent 9ec9a20786
commit f661a082e6
2 changed files with 37 additions and 6 deletions

View File

@@ -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<number, number>(); // type => max
let activityById = new Map<number, ActivityModelType>(); // 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) {