fix 修复远征当前血量和最大血量无法匹配bug
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user