feat(gvg): 组建期

This commit is contained in:
luying
2023-01-05 19:18:56 +08:00
parent 94c69089ac
commit 03fa74f3d1
50 changed files with 10354 additions and 38 deletions

View File

@@ -111,6 +111,9 @@ export default class Guild extends BaseModel {
@prop({ required: true })
sdkMark: boolean; // 37sdk标记有问题
@prop({ required: true, default: '' })
leagueCode: string; // 参与联军
public static async createGuild(params: { guildCode: string, name: string, icon: number, notice: string }, role: RoleType, serverId: number) {
const doc = new GuildModel();
const update = Object.assign(doc.toJSON(), params, { leader: role._id, members: [role.roleId], guildCe: role.ce, serverId, lvUpdateTime: nowSeconds() });
@@ -175,7 +178,7 @@ export default class Guild extends BaseModel {
if(serverId) condition.serverId = serverId;
const result: GuildType = await GuildModel.findOne(condition)
.select(select)
.populate('leader', {roleId: 1, roleName: 1, frame: 1, head: 1, spine: 1, frames: 1, heads: 1, spines: 1, lv: 1, quitTime: 1, ce: 1, title: 1, _id: 0}, 'Role')
.populate('leader', {roleId: 1, roleName: 1, frame: 1, head: 1, spine: 1, frames: 1, heads: 1, spines: 1, lv: 1, quitTime: 1, ce: 1, title: 1}, 'Role')
.lean({ getters: true, virtuals: true });
return result;
}
@@ -315,6 +318,41 @@ export default class Guild extends BaseModel {
const result = await GuildModel.count(searchObj);
return result;
}
public static async joinLeague(guildCode: string, leagueCode: string) {
const result: GuildType = await GuildModel.findOneAndUpdate({ code: guildCode }, { $set: { leagueCode } }, { new: true }).lean();
return result
}
public static async findGuildsForGVG(page: number, name: string, serverIds: number[]) {
let query: any = { status: GUILD_STATUS.RUNNING, lv: { $gte: 3 }, leagueCode: '', serverId: { $in: serverIds } };
if(name) {
query['name'] = { $regex: new RegExp(name, 'i') }
}
const result: GuildType[] = await GuildModel.find(query)
.populate('leader', { roleId: 1, roleName: 1, _id: 0 }, 'Role')
.skip((page - 1) * 30).limit(30)
.lean();
return result;
}
public static async findByCodes(codes: string[]) {
const result: GuildType[] = await GuildModel.find({ status: GUILD_STATUS.RUNNING, code: { $in: codes } })
.select('+serverId')
.populate('leader', { roleId: 1, roleName: 1, _id: 0 }, 'Role')
.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;
}
public static async dissmissLeague(leagueCode: string) {
const result: GuildType = await GuildModel.findOneAndUpdate({ leagueCode }, { $set: { leagueCode: '' }}).lean();
return result;
}
}
export const GuildModel = getModelForClass(Guild);