import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; /** * 战斗记录接口 */ @index({ roleId: 1, type: 1 }) export default class DailyRecord extends BaseModel { @prop({ required: true }) roleId: string; // 角色 id @prop({ required: true }) type: number; // 每日类型 @prop({ required: true, default: 0 }) count: number; // 挑战次数 @prop({ required: true, default: 0 }) refTime: number; // 刷新时间 public static async getDailyRecordById(roleId: string, type: number, lean = true) { const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {}, {new: true, upsert: true}).select('count refTime').lean(lean); return result; } public static async refreshRecord(roleId: string, type: number, lean = true) { const dailyRecord = await DailyRecordModel.findOne({ roleId, type }).lean(lean); let {count = 0, refTime = 0} = dailyRecord||{}; let now = new Date(); let today = now.setHours(0, 0, 0, 0); if(today > refTime) { refTime = today; count = 0; } let result = await DailyRecordModel.findOneAndUpdate({roleId, type}, {$set: {refTime, count}}, {new: true, upsert: true}); return result; } public static async increseDailyCount(roleId: string, type: number, count: number, lean = true) { const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {$inc: { count } }, {new: true, upsert: true}).lean(lean); return result; } } export const DailyRecordModel = getModelForClass(DailyRecord);