import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { TASK_FUN_TYPE } from '../consts'; import { genCode } from '../pubUtils/util'; /** * 玩家购买商店记录表,每个商品一条,每次刷新新建一条 **/ @modelOptions({ schemaOptions: { id: false } }) @index({ roleId: 1, itemId: 1 }) export default class UserTaskRec extends BaseModel { @prop({ required: true }) code: string; // 该记录唯一标识 @prop({ required: true }) roleId: string; // 玩家id @prop({ required: true, enum: TASK_FUN_TYPE }) type: number; // 任务类型 @prop({ required: true }) id: number; // 任务id,任务表内id @prop({ required: true }) taskType: number; // 行为类型 @prop({ required: true }) group: number; // 行为类型下的分组 @prop({ required: true }) count: number; // 达成次数 @prop({ required: true, default: false }) received: boolean; // 是否已领取 public static async setTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) { let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $set: { count } }, { new: true, upsert: true }).lean(); return rec; } public static async incTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) { let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $inc: { count } }, { new: true, upsert: true }).lean(); return rec; } } export const UserTaskRecModel = getModelForClass(UserTaskRec); export interface UserTaskRecType extends Pick, keyof UserTaskRec> { } export type UserTaskRecParam = Partial;