名将擂台:基础界面
This commit is contained in:
54
shared/db/LadderMatch.ts
Normal file
54
shared/db/LadderMatch.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, mongoose, Ref } from '@typegoose/typegoose';
|
||||
import { LadderDefense, } from '../domain/battleField/ladder';
|
||||
import Role from './Role';
|
||||
|
||||
@index({ roleId: 1 })
|
||||
export default class LadderMatch extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
serverId: number; // 角色 id
|
||||
@prop({ required: true, default: '' })
|
||||
roleId: string; // 角色 id
|
||||
@prop({ ref: 'Role', type: mongoose.Schema.Types.ObjectId })
|
||||
role: Ref<Role>;
|
||||
@prop({ required: true, default: 0 })
|
||||
rank: number; // 排名
|
||||
@prop({ required: true, default: 0 })
|
||||
historyRank: number; // 历史最高排名
|
||||
|
||||
@prop({ required: true, default: null, _id: false })
|
||||
defense: LadderDefense;
|
||||
|
||||
@prop({ required: true, default: () => { return new Date() } })
|
||||
refDaily: Date; // 每日刷新,控制refOppCnt和setAttackCnt
|
||||
@prop({ required: true, default: 0 })
|
||||
challengeCnt: number; // 挑战次数
|
||||
@prop({ required: true, default: 0 })
|
||||
buyCnt: number; // 购买次数
|
||||
@prop({ required: true, default: 0 })
|
||||
refOppCnt: number; // 刷新对手次数
|
||||
|
||||
public static async findByRoleId(roleId: string, getters = false) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId }).lean({ getters});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async createLadder(params: LadderUpdateInter) {
|
||||
const doc = new LadderMatchModel();
|
||||
|
||||
const update = Object.assign(doc.toJSON(), params);
|
||||
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ roleId: params.roleId }, { $set: update}, { upsert: true, new: true }).lean();
|
||||
return defense;
|
||||
|
||||
}
|
||||
|
||||
public static async updateByRoleId(roleId: string, params: LadderUpdateInter) {
|
||||
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: params}, { new: true }).lean();
|
||||
return defense;
|
||||
}
|
||||
}
|
||||
|
||||
export const LadderMatchModel = getModelForClass(LadderMatch);
|
||||
|
||||
export interface LadderMatchType extends Pick<DocumentType<LadderMatch>, keyof LadderMatch> { };
|
||||
export type LadderUpdateInter = Partial<LadderMatchType>;
|
||||
Reference in New Issue
Block a user