Files
ZYZ/shared/db/ActivityShop.ts
2022-11-18 14:46:46 +08:00

58 lines
2.0 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';
/**
* 购买记录
*/
export class BuyRecord {
@prop({ required: true })
id: number; //物品id标识
@prop({ required: true })
time: Date; //购买时间
}
/**
* 活动系统 - 新手限定、每日限购、每周限购
*/
@index({ roleId: 1, activityId: 1 })
export default class Activity_Shop extends BaseModel {
@prop({ required: true })
activityId: number; // 活动Id
@prop({ required: true })
roleId: string; // 用户Id
@prop({ required: true })
roundIndex: number; // 第几个周期从1开始
@prop({ required: true })
records: BuyRecord[]; // 购买记录
//购买领取奖励的记录
public static async addRecord(activityId: number, roleId: string, roundIndex: number, id: number, count: number) {
let records = [];
for(let i = 0; i < count; i++) {
records.push({ id, time: new Date() });
}
let result: ActivityShopModelType = await ActivityShopModel.findOneAndUpdate({ roleId, activityId, roundIndex },
{ $push: { records: { $each: records } } }, { upsert: true, new: true }).lean(true);
return result;
}
//根据活动id查询活动数据
public static async findData(activityId: number, roleId: string, roundIndex: number) {
let result: ActivityShopModelType = await ActivityShopModel.findOne({ roleId, activityId, roundIndex }).lean(true);
return result;
}
//删除活动领取记录
public static async deleteActivity(activityId: number, roleId: string, roundIndex: number) {
await ActivityShopModel.deleteMany({ roleId, activityId, roundIndex });
}
}
export const ActivityShopModel = getModelForClass(Activity_Shop);
export interface ActivityShopModelType extends Pick<DocumentType<Activity_Shop>, keyof Activity_Shop> { }
export type ActivityShopModelTypeParam = Partial<ActivityShopModelType>; // 将所有字段变成可选项