后台:添加跑马灯

This commit is contained in:
luying
2021-07-02 19:24:39 +08:00
parent d2e7edabea
commit 4d9c5482ac
4 changed files with 84 additions and 0 deletions

View File

@@ -10,16 +10,22 @@ import { genCode } from '../pubUtils/util';
export default class Marquee extends BaseModel {
@prop({ required: true })
code: string; // 跑马灯唯一标识
@prop({ required: true, type: Number })
serverIds: number[]; // 推送服务器
@prop({ required: true, enum: MARQUEE_TYPE })
type: MARQUEE_TYPE; // 推送类型
@prop({ required: true })
startTime: Date; // 活动开始时间
@prop({ required: true })
endTime: Date; // 活动结束时间
@prop({ required: true })
interval: number; // 活动结束时间
@prop({ required: true })
content: string; // 广播内容
@@ -64,6 +70,41 @@ export default class Marquee extends BaseModel {
const result: MarqueeType[] = await MarqueeModel.find({ type: MARQUEE_TYPE.SCHEDULE, startTime: { $lte: new Date() }, endTime: { $gte: new Date() } }).lean();
return result;
}
private static getSearchObj(form: { type?: number, current?: boolean, content?: string }) {
let searchObj = {};
if(form['type']) searchObj['type'] = form.type;
if(form['current']) {
searchObj['startTime'] = { $lte: new Date };
searchObj['endTime'] = { $gte: new Date };
}
if(form['content']) searchObj['content'] = { $regex: new RegExp(form.content.toString(), 'i') };
return searchObj
}
public static async findByCondition(page: number, pageSize: number, sortField: string = 'updatedAt', sortOrder: string = 'descend', form: { type?: number, current?: boolean, content?: string } = {}) {
let searchObj = this.getSearchObj(form);
let sort = {};
if(sortField && sortOrder) {
if(sortOrder == 'ascend') {
sort[sortField] = 1;
} else if (sortOrder == 'descend') {
sort[sortField] = -1;
}
}
const result: MarqueeType[] = await MarqueeModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).select('+sort +showStartTime +showEndTime +serverType +isEnable').lean({ getters: true, virtuals: true });
return result;
}
public static async countByCondition(form: { type?: number, current?: boolean, content?: string } = {}) {
let searchObj = this.getSearchObj(form);
const result = await MarqueeModel.count(searchObj);
return result;
}
}