✨ feat(稷下学宫): ff931afe4到7421822f6
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { COLLECTION_TYPE } from '../consts';
|
||||
import BaseModel from './BaseModel';
|
||||
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
|
||||
|
||||
@index({ roleId: 1, type: 1, id: 1 })
|
||||
export default class RougelikeCollection extends BaseModel {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
type: number;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
id: number;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
num: number;
|
||||
|
||||
@prop({ required: true, default: '' })
|
||||
gameCode: string;
|
||||
|
||||
@prop({ required: true, type: Number, default: false })
|
||||
received: number[]; // 是否领取奖励
|
||||
|
||||
public static async addRec(roleId: string, type: number, id: number, gameCode: string, addNum = 1) {
|
||||
const result: RougelikeCollectionType = await RougelikeCollectionModel.findOneAndUpdate({ roleId, type, id }, { $setOnInsert: { received: [] }, $inc: { num: addNum }, $set: { gameCode } }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRoleId(roleId: string, lean = true) {
|
||||
const result: RougelikeCollectionType[] = await RougelikeCollectionModel.find({ roleId }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRoleAndId(roleId: string, type: number, id: number) {
|
||||
const result: RougelikeCollectionType = await RougelikeCollectionModel.findOne({ roleId, type, id: type == COLLECTION_TYPE.PASSIVE_CARD_SUM? 0: id }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async receive(roleId: string, type: number, id: number, num = 1) {
|
||||
if(type == COLLECTION_TYPE.PASSIVE_CARD_SUM) {
|
||||
const result: RougelikeCollectionType = await RougelikeCollectionModel.findOneAndUpdate({ roleId, type, id: 0, num: { $gte: num } }, { $push: { received: id } }, { new: true }).lean();
|
||||
return result;
|
||||
} else {
|
||||
const result: RougelikeCollectionType = await RougelikeCollectionModel.findOneAndUpdate({ roleId, type, id }, { $push: { received: id } }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const RougelikeCollectionModel = getModelForClass(RougelikeCollection);
|
||||
export interface RougelikeCollectionType extends Pick<DocumentType<RougelikeCollection>, keyof RougelikeCollection> { };
|
||||
export type RougelikeCollectionPara = Partial<RougelikeCollectionType>; // 将所有字段变成可选项
|
||||
Reference in New Issue
Block a user