Files
ZYZ/shared/db/HangUpRecord.ts
2020-10-12 23:42:53 +08:00

55 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { HANG_UP_CONSTS } from './../consts/consts';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
/**
* 挂机记录表
*/
@index({ roleId: 1, endLv: 1 })
export default class HangUpRecord extends BaseModel {
@prop({ required: true })
roleId: string; // 角色 id
@prop({ required: true })
roleName: string; // 角色名
@prop({ required: true, default: 0 })
speedUpTime: number; // 加速时长
@prop({ required: true, default: 1 })
startLv: number; // 开始挂机时的天梯层数,收益使用当前层数 -1 计算,即用户已经通过的最高层
@prop({ required: true })
startTime: Date; // 开始挂机的时间
@prop({ required: false })
endLv: number; // 结束挂机时的层数
@prop({ required: false })
endTime: Date; // 结束挂机的时间
@prop({ required: true, default: false })
received: boolean; // 是否已经领取true-领取false-未领取
public static async initRecord(roleId: string, roleName: string, lean = true) {
const curTime = new Date();
const recDoc = new HangUpRecordModel();
const update = Object.assign({roleId, roleName, startTime: curTime}, recDoc.toJSON());
const rec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: HANG_UP_CONSTS.ENABLE_LV}, update, {upsert: true, new: true}).lean(lean);
return rec;
}
public static async getCurRec(roleId: string, lean = true) {
const rec = await HangUpRecordModel.findOne({roleId, received: false}).lean(lean);
return rec;
}
public static async updateRec(roleId: string, roleName: string, endLv: number, endTime: Date, lean = true) {
await HangUpRecordModel.findOneAndUpdate({roleId, received: false}, {endLv, endTime, received: true}).lean(lean);
const recDoc = new HangUpRecordModel();
const update = Object.assign({roleId, roleName, startTime: endTime}, recDoc.toJSON());
const newRec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: endLv}, update, {upsert: true, new: true}).lean(lean);
return newRec;
}
}
export const HangUpRecordModel = getModelForClass(HangUpRecord);