🐞 fix(活动): 朝夕拾遗覆盖问题

This commit is contained in:
luying
2022-12-26 09:50:21 +08:00
parent d6dcc12c02
commit 7603174f1d

View File

@@ -33,20 +33,23 @@ export class ActivityHandler {
let originActivities = await getActivityByServerId(serverId);
let maxIdByType = new Map<number, number>(); // type => max
let activityById = new Map<number, ActivityModelType>(); // id => activity
let activityById = new Map<number, any>(); // id => activity
for(let activity of originActivities) {
let playerActivityData = await getActivity(serverId, roleId, uid, guildCode, activity.activityId, activity.type);
if(!playerActivityData) continue;
let shouldPush = true;
if(shouldReplace(activity.type)) { // 该类型只能有一个id选最大的那个
let max = maxIdByType.get(activity.type)||0;
if(activity.activityId > max) {
if(shouldReplace(playerActivityData.type)) { // 该类型只能有一个id选最大的那个
let max = maxIdByType.get(playerActivityData.type)||0;
if(playerActivityData.activityId > max) {
activityById.delete(max);
maxIdByType.set(activity.type, activity.activityId);
maxIdByType.set(playerActivityData.type, playerActivityData.activityId);
} else {
shouldPush = false;
}
}
if(shouldPush) activityById.set(activity.activityId, activity);
if(shouldPush) activityById.set(playerActivityData.activityId, playerActivityData);
}
let groups = await ActivityGroupModel.findByServerId(serverId);
@@ -54,12 +57,9 @@ export class ActivityHandler {
for (let groupData of groups) {
let playerGroupActivityArray = [];
for (let activityId of groupData.activities) {
let activityData = activityById.get(activityId);
if (activityData) {
let playerActivityData = await getActivity(serverId, roleId, uid, guildCode, activityId, activityData.type);
if(playerActivityData) {
playerGroupActivityArray.push(playerActivityData);
}
let playerActivityData = activityById.get(activityId);
if(playerActivityData) {
playerGroupActivityArray.push(playerActivityData);
}
}
playerGroupArray.push({