✨ feat(稷下学宫): 修改外带奖励次数每日清零
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
|
||||
|
||||
import { getZeroPointD } from '../pubUtils/timeUtil';
|
||||
import { getZeroPoint, getZeroPointD } from '../pubUtils/timeUtil';
|
||||
import { SHOP_REFRESH_TYPE } from '../consts';
|
||||
|
||||
@index({ roleId: 1, refTime: 1 })
|
||||
@@ -23,17 +23,26 @@ export default class RougelikeScore extends BaseModel {
|
||||
receiveNum: number; // 已领取的id
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
takeoutRewardCnt: number; // 额外奖励已领取的次数
|
||||
takeoutRewardCnt: number; // 额外奖励已领取的次数(每日)
|
||||
|
||||
@prop({ required: true, default: () => new Date() })
|
||||
refDaily: Date;
|
||||
|
||||
public static async findByRoleId(roleId: string) {
|
||||
let refTime = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
|
||||
let result: RougelikeScoreType = await RougelikeScoreModel.findOne({ roleId, refTime }).lean();
|
||||
|
||||
let today = getZeroPointD();
|
||||
if (result && result.refDaily) {
|
||||
result = await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime, refDaily: { $lt: today } }, { $set: { takeoutRewardCnt: 0, refDaily: new Date() }, $setOnInsert: { received: [], receiveNum: 0, score: 0 } }, { new: true }).lean();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async incScore(roleId: string, score: number) {
|
||||
let refTime = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
|
||||
let result: RougelikeScoreType = await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime }, { $inc: { score }, $setOnInsert: { received: [], receiveNum: 0, takeoutRewardCnt: 0 } }, { new: true, upsert: true }).lean();
|
||||
let result: RougelikeScoreType = await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime }, { $inc: { score }, $setOnInsert: { received: [], receiveNum: 0, takeoutRewardCnt: 0, refDaily: new Date() } }, { new: true, upsert: true }).lean();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -57,10 +66,10 @@ export default class RougelikeScore extends BaseModel {
|
||||
await RougelikeScoreModel.updateMany({ _id: { $in: _ids } }, { $set: { receiveNum: maxNum } });
|
||||
}
|
||||
|
||||
public static async receiveTakeoutReward(roleId: string, maxNum: number) {
|
||||
public static async receiveTakeoutReward(roleId: string, maxNum: number, refDaily = new Date()) {
|
||||
let refTime = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
|
||||
await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime }, { $setOnInsert: { score: 0, received: [], receiveNum: 0, takeoutRewardCnt: 0 } }, { upsert: true });
|
||||
let result: RougelikeScoreType = await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime, takeoutRewardCnt: { $lt: maxNum } }, { $inc: { takeoutRewardCnt: 1 } }, { new: true }).lean();
|
||||
await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime }, { $setOnInsert: { score: 0, received: [], receiveNum: 0, takeoutRewardCnt: 0, refDaily } }, { upsert: true });
|
||||
let result: RougelikeScoreType = await RougelikeScoreModel.findOneAndUpdate({ roleId, refTime, takeoutRewardCnt: { $lt: maxNum } }, { $set: { refDaily }, $inc: { takeoutRewardCnt: 1 } }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -72,8 +81,6 @@ export default class RougelikeScore extends BaseModel {
|
||||
return { updateOne: { filter: { roleId, refTime }, update: { $set: { ...param } }, upsert: true } }
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const RougelikeScoreModel = getModelForClass(RougelikeScore);
|
||||
|
||||
Reference in New Issue
Block a user