117 lines
4.4 KiB
TypeScript
117 lines
4.4 KiB
TypeScript
|
||
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; // 装备栏id,id固定部位
|
||
@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; // 当前皮肤id,fashions表的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>; // 将所有字段变成可选项
|