diff --git a/server/imserver_new/guild/guildmgr.go b/server/imserver_new/guild/guildmgr.go index 65ec6d0e..c7cd1e44 100644 --- a/server/imserver_new/guild/guildmgr.go +++ b/server/imserver_new/guild/guildmgr.go @@ -600,6 +600,17 @@ func (this *guildMgr) AsyncUpdateGuild(accountId string, kv map[int32]string, cb cb(2, "Insufficient permissions") return } + if name, ok := kv[constant.GUILD_UPDATE_FIELD_NAME]; ok { + if this.internalGetGuildByGuildName(name) != nil { + cb(4, "Cube name already exists") + return + } + if this.isUsingName(name) { + cb(4, "Cube name already exists") + return + } + this.addUsingName(name) + } f5.NewLockAsyncTask([][]string{ {constant.GUILD_ID_LOCK_KEY, guild.guildId}, {constant.GUILD_NAME_LOCK_KEY, guild.guildName}, @@ -633,8 +644,20 @@ func (this *guildMgr) AsyncUpdateGuild(accountId string, kv map[int32]string, cb }, fields, func (err error, lastInsertId int64, rowsAffected int64) { - + if err != nil { + task.SetFail() + cb(500, "server internal error") + return + } + task.SetSucc() + cb(0, "") + return }) + }).OnExit( + func (task *f5.LockAsyncTask) { + if name, ok := kv[constant.GUILD_UPDATE_FIELD_NAME]; ok { + this.removeUsingName(name) + } }) }