聊天:添加跑马灯功能
This commit is contained in:
@@ -54,6 +54,7 @@ export const MSG_SOURCE = {
|
||||
EQUIP_REFRESH_BEST: 20,
|
||||
ACQUIRE_RARE_GOODS: 21,
|
||||
GROUP_SEND_GIFT: 22,
|
||||
SEND_MARQUEE: 23
|
||||
}
|
||||
|
||||
export const ON_PRIVATE_MSG_ROUTE = 'onPrivateMessage';
|
||||
|
||||
@@ -668,3 +668,8 @@ export enum GACHA_CONTENT_TYPE {
|
||||
}
|
||||
|
||||
export const GACHA_OCCUPY_HID = 9999; // 抽卡里占位的武将
|
||||
|
||||
export enum MARQUEE_TYPE {
|
||||
INSTANT = 1, // 发送后立刻推送
|
||||
SCHEDULE = 2, // 定时器
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
import { MARQUEE_TYPE } from '../consts';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
/**
|
||||
* 跑马灯
|
||||
**/
|
||||
@modelOptions({ schemaOptions: { id: false } })
|
||||
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; // 广播内容
|
||||
|
||||
/**
|
||||
* 创建跑马灯
|
||||
* @param params 参数
|
||||
* @param uid 后台操作人
|
||||
*/
|
||||
public static async createData(params: MarqueeParam, uid = 1) {
|
||||
const code = genCode(10);
|
||||
const doc = new MarqueeModel();
|
||||
const update = Object.assign(doc.toJSON(), params, { code, createdBy: uid, updatedBy: uid });
|
||||
const result: MarqueeType = await MarqueeModel.findOneAndUpdate({ code }, { $setOnInsert: update }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新跑马灯
|
||||
* @param code 唯一标识
|
||||
* @param params 参数
|
||||
* @param uid 后台操作人
|
||||
*/
|
||||
public static async updateData(code: string, params: MarqueeParam, uid = 1) {
|
||||
const result: MarqueeType = await MarqueeModel.findOneAndUpdate({ code }, { $set: {...params, updatedBy: uid }}, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据唯一code查询一条数据
|
||||
* @param {String} code 唯一码
|
||||
*/
|
||||
public static async findByCode(code: string) {
|
||||
const result: MarqueeType = await MarqueeModel.findOne({ code }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有生效中的跑马灯
|
||||
*/
|
||||
public static async findEffectiveMarque() {
|
||||
const result: MarqueeType[] = await MarqueeModel.find({ type: MARQUEE_TYPE.SCHEDULE, startTime: { $lte: new Date() }, endTime: { $gte: new Date() } }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const MarqueeModel = getModelForClass(Marquee);
|
||||
|
||||
export interface MarqueeType extends Pick<DocumentType<Marquee>, keyof Marquee> {};
|
||||
export type MarqueeParam = Partial<MarqueeType>;
|
||||
Reference in New Issue
Block a user