59 lines
2.2 KiB
TypeScript
59 lines
2.2 KiB
TypeScript
import BaseModel from './BaseModel';
|
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
|
import { DAILY_CONST } from './../consts';
|
|
import { setLocalHours } from './../pubUtils/util';
|
|
|
|
|
|
/**
|
|
* 战斗记录接口
|
|
*/
|
|
@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 })
|
|
buyCount: 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}).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, buyCount = 0} = dailyRecord||{};
|
|
let now = new Date();
|
|
let today = setLocalHours(DAILY_CONST.REFRESH_TIME, now);
|
|
|
|
if(today > refTime) {
|
|
refTime = today; count = 0; buyCount = 0;
|
|
}
|
|
let result = await DailyRecordModel.findOneAndUpdate({roleId, type}, {$set: {refTime, count, buyCount}}, {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;
|
|
}
|
|
|
|
public static async deleteAccount(roleId: string, lean = true) {
|
|
let result = await DailyRecordModel.deleteMany({roleId}).lean(lean);
|
|
return result||{};
|
|
}
|
|
|
|
public static async increseBuyCount(roleId: string, type: number, count: number, lean = true) {
|
|
const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {$inc: { buyCount:count } }, {new: true, upsert: true}).lean(lean);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export const DailyRecordModel = getModelForClass(DailyRecord);
|