名将擂台:检查排名添加分服
This commit is contained in:
@@ -375,12 +375,13 @@ export class LadderHandler {
|
||||
}
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
let serverId = session.get('serverId');
|
||||
|
||||
let atkLadderMatch = await LadderMatchModel.findByRoleId(roleId);
|
||||
if(!atkLadderMatch || !atkLadderMatch.defense) return resResult(STATUS.LADDER_NOT_OPEN);
|
||||
let myRank = atkLadderMatch.rank;
|
||||
|
||||
let defLadderMatch = await LadderMatchModel.findByRank(rank);
|
||||
let defLadderMatch = await LadderMatchModel.findByRank(serverId, rank);
|
||||
if(defLadderMatch) {
|
||||
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: { rank, oldRank: myRank, historyRank: rank } }, { new: true }).lean();
|
||||
defLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defLadderMatch.roleId }, { $set: { rank: myRank, oldRank: rank } }, { new: true }).lean();
|
||||
|
||||
@@ -203,7 +203,7 @@ export async function getLadderOppStatus(ladderData: LadderMatchType, targetRole
|
||||
let hisLadderData = await LadderMatchRecModel.checkByRank(ladderData.serverId, `robot${rank}`);
|
||||
if(hisLadderData) return { status: LADDER_OPP_STATUS.OPP_IS_LOCKED };
|
||||
|
||||
let ladderMatch = await LadderMatchModel.isRankExist(rank);
|
||||
let ladderMatch = await LadderMatchModel.isRankExist(ladderData.serverId, rank);
|
||||
if(ladderMatch) {
|
||||
return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE };
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import { LadderDefense, LadderOppPlayerInDB } from '../domain/battleField/ladder
|
||||
import Role from './Role';
|
||||
|
||||
@index({ roleId: 1 })
|
||||
@index({ serverId: 1, rank: 1 })
|
||||
export default class LadderMatch extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
serverId: number; // 角色 id
|
||||
@@ -41,13 +42,13 @@ export default class LadderMatch extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRank(rank: number) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ rank }).lean();
|
||||
public static async findByRank(serverId: number, rank: number) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ serverId, rank }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async isRankExist(rank: number) {
|
||||
const result = await LadderMatchModel.exists({ rank });
|
||||
public static async isRankExist(serverId: number, rank: number) {
|
||||
const result = await LadderMatchModel.exists({ serverId, rank });
|
||||
return result;
|
||||
}
|
||||
public static async findByRoleIdAndInclude(roleId: string) {
|
||||
|
||||
Reference in New Issue
Block a user