🐞 fix(团购): 修复团购定时器多出记录的问题

This commit is contained in:
luying
2022-11-07 15:16:30 +08:00
parent cdb262977c
commit 74fa24414c
3 changed files with 15 additions and 5 deletions

View File

@@ -814,7 +814,10 @@ async function initGroupShopSchedule() {
}); });
} }
let initSumJobs = [];
export async function initSumSchedule() { export async function initSumSchedule() {
let activities = await ActivityModel.findActivityByType(ACTIVITY_TYPE.GROUP_SHOP); let activities = await ActivityModel.findActivityByType(ACTIVITY_TYPE.GROUP_SHOP);
let scheduleMap = new Map<number, { activityId: number, itemId: number, sum: number }[]>(); // 时间 => data let scheduleMap = new Map<number, { activityId: number, itemId: number, sum: number }[]>(); // 时间 => data
for(let activity of activities) { for(let activity of activities) {
@@ -828,13 +831,19 @@ export async function initSumSchedule() {
} }
} }
console.log('#### initSumJobs', initSumJobs.length);
console.log('#### scheduleMap', scheduleMap);
for(let job of initSumJobs) {
job.cancel();
}
for(let [time, arr] of scheduleMap) { for(let [time, arr] of scheduleMap) {
if(scheduledJobs[`groupShopSetSum${time}`]) { if(scheduledJobs[`groupShopSetSum${time}`]) {
scheduledJobs[`groupShopSetSum${time}`].cancel(); scheduledJobs[`groupShopSetSum${time}`].cancel();
} }
scheduleJob(`groupShopSetSum${time}`, time, async () => { let job = scheduleJob(`groupShopSetSum${time}`, time, async () => {
await setGroupShopToSetSum(arr); await setGroupShopToSetSum(arr);
}); });
initSumJobs.push(job);
} }
} }

View File

@@ -34,7 +34,7 @@ export class GroupShopRecord {
/** /**
* 活动系统 - 团购总记录 * 活动系统 - 团购总记录
*/ */
@index({ activityId: 1 }) @index({ activityId: 1, itemId: 1 })
export default class Activity_Group_Shop_Rec extends BaseModel { export default class Activity_Group_Shop_Rec extends BaseModel {
@@ -74,8 +74,9 @@ export default class Activity_Group_Shop_Rec extends BaseModel {
} }
public static async setSum(activityId: number, itemId: number, sum: number) { public static async setSum(activityId: number, itemId: number, sum: number) {
await ActivityGroupShopRecModel.findOneAndUpdate({ activityId, itemId }, { $setOnInsert: { sum: 0 } }, { new: true, upsert: true }).lean();
let result: ActivityGroupShopRecType = await ActivityGroupShopRecModel.findOneAndUpdate( let result: ActivityGroupShopRecType = await ActivityGroupShopRecModel.findOneAndUpdate(
{ activityId, itemId, sum: { $lt: sum } }, { $set: { sum } }, { new: true, upsert: true } { activityId, itemId, sum: { $lt: sum } }, { $set: { sum } }, { new: true }
).lean(); ).lean();
return result; return result;
} }

View File

@@ -6,8 +6,8 @@ import { GroupShopDiscount } from '../domain/activityField/groupShopField';
/** /**
* 活动系统 - 团购玩家记录 * 活动系统 - 团购玩家记录
*/ */
@index({ roleId: 1, activityId: 1, }) @index({ roleId: 1, activityId: 1, itemId: 1 })
@index({ activityId: 1, id: 1, 'records.price': 1 }) @index({ activityId: 1, itemId: 1, 'records.price': 1 })
export class GroupShopBuyRecord { export class GroupShopBuyRecord {