🐞 fix(团购): 修复团购定时器多出记录的问题
This commit is contained in:
@@ -814,7 +814,10 @@ async function initGroupShopSchedule() {
|
||||
});
|
||||
}
|
||||
|
||||
let initSumJobs = [];
|
||||
export async function initSumSchedule() {
|
||||
|
||||
|
||||
let activities = await ActivityModel.findActivityByType(ACTIVITY_TYPE.GROUP_SHOP);
|
||||
let scheduleMap = new Map<number, { activityId: number, itemId: number, sum: number }[]>(); // 时间 => data
|
||||
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) {
|
||||
if(scheduledJobs[`groupShopSetSum${time}`]) {
|
||||
scheduledJobs[`groupShopSetSum${time}`].cancel();
|
||||
}
|
||||
scheduleJob(`groupShopSetSum${time}`, time, async () => {
|
||||
let job = scheduleJob(`groupShopSetSum${time}`, time, async () => {
|
||||
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 {
|
||||
|
||||
@@ -74,8 +74,9 @@ export default class Activity_Group_Shop_Rec extends BaseModel {
|
||||
}
|
||||
|
||||
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(
|
||||
{ activityId, itemId, sum: { $lt: sum } }, { $set: { sum } }, { new: true, upsert: true }
|
||||
{ activityId, itemId, sum: { $lt: sum } }, { $set: { sum } }, { new: true }
|
||||
).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import { GroupShopDiscount } from '../domain/activityField/groupShopField';
|
||||
/**
|
||||
* 活动系统 - 团购玩家记录
|
||||
*/
|
||||
@index({ roleId: 1, activityId: 1, })
|
||||
@index({ activityId: 1, id: 1, 'records.price': 1 })
|
||||
@index({ roleId: 1, activityId: 1, itemId: 1 })
|
||||
@index({ activityId: 1, itemId: 1, 'records.price': 1 })
|
||||
|
||||
export class GroupShopBuyRecord {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user