✨ feat(gvg): 组建期
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user