🐞 fix(团购): 修复团购定时器多出记录的问题
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user