抽卡:添加抽卡接口
This commit is contained in:
@@ -1,9 +1,39 @@
|
||||
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 { getTodayZeroDate } from '../pubUtils/timeUtil';
|
||||
import { REFRESH_HOUR } from '../consts';
|
||||
|
||||
class Floor {
|
||||
@prop({ required: true })
|
||||
id: number; // 保底类型 1-紫将保底 2-金将保底 3-指定将保底
|
||||
@prop({ required: true })
|
||||
count: number; // 抽卡次数
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 心愿单
|
||||
* @memberof UserGacha
|
||||
*/
|
||||
class Hope {
|
||||
@prop({ required: true })
|
||||
id: number; // 位置
|
||||
@prop({ required: true })
|
||||
hid: number; // 武将id
|
||||
@prop({ required: true })
|
||||
hasGet: boolean; // 是否得到
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 转盘记录
|
||||
* @memberof UserGacha
|
||||
*/
|
||||
class Turntable {
|
||||
@prop({ required: true })
|
||||
quality: number; // 品质
|
||||
@prop({ required: true })
|
||||
hasGet: boolean; // 是否得到
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家抽卡表
|
||||
**/
|
||||
@@ -19,12 +49,12 @@ export default class UserGacha extends BaseModel {
|
||||
gachaId: number; // 抽卡id 1-元宝 2-友情 3-指定 4-限时
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
aid: number; // 限时抽卡对应活动id
|
||||
activityId: number; // 限时抽卡对应活动id
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
count: number; // 已抽卡次数
|
||||
|
||||
@prop({ required: true, type: (() => Floor)(), default: [] })
|
||||
@prop({ required: true, type: Floor, default: [], _id: false })
|
||||
floor: Floor[]; // 已抽卡次数
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
@@ -33,13 +63,16 @@ export default class UserGacha extends BaseModel {
|
||||
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
|
||||
refFreeTime: Date; // 免费次数刷新时间
|
||||
|
||||
@prop({ required: true, type: (() => Hope)(), default: [] })
|
||||
@prop({ required: true, type: () => Hope, default: [], _id: false })
|
||||
hope: Hope[]; // 心愿单
|
||||
|
||||
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
|
||||
refHopeTime: Date; // 心愿单刷新时间
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
point: number; // 积分
|
||||
|
||||
@prop({ required: true, type: (() => Turntable)(), default: [] })
|
||||
@prop({ required: true, type: Turntable, default: [], _id: false })
|
||||
turntable: Turntable[]; // 转盘
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
@@ -50,13 +83,31 @@ export default class UserGacha extends BaseModel {
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async findByRole(roleId: string, gachaId: number, activityId: number = 0) {
|
||||
const doc = new UserGachaModel();
|
||||
const update = Object.assign(doc.toJSON(), { roleId, gachaId, activityId });
|
||||
delete update._id;
|
||||
let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $setOnInsert: update }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateInfo(roleId: string, gachaId: number, activityId: number, update: UserGachaParam) {
|
||||
let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $set: update }, { new: true }).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;
|
||||
}
|
||||
|
||||
public static async refreshHopeCount(roleId: string, gachaId: number, aid: number, refHopeTime: Date) {
|
||||
let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { 'hope.$.hasGet': false, refHopeTime } }, { new: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserGachaModel = getModelForClass(UserGacha);
|
||||
|
||||
export interface UserGachaType extends Pick<DocumentType<UserGacha>, keyof UserGacha> { }
|
||||
export type UserGachaParam = Partial<UserGachaType>;
|
||||
export type UserGachaParam = Partial<UserGachaType>;
|
||||
|
||||
Reference in New Issue
Block a user