Files
ZYZ/shared/db/ResonanceHistory.ts
2023-10-10 20:47:58 +08:00

117 lines
4.4 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 { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
import { HeroSkin } from './Hero';
export class ResonanceHistoryEplaceStone {
@prop({ required: true })
id: number; // 孔的id
@prop({ required: true })
stone: number; // 装备的宝石id未装备为0
}
export class ResonanceHistoryEplace {
@prop({ required: true })
id: number; // 装备栏idid固定部位
@prop({ required: true })
equipId: number; // 装备表id
@prop({ required: true })
lv: number; // 强化等级
@prop({ required: true })
quality: number; // 品质
@prop({ required: true })
qualityStage: number; // 升品之前需要的次数
@prop({ required: true })
star: number; // 星级
@prop({ required: true })
starStage: number; // 升星级之前的小点
@prop({ required: true, type: ResonanceHistoryEplaceStone, _id: false })
stones: ResonanceHistoryEplaceStone[]; // 地玉石初始的时候就有3个槽是否解锁靠star判断
@prop({ required: true })
jewel: number; // 天晶石的seqId具体状态去jewel表查
}
export class ResonanceHistoryConnection {
@prop({ required: true })
shipId: number; // 羁绊编号
@prop({ required: true })
level: number;
@prop({ required: true })
exp: number;
}
@index({ roleId: 1, position: 1, hid: 1, time: 1 })
export default class ResonanceHistory extends BaseModel {
@prop({ required: true })
roleId: string;
@prop({ required: true })
position: number; // 上阵位置,前6(6是鸣主配在系统参数表)不存通过计算获得已解锁未上阵仅有positon
@prop({ required: true })
hid: number; // 武将id
@prop({ required: true })
seqId: number; // 武将表自增id
@prop({ required: true })
lv: number; //武将等级
@prop({ required: true })
exp: number; //
@prop({ required: true })
job: number; //
@prop({ required: true })
jobStage: number; // 职阶
@prop({ required: true })
skinId: number; // 当前皮肤idfashions表的heroId字段
@prop({ required: true, type: HeroSkin, default: [], _id: false })
skins: HeroSkin[]; // 皮肤
@prop({ required: true, type: ResonanceHistoryConnection, _id: false })
connections: ResonanceHistoryConnection[] // 羁绊
@prop({ required: true, type: ResonanceHistoryEplace, _id: false })
ePlace: ResonanceHistoryEplace[] // 所有装备栏
@prop({ required: true })
ce: number // 战力
@prop({ required: true, default: () => new Date() })
time: Date;
// public static async findByRoleId(roleId: string, lean = true) {
// let result: ResonanceHistoryType[] = await ResonanceHistoryModel.find({ roleId }).select({ '_id': -1 }).lean(lean);
// return result;
// }
// public static async findByPosition(roleId: string, position: number, lean = true) {
// let result: ResonanceHistoryType = await ResonanceHistoryModel.findOne({ roleId, position }).select({ '_id': -1 }).lean(lean);
// return result
// }
// public static async findByPositionAndHid(roleId: string, position: number, hid: number, lean = true) {
// let result: ResonanceHistoryType = await ResonanceHistoryModel.findOne({ roleId, position, hid }).select({ '_id': -1 }).lean(lean);
// return result
// }
public static async updateByPosition(roleId: string, position: number, param: ResonanceHistoryPara, lean = true) {
delete param._id;
let result: ResonanceHistoryType = await ResonanceHistoryModel.findOneAndUpdate({ roleId, position, time: new Date() }, { $set: param }, { new: true, upsert: true }).lean(lean);
return result;
}
// public static async deletePosition(roleId: string, position: number) {
// let result = await ResonanceHistoryModel.deleteMany({ roleId, position });
// return result;
// }
}
export const ResonanceHistoryModel = getModelForClass(ResonanceHistory);
export interface ResonanceHistoryType extends Pick<DocumentType<ResonanceHistory>, keyof ResonanceHistory> { };
export type ResonanceHistoryPara = Partial<ResonanceHistoryType>; // 将所有字段变成可选项