fix 修复远征当前血量和最大血量无法匹配bug

This commit is contained in:
luying
2020-11-19 10:37:39 +08:00
parent f07109d11c
commit 225d55f98f
6 changed files with 55 additions and 31 deletions
+14 -9
View File
@@ -40,6 +40,15 @@ class Enemies {
}
class EnemiesCurHPAP {
@prop({ required: true })
dataId: number; // 战场中唯一指向武将的代码
@prop({ required: true })
hp: number; // 生命
@prop({ required: true })
ap: number; // 怒气
}
/**
* 远征记录
*/
@@ -64,6 +73,8 @@ export default class ExpeditionWarRecord extends BaseModel {
enemyId: string; // 敌军队伍id或玩家id
@prop({ required: true, type: Enemies, default: [] })
enemies: Array<Enemies>; // 敌军数据
@prop({ required: true, type: EnemiesCurHPAP, default: [] })
enemiesCurHpAp: Array<EnemiesCurHPAP>; // 敌军数据
@prop({ required: true, default: 0 })
ce: number; // 敌军战力
@@ -73,14 +84,14 @@ export default class ExpeditionWarRecord extends BaseModel {
}
public static async getRecordByCodeAndId(expeditionCode: string, expeditionId: number, lean = true) {
const result = await ExpeditionWarRecordModel.findOne({ expeditionCode, expeditionId }).select('expeditionId battleId battleCode battleStatus enemyFrom enemies ce').lean(lean);
const result = await ExpeditionWarRecordModel.findOne({ expeditionCode, expeditionId }).select('expeditionId battleId battleCode battleStatus enemyFrom enemies enemiesCurHpAp ce').lean(lean);
return result;
}
public static async saveRecord(expeditionCode: string, expeditionId: number, params: {roleId: string, battleId: number, enemyFrom: number, enemyId: string, enemies: Array<any>, battleStatus: number}, lean = true) {
const doc = new ExpeditionWarRecordModel();
const update = Object.assign(doc.toJSON(), params, {expeditionCode, expeditionId});
const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, update, {new: true, upsert: true}).select('expeditionId battleId battleCode battleStatus enemyFrom enemies ce').lean(lean);
const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, update, {new: true, upsert: true}).select('expeditionId battleId battleCode battleStatus enemyFrom enemies enemiesCurHpAp ce').lean(lean);
return result;
}
@@ -96,15 +107,9 @@ export default class ExpeditionWarRecord extends BaseModel {
public static async updateEnemiesStatus(expeditionCode: string, expeditionId: number, battleStatus: number, enemies: Array<{dataId: number, hp: number, ap: number}>, lean = true) {
for(let {dataId, hp, ap} of enemies) {
await ExpeditionWarRecordModel.findOneAndUpdate(
{expeditionCode, expeditionId, 'enemies.dataId': dataId },
{$set: {'enemies.$.attribute.hp': hp, 'enemies.$.attribute.ap': ap}}
)
}
const result = ExpeditionWarRecordModel.findOneAndUpdate(
{expeditionCode, expeditionId},
{$set: {battleStatus}},
{$set: {battleStatus}, enemiesCurHpAp: enemies},
{new: true}
).lean(lean);
return result;