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