名将擂台:修复匹配问题
This commit is contained in:
+14
-13
@@ -103,24 +103,29 @@ export default class LadderMatch extends BaseModel {
|
||||
|
||||
try {
|
||||
|
||||
let atkLadderMatch: LadderMatchType, defLadderMatch: LadderMatchType, isChange = false;
|
||||
let newAtkLadderMatch: LadderMatchType, newDefLadderMatch: LadderMatchType, isChange = false;
|
||||
if(defenseInfo.isRobot) {
|
||||
atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
let atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
if(isSuccess && atkLadderMatch && (atkLadderMatch.rank == 0 || atkLadderMatch.rank > defenseInfo.oldRank)) {
|
||||
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
|
||||
newAtkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
|
||||
isChange = true;
|
||||
} else {
|
||||
newAtkLadderMatch = atkLadderMatch;
|
||||
}
|
||||
} else {
|
||||
atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
defLadderMatch = await LadderMatchModel.findOne({ roleId: defenseInfo.roleId }).lean();
|
||||
let atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
let defLadderMatch = await LadderMatchModel.findOne({ roleId: defenseInfo.roleId }).lean();
|
||||
if(isSuccess && atkLadderMatch && defLadderMatch && (atkLadderMatch.rank == 0 || atkLadderMatch.rank > defLadderMatch.rank)) {
|
||||
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defLadderMatch.rank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
|
||||
defLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defenseInfo.roleId }, { $set: { rank: atkLadderMatch.rank, oldRank: defLadderMatch.rank } }, { new: true }).lean();
|
||||
newAtkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defLadderMatch.rank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
|
||||
newDefLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defenseInfo.roleId }, { $set: { rank: atkLadderMatch.rank, oldRank: defLadderMatch.rank } }, { new: true }).lean();
|
||||
isChange = true;
|
||||
} else {
|
||||
newAtkLadderMatch = atkLadderMatch;
|
||||
newDefLadderMatch = defLadderMatch;
|
||||
}
|
||||
}
|
||||
await session.commitTransaction()
|
||||
return { isChange, atkLadderMatch, defLadderMatch }
|
||||
return { isChange, atkLadderMatch: newAtkLadderMatch, defLadderMatch: newDefLadderMatch }
|
||||
} catch(e) {
|
||||
return await this.changeRank(isSuccess, attackInfo, defenseInfo, times + 1);
|
||||
} finally {
|
||||
@@ -130,15 +135,11 @@ export default class LadderMatch extends BaseModel {
|
||||
|
||||
public static async updateCe(roleId: string, hid: number, ce: number) {
|
||||
const rec: LadderMatchType = await LadderMatchModel.findOneAndUpdate(
|
||||
{ roleId },
|
||||
{ roleId, defense: { $exists: false } },
|
||||
{ $set: { 'defense.heroes.$[t].ce': ce } },
|
||||
{ arrayFilters: [{"t.actorId": hid}] }).lean();
|
||||
return rec
|
||||
}
|
||||
|
||||
public static async clearLock() {
|
||||
await LadderMatchModel.updateMany({ locked: 1 }, { $set: { locked: 0 } })
|
||||
}
|
||||
}
|
||||
|
||||
export const LadderMatchModel = getModelForClass(LadderMatch);
|
||||
|
||||
@@ -104,12 +104,16 @@ export default class LadderMatchRec extends BaseModel {
|
||||
}
|
||||
|
||||
public static async clearLock() {
|
||||
await LadderMatchRecModel.updateMany({
|
||||
let recs = await LadderMatchRecModel.find({
|
||||
$or: [
|
||||
{ status: LADDER_STATUS.CHECK, checkTime: { $lt: nowSeconds() - LADDER.LADDER_BATTLE_PREPARE_COUNTDOWN } },
|
||||
{ status: LADDER_STATUS.BATTLE, checkTime: { $lt: nowSeconds() - LADDER.LADDER_BATTLE_COUNTDOWN } }
|
||||
]
|
||||
}, { $set: { status: LADDER_STATUS.COMPLETE, timeout: true } })
|
||||
});
|
||||
await LadderMatchRecModel.updateMany({
|
||||
battleCode: { $in: recs.map(cur => cur.battleCode) }
|
||||
}, { $set: { status: LADDER_STATUS.COMPLETE, timeout: true } });
|
||||
return recs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"rankMin": 1,
|
||||
"rankMax": 10,
|
||||
"rangeBeforeMax": 0,
|
||||
"rangeAfterMax": 0,
|
||||
"rangeAfterMax": 1,
|
||||
"rangeBeforeNum": 0,
|
||||
"rangeAfterNum": 1,
|
||||
"interval": "0&0",
|
||||
|
||||
Reference in New Issue
Block a user