Files
ZYZ/shared/db/ActivityMonthlyTicket.ts
2021-05-13 21:09:13 +08:00

49 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { ORDER_STATE } from '../consts';
/**
* 月卡
*/
@index({ roleId: 1 })
export default class ActivityMonthlyTicket extends BaseModel {
@prop({ required: true })
activityType: number; // 活动类型
@prop({ required: true })
activityId: number; // 活动ID
@prop({ required: true })
serverId: number; // 区号
@prop({ required: true })
roleId: string; // 用户id
@prop({ required: true })
endTime: Date; // 结束时间
@prop({ required: true })
dayIndex: number; // 结算到第几天从0开始1表示第一天已经领取过(包括邮件发放)
//记录领取的天数
public static async setDayIndex(serverId: number, roleId: string, activityId: number, dayIndex: number) {
let result: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex: { $lt: dayIndex } },
{ $set: { dayIndex } },
{ new: true }).lean(true);
return result;
}
//查询月卡详情
public static async findMonthlyTicket(serverId: number, roleId: string, activityId: number) {
let result: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findOne({ serverId, roleId, activityId }).lean(true);
return result;
}
//购买月卡
public static async buyMonthlyTicket(serverId: number, roleId: string, activityId: number, activityType: number, endTime: Date) {
await ActivityMonthlyTicketModel.findOneAndUpdate({ serverId, roleId, activityId, activityType }, { $set: { endTime, dayIndex: 0 } }, { upsert: true, new: true }).lean();
}
}
export const ActivityMonthlyTicketModel = getModelForClass(ActivityMonthlyTicket);
export interface ActivityMonthlyTicketModelType extends Pick<DocumentType<ActivityMonthlyTicket>, keyof ActivityMonthlyTicket> { }
export type ActivityMonthlyTicketModelTypeParam = Partial<ActivityMonthlyTicketModelType>; // 将所有字段变成可选项