🐞 fix(gvg): 添加情报页面
This commit is contained in:
@@ -137,9 +137,9 @@ export default class GVGLeague extends BaseModel {
|
||||
}
|
||||
|
||||
public static async findAllLeague() {
|
||||
const leagues: { leagueCode: string, memberCnt: number }[] = await GVGLeagueModel.aggregate([
|
||||
const leagues: { leagueCode: string, memberCnt: number, serverId: number }[] = await GVGLeagueModel.aggregate([
|
||||
{ $match: { status: 1 } },
|
||||
{ $project: { leagueCode: 1, memberCnt: 1 } }
|
||||
{ $project: { leagueCode: 1, memberCnt: 1, serverId: 1 } }
|
||||
]);
|
||||
return leagues;
|
||||
}
|
||||
|
||||
@@ -44,11 +44,15 @@ class GuildActive {
|
||||
}
|
||||
|
||||
@index({ leagueCode: 1, configId: 1 })
|
||||
@index({ configId: 1, lv: -1 })
|
||||
export default class GVGLeaguePrepare extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
configId: number; // 赛期配置id
|
||||
|
||||
@prop({ required: true })
|
||||
groupKey: string; // 战区
|
||||
|
||||
@prop({ required: true })
|
||||
leagueCode: string; // 联军
|
||||
|
||||
@@ -82,12 +86,12 @@ export default class GVGLeaguePrepare extends BaseModel {
|
||||
@prop({ required: true, default: [], type: GuildActive, _id: false })
|
||||
guildActive: GuildActive[]; // 军团活跃
|
||||
|
||||
public static async initData(configId: number, leagueCode: string, maxMemberCnt: number) {
|
||||
public static async initData(configId: number, groupKey: string, leagueCode: string, maxMemberCnt: number) {
|
||||
const doc = new GVGLeaguePrepareModel();
|
||||
const update = Object.assign(doc.toJSON(), { maxMemberCnt });
|
||||
delete update._id;
|
||||
|
||||
const result: GVGLeaguePrepareType = await GVGLeaguePrepareModel.findOneAndUpdate({ configId, leagueCode }, { $setOnInsert: update }, { upsert: true, new: true })
|
||||
const result: GVGLeaguePrepareType = await GVGLeaguePrepareModel.findOneAndUpdate({ configId, leagueCode, groupKey }, { $setOnInsert: update }, { upsert: true, new: true })
|
||||
.select({ _id: 0, __v: 0, createdAt: 0, updatedAt: 0 }).lean();
|
||||
return result;
|
||||
}
|
||||
@@ -97,6 +101,12 @@ export default class GVGLeaguePrepare extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static async findByLeagueCodes(configId: number, leagueCodes: string[]) {
|
||||
const result: GVGLeaguePrepareType[] = await GVGLeaguePrepareModel.findOne({ configId, leagueCode: { $in: leagueCodes } }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async chooseJob(configId: number, leagueCode: string, job: LEAGUE_JOB) {
|
||||
if(job == LEAGUE_JOB.FIGHTER) {
|
||||
const result: GVGLeaguePrepareType = await GVGLeaguePrepareModel.findOneAndUpdate({ configId, leagueCode }, { $inc: { fighterCnt: 1 } }, { new: true }).lean();
|
||||
@@ -146,6 +156,11 @@ export default class GVGLeaguePrepare extends BaseModel {
|
||||
const result: GVGLeaguePrepareType[] = await GVGLeaguePrepareModel.aggregate([{ $match: {configId} }]);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getLvRank(configId: number) {
|
||||
const result: GVGLeaguePrepareType[] = await GVGLeaguePrepareModel.find({ configId }).sort({ lv: -1 }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const GVGLeaguePrepareModel = getModelForClass(GVGLeaguePrepare);
|
||||
|
||||
@@ -346,6 +346,10 @@ export default class Guild extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByCodesWithoutPopulate(codes: string[]) {
|
||||
const result: GuildType[] = await GuildModel.find({ status: GUILD_STATUS.RUNNING, code: { $in: codes } }).select('+serverId').lean();
|
||||
return result;
|
||||
}
|
||||
public static async quitFromLeague(guildCode: string, leagueCode: string, select = null) {
|
||||
const result: GuildType = await GuildModel.findOneAndUpdate({ code: guildCode, leagueCode }, { $set: { leagueCode: '' } }, { new: true }).select(select).lean();
|
||||
return result;
|
||||
|
||||
@@ -824,4 +824,55 @@ export class MyTeamInfo {
|
||||
this.pointId = team.pointId;
|
||||
this.curTeamBreak = team.curTeamBreak;
|
||||
}
|
||||
}
|
||||
|
||||
// 情报
|
||||
// 联军排名
|
||||
export class LeagueRankInInfoPage {
|
||||
rank: number;
|
||||
leagueCode: string = '';
|
||||
leagueName: string = '';
|
||||
lv: number = 1;
|
||||
leaderName: string = '';
|
||||
leagueCe: number = 0;
|
||||
cities: number[] = [];
|
||||
|
||||
constructor(rank: number, league: GVGLeagueType, prepare: GVGLeaguePrepareType, ce: number, cities: number[]) {
|
||||
this.rank = rank;
|
||||
if(league) {
|
||||
this.leagueCode = league.leagueCode;
|
||||
this.leagueName = league.name;
|
||||
this.leaderName = (<RoleType>league.leader)?.roleName;
|
||||
}
|
||||
if(prepare) {
|
||||
this.lv = prepare.lv;
|
||||
}
|
||||
this.leagueCe = ce;
|
||||
this.cities = cities;
|
||||
}
|
||||
}
|
||||
|
||||
export class GuardCityInfoPage {
|
||||
cityId: number;
|
||||
guardLeagueCode: string = '';
|
||||
guardLeagueName: string = '';
|
||||
lv: number = 0;
|
||||
leaderName: string = '';
|
||||
leagueCe: number = 0;
|
||||
|
||||
constructor(cityId: number) {
|
||||
this.cityId = cityId;
|
||||
}
|
||||
|
||||
setGuardLeague(league: GVGLeagueType, prepare: GVGLeaguePrepareType, ce: number) {
|
||||
if(league) {
|
||||
this.guardLeagueCode = league.leagueCode;
|
||||
this.guardLeagueName = league.name;
|
||||
this.leaderName = (<RoleType>league.leader)?.roleName;
|
||||
}
|
||||
if(prepare) {
|
||||
this.lv = prepare.lv;
|
||||
}
|
||||
this.leagueCe = ce;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user