diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index 554020667..feafee510 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -499,9 +499,10 @@ export class RoleHandler { async rename(msg: { roleName: string }, session: BackendSession) { let { roleName } = msg; let roleId = session.get('roleId'); - // TODO 可能需要,检查是否重名 - // let checkName = await RoleModel.findRoleByField('roleName', [roleName]); - // if(checkName.length > 0) return resResult(STATUS.NAME_HAS_USED); + let serverId = session.get('serverId'); + + let checkName = await RoleModel.checkName(roleName, serverId); + if(checkName) return resResult(STATUS.NAME_HAS_USED); let role = await RoleModel.updateRoleInfo(roleId, { roleName }); diff --git a/shared/db/Role.ts b/shared/db/Role.ts index f4e4287f6..407306815 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -555,6 +555,11 @@ export default class Role extends BaseModel { const result = await RoleModel.findOneAndUpdate({roleId}, { $pull: { heads: { id: id }, $push: { heads: figure } }}, {new: true}).lean(); return result } + + public static async checkName(roleName: string, serverId: number) { + const role = await RoleModel.findOne({ roleName, serverId }).lean(); + return !!role; + } } export const RoleModel = getModelForClass(Role); diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index 89abff662..9cfd3029a 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -306,6 +306,10 @@ export default class Auth extends Service { const roleId = ctx.service.utils.genCode(10); const code = ctx.service.utils.genCode(6); const seqId = await Counter.getNewCounter(COUNTER.ROLE) || -1; + + let checkName = await RoleModel.checkName(roleName, serverId); + if(checkName) return ctx.service.utils.resResult(STATUS.NAME_HAS_USED); + const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId, lv: DEFAULT_LV, exp: (getExpByLv(DEFAULT_LV - 1) || { sum: 0 }).sum || 0 }); if (role) { let skinIds = new Array();