64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import BaseModel from './BaseModel';
|
|
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
|
import { formatTime } from '../pubUtils/timeUtil';
|
|
import { TIME_FORMAT } from '../consts'
|
|
|
|
/**
|
|
* 游戏字段接口
|
|
*/
|
|
@index({ id: 1 })
|
|
@modelOptions({schemaOptions: {id: false}})
|
|
export default class Notice extends BaseModel {
|
|
|
|
@prop({ required: true })
|
|
id: number; // 公告id
|
|
@prop({ required: true })
|
|
title: string; // 公告标题
|
|
@prop({ required: true })
|
|
tag: number; // 公告显示标签,在系统参数表中配了
|
|
@prop({ required: true })
|
|
type: number; // 类型 1-公告 2-活动
|
|
@prop({ required: true })
|
|
content: number; // 公告内容
|
|
|
|
@prop({ required: true })
|
|
timeStr: string; // 时间显示
|
|
@prop({ required: true })
|
|
startTime: Date; // 活动开始时间
|
|
@prop({ required: true })
|
|
endTime: Date; // 活动结束时间
|
|
public get time() {
|
|
let startTime = formatTime(this.startTime, TIME_FORMAT.TYPE_SLASH);
|
|
let endTime = formatTime(this.endTime, TIME_FORMAT.TYPE_SLASH);
|
|
|
|
return this.timeStr.replace(/%startTime/g, startTime).replace(/%endTime/g, endTime);
|
|
}
|
|
|
|
@prop({ required: true, select: false })
|
|
sort: number;
|
|
|
|
@prop({ required: true, select: false })
|
|
showStartTime: Date;
|
|
@prop({ required: true, select: false })
|
|
showEndTime: Date;
|
|
@prop({ required: true, select: false })
|
|
serverType: string; // 服务器类型
|
|
@prop({ required: true, select: false })
|
|
isEnable: boolean;
|
|
|
|
|
|
public static async getAllNotice(serverType: string) {
|
|
let curTime = new Date();
|
|
let notices: NoticeType[] = await NoticeModel.find({ showStartTime: { $lte: curTime }, showEndTime: { $gte: curTime }, isEnable: true, serverType })
|
|
.sort({ sort: -1, createTime: -1 })
|
|
.lean({ virtuals: true });
|
|
return notices;
|
|
}
|
|
}
|
|
|
|
export const NoticeModel = getModelForClass(Notice);
|
|
|
|
export interface NoticeType extends Pick<DocumentType<Notice>, keyof Notice>{
|
|
id: number;
|
|
};
|