🐞 fix(活动): 朝夕拾遗覆盖问题
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user