获得战报,刷新,领取

This commit is contained in:
mamengke01
2021-01-08 16:16:51 +08:00
parent 099026869a
commit 12f308f0f5
14 changed files with 243 additions and 83 deletions

View File

@@ -19,6 +19,8 @@ interface pvpUpdateInter {
challengeCnt?:number;
challengeRefTime?:number;
isFirstEntry?:boolean;
receivedBox?: Array<number>;
seasonEndTime?:number;
}
export class Heroes {
@@ -138,6 +140,8 @@ export default class PvpDefense extends BaseModel {
receivedBox: Array<number>;
@prop({ required: true, default: 0 })
seasonNum: number;
@prop({ required: true, default: 0 })
seasonEndTime: number;
@prop({ required: true, default: true })
isFirstEntry: boolean;
public static async findByRoleId(roleId: string, lean = true) {
@@ -150,7 +154,7 @@ export default class PvpDefense extends BaseModel {
return result;
}
public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array<Heroes>, oppPlayers: Array<OppPlayers>, defCe: number, seasonNum: number, warId: number, challengeCnt: number }, lean = true) {
public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array<Heroes>, oppPlayers: Array<OppPlayers>, defCe: number, seasonNum: number, seasonEndTime:number, challengeCnt: number }, lean = true) {
const doc = new PvpDefenseModel();
const update = Object.assign(doc.toJSON(), params);
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean(lean);

View File

@@ -3,70 +3,75 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos
export class HeroesRecord {
@prop({ required: true, default: 0 })
hid: number; // 武将id
@prop({ required: true, default: 0 })
quality: number; // 品质
@prop({ required: true, default: 0 })
star: number; // 星级
@prop({ required: true, default: 0 })
colorStar: number; // 觉醒
@prop({ required: true, default: 0 })
lv: number; // 等级
@prop({ required: true, default: 0 })
damage: number; // 伤害
@prop({ required: true, default: 0 })
heal: number; // 治疗
@prop({ required: true, default: 0 })
underDamage: number; // 承伤
@prop({ required: true, default: 0 })
hid: number; // 武将id
@prop({ required: true, default: 0 })
quality: number; // 品质
@prop({ required: true, default: 0 })
star: number; // 星级
@prop({ required: true, default: 0 })
colorStar: number; // 觉醒
@prop({ required: true, default: 0 })
lv: number; // 等级
@prop({ required: true, default: 0 })
damage: number; // 伤害
@prop({ required: true, default: 0 })
heal: number; // 治疗
@prop({ required: true, default: 0 })
underDamage: number; // 承伤
}
export class PlayerInfo {
@prop({ required: true })
roleId: string; // 角色 id
@prop({ required: true })
roleName: string; // 角色 名
@prop({ required: true, default: 0 })
lv: number; // 等级
@prop({ required: true, default: 0 })
sHid: number; // 形象
@prop({ required: true, default: 0 })
headHid: number; // 头像
@prop({ required: true, default: 0 })
title: number; // 爵位
@prop({ required: true, default: 0 })
ce: number; // 最高五人战力
@prop({ required: true, default: false })
isSuccess: boolean; // 是否胜利
@prop({ required: true, default: 0 })
score: number; // 获得的总积分
@prop({ required: true, type: HeroesRecord, default: [], _id: false })
heroes: HeroesRecord[]; // 获得的总积分
@prop({ required: true })
roleId: string; // 角色 id
@prop({ required: true })
roleName: string; // 角色 名
@prop({ required: true, default: 0 })
lv: number; // 等级
@prop({ required: true, default: 0 })
sHid: number; // 形象
@prop({ required: true, default: 0 })
headHid: number; // 头像
@prop({ required: true, default: 0 })
title: number; // 爵位
@prop({ required: true, default: 0 })
ce: number; // 最高五人战力
@prop({ required: true, default: false })
isSuccess: boolean; // 是否胜利
@prop({ required: true, default: 0 })
score: number; // 获得的总积分
@prop({ required: true, type: HeroesRecord, default: [], _id: false })
heroes: HeroesRecord[]; // 获得的总积分
}
@index({ roleId1: 1, updatedAt: -1 })
@index({ roleId2: 1, updatedAt: -1 })
export default class PvpRecord extends BaseModel {
@prop({ required: true })
roleId1: string; // 角色 id
@prop({ required: true })
roleId2: string; // 角色 id
@prop({ required: true })
roleId1: string; // 角色 id
@prop({ required: true })
roleId2: string; // 角色 id
@prop({ required: true, default: 0 })
warId: number; // 这一关使用的地图
@prop({ required: true, type: PlayerInfo, default: {}, _id: false })
attackInfo: PlayerInfo; // 攻方信息
@prop({ required: true, type: PlayerInfo, default: {}, _id: false })
defenseInfo: PlayerInfo; // 守方信息
@prop({ required: true, default: 0 })
warId: number; // 这一关使用的地图
@prop({ required: true, type: PlayerInfo, default: {}, _id: false })
attackInfo: PlayerInfo; // 攻方信息
@prop({ required: true, type: PlayerInfo, default: {}, _id: false })
defenseInfo: PlayerInfo; // 守方信息
public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PlayerInfo, defenseInfo: PlayerInfo}, lean = true) {
const result = await PvpRecordModel.findOneAndUpdate({}, param, { new: true, upsert: true }).lean();
return result;
}
public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PlayerInfo, defenseInfo: PlayerInfo }, lean = true) {
const result = await PvpRecordModel.findOneAndUpdate({}, param, { new: true, upsert: true }).lean();
return result;
}
public static async getRecByRoleId( roleId: string, lean = true) {
const result: PvpRecord[] = await PvpRecordModel.find({ $or:[{roleId1: roleId}, {roleId2: roleId}] }).lean(lean);
return result;
}
}
export const PvpRecordModel = getModelForClass(PvpRecord);
export interface PvpRecordType extends Pick<DocumentType<PvpRecord>, keyof PvpRecord>{};
export interface PvpRecordType extends Pick<DocumentType<PvpRecord>, keyof PvpRecord> { };