import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; /** * 活动系统 */ @index({ acvitityId: 1 }) export default class Activity extends BaseModel { @prop({ required: true }) acvitityId: number; // 活动Id @prop({ required: true }) beginTime: Date; // 开启时间 @prop({ required: true }) endTime: Date; // 结束时间 @prop({ required: true }) type: number; // 活动类型 @prop({ required: true }) data: string; // 活动表中的数据 //根据活动类型查询开启的活动数据 public static async findOpenActivityByType(type: number, date: Date, lean = true) { let result: ActivityModelType[] = await ActivityModel.find({ type, beginTime: { $lte: date }, endTime: { $gte: date } }).lean(lean); return result; } //根据活动类型查询活动数据 public static async findActivityByType(type: number, lean = true) { let result: ActivityModelType[] = await ActivityModel.find({ type }).lean(lean); return result; } //根据活动id查询活动数据 public static async findActivity(acvitityId: number, lean = true) { let result: ActivityModelType = await ActivityModel.findOne({ acvitityId }).lean(lean); return result; } //新增活动 public static async addActivity(acvitityId: number, beginTime: Date, endTime: Date, type: number, data: string, lean = true) { let result: ActivityModelType = await ActivityModel.findOneAndUpdate({ acvitityId }, { beginTime, endTime, type, data }, { upsert: true, new: true }).lean(lean); return result; } //删除活动 public static async deleteActivity(acvitityId: number) { let result = await ActivityModel.deleteMany({ acvitityId }); return result; } } export const ActivityModel = getModelForClass(Activity); export interface ActivityModelType extends Pick, keyof Activity> { } export type ActivityModelTypeParam = Partial; // 将所有字段变成可选项