军团活动:诸侯混战城门血量
This commit is contained in:
73
shared/db/ServerRecords.ts
Normal file
73
shared/db/ServerRecords.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
import { RoleType, TopHero } from './Role';
|
||||
import { getZeroPoint } from '../pubUtils/timeUtil';
|
||||
|
||||
export class ActivePlayer {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
topLineupCe: number;
|
||||
@prop({ required: true, type: TopHero, default: [], _id: false })
|
||||
topLineup: Array<TopHero>; // 总战力
|
||||
|
||||
constructor(role: RoleType) {
|
||||
this.roleId = role.roleId;
|
||||
this.topLineupCe = role.topLineupCe;
|
||||
this.topLineup = role.topLineup;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 游戏字段接口
|
||||
*/
|
||||
@index({ serverId: 1, date: 1 })
|
||||
@modelOptions({ schemaOptions: { id: false } })
|
||||
export default class ServerRecord extends BaseModel {
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
serverId: number; // 小区id
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
today: number; // 天
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
activePlayerCe: number; // 前一天活跃玩家前十的最强6人战力和
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
activePlayerCnt: number; // 前一天活跃玩家人数
|
||||
|
||||
@prop({ required: true, type: ActivePlayer, _id: false })
|
||||
activePlayers: ActivePlayer[]; // 前一天的活跃玩家
|
||||
|
||||
@prop({ required: true, type: String, default: [] })
|
||||
activeGuildCodes: string[]; // 前一天参与军团活动的军团
|
||||
|
||||
public static async updateData(serverId: number, update: ServerRecordUpdate) {
|
||||
let today = getZeroPoint();
|
||||
const doc = new ServerRecordModel();
|
||||
let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today }, { $set: { ...doc.toJSON(), ...update } }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async addActiveGuild(serverId: number, guildCode: string) {
|
||||
let tomorrow = getZeroPoint() + 86400;
|
||||
let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today: tomorrow }, { $addToSet: [guildCode] }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async findTodayData(serverId: number) {
|
||||
let today = getZeroPoint();
|
||||
let rec: ServerRecordType = await ServerRecordModel.findOne({ serverId, today }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const ServerRecordModel = getModelForClass(ServerRecord);
|
||||
|
||||
export interface ServerRecordType extends Pick<DocumentType<ServerRecord>, keyof ServerRecord> {
|
||||
id: number;
|
||||
};
|
||||
export type ServerRecordUpdate = Partial<ServerRecordType>; // 将所有字段变成可选项
|
||||
Reference in New Issue
Block a user