添加百家学宫和名将谱,未计算战力
This commit is contained in:
@@ -66,6 +66,10 @@ interface heroUpdate {
|
||||
connections?: Connect[];
|
||||
ePlace?:EPlace[];
|
||||
_id?:number;
|
||||
scrollActive?: boolean;
|
||||
scrollStar?: number;
|
||||
scrollColorStar?: number;
|
||||
scrollQuality?: number;
|
||||
}
|
||||
|
||||
@index({ roleId: 1, hid: 1 })
|
||||
@@ -109,6 +113,15 @@ export default class Hero extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
quality: number; // 品质
|
||||
|
||||
@prop({ required: true, default: false })
|
||||
scrollActive: boolean; // 是否在名将谱中激活
|
||||
@prop({ required: true, default: 0 })
|
||||
scrollStar: number; // 名将谱中保存的星级
|
||||
@prop({ required: true, default: 0 })
|
||||
scrollColorStar: number; // 名将谱中保存的觉醒等级
|
||||
@prop({ required: true, default: 0 })
|
||||
scrollQuality: number; // 名将谱中保存的品质
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
job: number; // 职业
|
||||
@prop({ required: true, default: 0 })
|
||||
@@ -139,8 +152,8 @@ export default class Hero extends BaseModel {
|
||||
const hero: HeroType = await HeroModel.findOne({ seqId, roleId }).lean(lean);
|
||||
return hero;
|
||||
}
|
||||
public static async findByHidAndRole(hid: number, roleId: string, lean = true) {
|
||||
const hero: HeroType = await HeroModel.findOne({ hid, roleId }).lean(lean);
|
||||
public static async findByHidAndRole(hid: number, roleId: string, select?: string, lean = true) {
|
||||
const hero: HeroType = await HeroModel.findOne({ hid, roleId }).select(select).lean(lean);
|
||||
return hero;
|
||||
}
|
||||
|
||||
@@ -204,9 +217,9 @@ export default class Hero extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateHeroInfo(roleId: string, hid:number, heroUpdate:heroUpdate, lean = true) {
|
||||
public static async updateHeroInfo(roleId: string, hid:number, heroUpdate:heroUpdate, select?: string, lean = true) {
|
||||
delete heroUpdate._id;
|
||||
let result: HeroType = await HeroModel.findOneAndUpdate({roleId, hid}, {$set:heroUpdate}).lean(lean);
|
||||
let result: HeroType = await HeroModel.findOneAndUpdate({roleId, hid}, {$set:heroUpdate}, {new: true}).select(select).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
59
shared/db/School.ts
Normal file
59
shared/db/School.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 百家学宫表
|
||||
*/
|
||||
|
||||
@index({ roleId: 1 })
|
||||
@index({ roleId: 1, schoolId: 1, positionId: 1 })
|
||||
|
||||
export default class School extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
roleId: string; // 角色 id
|
||||
|
||||
@prop({ required: true })
|
||||
schoolId: number; // 学院id
|
||||
@prop({ required: true })
|
||||
positionId: number; // 位置id
|
||||
@prop({ required: true, default: 0 })
|
||||
hid: number; // 放置的武将
|
||||
@prop({ required: true, default: false })
|
||||
isOpen: boolean; // 位置是否开启
|
||||
|
||||
public static async findByRoleId(roleId: string) {
|
||||
let result: SchoolType[] = await SchoolModel.find({ roleId }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findBySclAndPos(roleId: string, schoolId: number, positionId: number) {
|
||||
let result: SchoolType = await SchoolModel.findOne({ roleId, schoolId, positionId }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByHid(roleId: string, hid: number) {
|
||||
let result: SchoolType = await SchoolModel.findOne({ roleId, hid }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateBySclAndPos(roleId: string, schoolId: number, positionId: number, update: {hid?: number, isOpen?: boolean}) {
|
||||
|
||||
const doc = new SchoolModel();
|
||||
const setOnInsert = doc.toJSON();
|
||||
for(let key in update) delete setOnInsert[key];
|
||||
delete setOnInsert._id;
|
||||
const result: SchoolType = await SchoolModel.findOneAndUpdate({ roleId, schoolId, positionId }, { $setOnInsert: setOnInsert, $set: update }, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string) {
|
||||
let result = await SchoolModel.deleteMany({ roleId });
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const SchoolModel = getModelForClass(School);
|
||||
|
||||
export interface SchoolType extends Pick<DocumentType<School>, keyof School> { };
|
||||
Reference in New Issue
Block a user