Files
ZYZ/shared/db/UserGacha.ts
2021-04-21 21:10:26 +08:00

62 lines
2.2 KiB
TypeScript

import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { getCurWeekDate, getTodayZeroDate } from '../pubUtils/timeUtil';
import { Floor, Hope, Turntable } from '../domain/activityField/gachaField';
import { REFRESH_HOUR } from '../consts';
/**
* 玩家抽卡表
**/
@modelOptions({ schemaOptions: { id: false } })
@index({ roleId: 1, itemId: 1 })
export default class UserGacha extends BaseModel {
@prop({ required: true })
roleId: string; // 玩家id
@prop({ required: true })
gachaId: number; // 抽卡id 1-元宝 2-友情 3-指定 4-限时
@prop({ required: true, default: 0 })
aid: number; // 限时抽卡对应活动id
@prop({ required: true, default: 0 })
count: number; // 已抽卡次数
@prop({ required: true, type: (() => Floor)(), default: [] })
floor: Floor[]; // 已抽卡次数
@prop({ required: true, default: 0 })
freeCount: number; // 免费次数
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
refFreeTime: Date; // 免费次数刷新时间
@prop({ required: true, type: (() => Hope)(), default: [] })
hope: Hope[]; // 心愿单
@prop({ required: true, default: 0 })
point: number; // 积分
@prop({ required: true, type: (() => Turntable)(), default: [] })
turntable: Turntable[]; // 转盘
@prop({ required: true, default: 0 })
pickHero: number; // 玩家指定武将
public static async findAllByRole(roleId: string) {
let rec: UserGachaType[] = await UserGachaModel.find({ roleId }).lean();
return rec;
}
public static async refreshFreeCount(roleId: string, gachaId: number, aid: number, refFreeTime: Date) {
let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { freeCount: 0, refFreeTime } }, { new: true }).lean();
return rec;
}
}
export const UserGachaModel = getModelForClass(UserGacha);
export interface UserGachaType extends Pick<DocumentType<UserGacha>, keyof UserGacha> { }
export type UserGachaParam = Partial<UserGachaType>;