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

This commit is contained in:
luying
2022-12-26 09:50:43 +08:00
parent d6dcc12c02
commit 7603174f1d
@@ -33,20 +33,23 @@ export class ActivityHandler {
let originActivities = await getActivityByServerId(serverId); let originActivities = await getActivityByServerId(serverId);
let maxIdByType = new Map<number, number>(); // type => max 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) { for(let activity of originActivities) {
let playerActivityData = await getActivity(serverId, roleId, uid, guildCode, activity.activityId, activity.type);
if(!playerActivityData) continue;
let shouldPush = true; let shouldPush = true;
if(shouldReplace(activity.type)) { // 该类型只能有一个id,选最大的那个 if(shouldReplace(playerActivityData.type)) { // 该类型只能有一个id,选最大的那个
let max = maxIdByType.get(activity.type)||0; let max = maxIdByType.get(playerActivityData.type)||0;
if(activity.activityId > max) { if(playerActivityData.activityId > max) {
activityById.delete(max); activityById.delete(max);
maxIdByType.set(activity.type, activity.activityId); maxIdByType.set(playerActivityData.type, playerActivityData.activityId);
} else { } else {
shouldPush = false; shouldPush = false;
} }
} }
if(shouldPush) activityById.set(activity.activityId, activity); if(shouldPush) activityById.set(playerActivityData.activityId, playerActivityData);
} }
let groups = await ActivityGroupModel.findByServerId(serverId); let groups = await ActivityGroupModel.findByServerId(serverId);
@@ -54,12 +57,9 @@ export class ActivityHandler {
for (let groupData of groups) { for (let groupData of groups) {
let playerGroupActivityArray = []; let playerGroupActivityArray = [];
for (let activityId of groupData.activities) { for (let activityId of groupData.activities) {
let activityData = activityById.get(activityId); let playerActivityData = activityById.get(activityId);
if (activityData) { if(playerActivityData) {
let playerActivityData = await getActivity(serverId, roleId, uid, guildCode, activityId, activityData.type); playerGroupActivityArray.push(playerActivityData);
if(playerActivityData) {
playerGroupActivityArray.push(playerActivityData);
}
} }
} }
playerGroupArray.push({ playerGroupArray.push({