64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
// import { HANG_UP_CONSTS } from './../consts/consts';
|
|
import BaseModel from './BaseModel';
|
|
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
|
|
|
class Goods {
|
|
@prop({ required: true })
|
|
gid: number; // 物品id
|
|
@prop({ required: false })
|
|
count: number; // 这次挂机没来得及领取的
|
|
}
|
|
|
|
class NotReceivedGoods {
|
|
@prop({ required: true })
|
|
cnt: number; // 加速的次数
|
|
@prop({ required: true, default: [], type: Goods })
|
|
goods: Array<Goods>; // 这次挂机没来得及领取的
|
|
}
|
|
/**
|
|
* 挂机记录表
|
|
*/
|
|
@index({ roleId: 1, lv: 1 })
|
|
|
|
export default class HangUpSpdUpRec extends BaseModel {
|
|
@prop({ required: true })
|
|
roleId: string; // 角色 id
|
|
@prop({ required: true })
|
|
roleName: string; // 角色名
|
|
|
|
@prop({required: true, default: 1})
|
|
cnt: number; // 加速次数
|
|
@prop({required: true, default: 1})
|
|
lv: number; // 天梯层数
|
|
|
|
@prop({ required: true, default: [], type: NotReceivedGoods })
|
|
notReceivedGoodsList: Array<NotReceivedGoods>
|
|
|
|
public static async getSpdUpRec(roleId, lv, lean = true ) {
|
|
let rec = await HangUpSpdUpRecModel.findOne({roleId, lv}).lean(lean);
|
|
return rec;
|
|
}
|
|
|
|
public static async updateRec(roleId, roleName, multi, lv, needReceiveGoods: Array<{gid:number, count: number}>, lean = true ) {
|
|
if (multi <= 0) return null;
|
|
let rec = await HangUpSpdUpRecModel.findOneAndUpdate({roleId, lv, roleName}, {$inc: {cnt: multi}}, {upsert: true, new: true}).lean(lean);
|
|
if(rec && needReceiveGoods.length > 0) {
|
|
let {cnt} = rec;
|
|
let goods = [{
|
|
cnt: cnt,
|
|
goods: needReceiveGoods
|
|
}];
|
|
await HangUpSpdUpRecModel.findOneAndUpdate({roleId, lv, roleName}, {$push: {notReceivedGoodsList: {$each: goods}}}, {upsert: true, new: true}).lean(lean);
|
|
}
|
|
return rec;
|
|
}
|
|
|
|
public static async deleteAccount(roleId: string, lean = true) {
|
|
let result = await HangUpSpdUpRecModel.deleteMany({roleId}).lean(lean);
|
|
return result||{};
|
|
}
|
|
|
|
}
|
|
|
|
export const HangUpSpdUpRecModel = getModelForClass(HangUpSpdUpRec);
|