From 94f0bf10f5e97033a4b978d38cf5f4026c26d04d Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 28 Jun 2021 17:06:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=9B=E5=9B=A2=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BC=B9=E5=8A=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/battle/handler/guildHandler.ts | 14 ++++++++++++-- shared/db/UserGuild.ts | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/game-server/app/servers/battle/handler/guildHandler.ts b/game-server/app/servers/battle/handler/guildHandler.ts index c4d91e2f2..6f8c1ed1e 100644 --- a/game-server/app/servers/battle/handler/guildHandler.ts +++ b/game-server/app/servers/battle/handler/guildHandler.ts @@ -1,7 +1,7 @@ import { Application, BackendSession, ChannelService } from 'pinus'; import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util'; import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE } from '../../../consts'; -import { UserGuildModel } from '../../../db/UserGuild'; +import { UserGuildModel, UserGuildType } from '../../../db/UserGuild'; import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo } from '../../../services/guildService'; import { GuildModel, GuildType } from '../../../db/Guild'; import { RoleModel, RoleType } from '../../../db/Role'; @@ -704,7 +704,17 @@ export class GuildHandler { return resResult(STATUS.GUILD_LEADER_LOGIN); } // 上周周功勋最高的人 - const topUserGuild = await UserGuildModel.findTopActive(code, 'auth role roleId'); + const topUserGuilds = await UserGuildModel.findTopActive(code, 'auth role roleId'); + if (topUserGuilds.length <= 0) { + return resResult(STATUS.GUILD_MEMBER_NOT_FOUND); + } + let topUserGuild: UserGuildType; + for(let userGuild of topUserGuilds) { + let role = await RoleModel.findByRoleId(userGuild.roleId, 'quitTime'); + if(role && role.quitTime > getTimeFun().getBeforeDay(3)) { + topUserGuild = userGuild; break; + } + } if (!topUserGuild) { return resResult(STATUS.GUILD_MEMBER_NOT_FOUND); } diff --git a/shared/db/UserGuild.ts b/shared/db/UserGuild.ts index dacb7b525..02355f300 100644 --- a/shared/db/UserGuild.ts +++ b/shared/db/UserGuild.ts @@ -125,7 +125,7 @@ export default class UserGuild extends BaseModel { } public static async findTopActive(guildCode: string, select?: string) { - const userGuilds: UserGuildType = await UserGuildModel.findOne({ guildCode, status: USER_GUILD_STATUS.ON, auth: { $ne: GUILD_AUTH.LEADER } }) + const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON, auth: { $ne: GUILD_AUTH.LEADER } }) .sort({ activeWeekly: -1, activeUpdateTime: 1 }) .select(select) .populate('role', 'roleId roleName ce head frame spine lv title quitTime', 'Role')