名将擂台:获取对手
This commit is contained in:
@@ -15,7 +15,10 @@ export default class LadderMatch extends BaseModel {
|
||||
rank: number; // 排名
|
||||
@prop({ required: true, default: 0 })
|
||||
historyRank: number; // 历史最高排名
|
||||
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
locked: number; // 是否被挑战
|
||||
|
||||
@prop({ required: true, default: null, _id: false })
|
||||
defense: LadderDefense;
|
||||
|
||||
@@ -31,8 +34,21 @@ export default class LadderMatch extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
refOppCnt: number; // 刷新对手次数
|
||||
|
||||
public static async findByRoleId(roleId: string, getters = false) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId }).lean({ getters});
|
||||
public static async findByRoleId(roleId: string) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async checkByRank(rank: number) {
|
||||
const result = await LadderMatchModel.exists({ rank });
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRoleIdAndInclude(roleId: string) {
|
||||
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId })
|
||||
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
|
||||
.populate('defense.hero', 'hid skinId quality star colorStar lv')
|
||||
.lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -62,6 +78,11 @@ export default class LadderMatch extends BaseModel {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
public static async lock(roleId: string, rank: number) {
|
||||
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ roleId, rank, locked: 0 }, { $set: { locked: 1 }}, { new: true }).lean();
|
||||
return defense;
|
||||
}
|
||||
}
|
||||
|
||||
export const LadderMatchModel = getModelForClass(LadderMatch);
|
||||
|
||||
@@ -6,6 +6,8 @@ import { CounterModel } from './Counter';
|
||||
import { COUNTER, LADDER_STATUS } from '../consts';
|
||||
import { EXTERIOR, PVP } from '../pubUtils/dicParam';
|
||||
import { LadderDefense, LadderOppPlayerInfo } from '../domain/battleField/ladder';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
|
||||
|
||||
@index({ battleCode: 1 })
|
||||
@@ -21,17 +23,19 @@ export default class LadderMatchRec extends BaseModel {
|
||||
@prop({ required: true })
|
||||
status: LADDER_STATUS; // 1-出兵中 2-挑战中 3-挑战完毕
|
||||
@prop({ required: true })
|
||||
timeout: boolean; // 是否超时
|
||||
@prop({ required: true })
|
||||
checkTime: number; // 开始出兵的时间,10位时间戳
|
||||
@prop({ required: true })
|
||||
battleTime: number; // 开始挑战的时间,10位时间
|
||||
@prop({ required: true })
|
||||
endTime: number; // 结束时间
|
||||
@prop({ required: true, type: LadderOppPlayerInfo, default: {}, _id: false })
|
||||
attackInfo: () => LadderOppPlayerInfo; // 攻方信息
|
||||
@prop({ required: true, type: LadderOppPlayerInfo, default: {}, _id: false })
|
||||
defenseInfo: () => LadderOppPlayerInfo; // 守方信息
|
||||
@prop({ required: true, type: LadderDefense, default: {}, _id: false })
|
||||
defense: () => LadderDefense; // 守方信息
|
||||
@prop({ required: true, type: () => LadderOppPlayerInfo, default: {}, _id: false })
|
||||
attackInfo: LadderOppPlayerInfo; // 攻方信息
|
||||
@prop({ required: true, type: () => LadderOppPlayerInfo, default: {}, _id: false })
|
||||
defenseInfo: LadderOppPlayerInfo; // 守方信息
|
||||
@prop({ required: true, type: () => LadderDefense, default: {}, _id: false })
|
||||
defense: LadderDefense; // 守方信息
|
||||
|
||||
public static async findByRoleId(roleId: string, getters = false) {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId }).lean({ getters});
|
||||
@@ -42,6 +46,24 @@ export default class LadderMatchRec extends BaseModel {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOne({ roleId1: roleId, status: { $in: [ LADDER_STATUS.BATTLE, LADDER_STATUS.CHECK ] } }).lean({ getters});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async createRec(serverId: number, roleId1: string, roleId2: string, defense: LadderDefense, attackInfo: LadderOppPlayerInfo, defenseInfo: LadderOppPlayerInfo) {
|
||||
const battleCode = genCode(10);
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOneAndUpdate({ battleCode }, {
|
||||
$set: { roleId1, roleId2, serverId, defense, status: LADDER_STATUS.CHECK, checkTime: nowSeconds(), attackInfo, defenseInfo }
|
||||
}, { new: true, upsert: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async timeout(battleCode: string) {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOneAndUpdate({ battleCode }, { $set: { status: LADDER_STATUS.COMPLETE, timeout: true } }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async giveup(battleCode: string) {
|
||||
const result: LadderMatchRecType = await LadderMatchRecModel.findOneAndUpdate({ battleCode }, { $set: { status: LADDER_STATUS.NO } }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const LadderMatchRecModel = getModelForClass(LadderMatchRec);
|
||||
|
||||
Reference in New Issue
Block a user