名将擂台:基础界面

This commit is contained in:
luying
2022-07-13 20:50:36 +08:00
parent 0ac40d1660
commit 4ee1f25876
10 changed files with 476 additions and 1 deletions

54
shared/db/LadderMatch.ts Normal file
View 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>;