From c57b0e8eb725b7625fb08df558ce37e68166b63f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 9 Apr 2024 16:13:37 +0800 Subject: [PATCH] 1 --- server/imserver_new/guild/guild.go | 20 ++++++++++++ server/imserver_new/guild/guildmgr.go | 46 ++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/server/imserver_new/guild/guild.go b/server/imserver_new/guild/guild.go index eb1e129c..37511728 100644 --- a/server/imserver_new/guild/guild.go +++ b/server/imserver_new/guild/guild.go @@ -248,6 +248,26 @@ func (this *guild) asyncLeave(accountId string, cb func(int32, string)) { }) } +func (this *guild) asyncUpdateOwner(owner string, cb func(int32, string)) { + f5.GetJsStyleDb().Update( + constant.FRIEND_DB, + "t_guild", + [][]string{ + {"owner_id", owner}, + }, + [][]string{ + {"guild_id", this.guildId}, + }, + func (err error, lastInsertId int64, rowsAffected int64) { + if err != nil { + cb(500, "server internal error") + return + } + cb(0, "") + return + }) +} + func newGuild() *guild { p := new(guild) p.idHash = make(map[string]*member) diff --git a/server/imserver_new/guild/guildmgr.go b/server/imserver_new/guild/guildmgr.go index a979c977..2069129a 100644 --- a/server/imserver_new/guild/guildmgr.go +++ b/server/imserver_new/guild/guildmgr.go @@ -563,6 +563,11 @@ func (this *guildMgr) AsyncSetGuildJob(accountId string, targetId string, guildJ cb(0, "") return; } + owner := guild.getMember(accountId) + if owner == nil { + cb(0, "") + return; + } member := guild.getMember(targetId) if member == nil { cb(0, "") @@ -580,11 +585,11 @@ func (this *guildMgr) AsyncSetGuildJob(accountId string, targetId string, guildJ constant.FRIEND_DB, "t_guild_member", [][]string{ - {"member_id", member.memberId}, - {"guild_id", guild.guildId}, + {"guild_job", q5.ToString(guildJob)}, }, [][]string{ - {"guild_job", q5.ToString(guildJob)}, + {"member_id", member.memberId}, + {"guild_id", guild.guildId}, }, func (err error, lastInsertId int64, rowsAffected int64) { if err != nil { @@ -593,8 +598,39 @@ func (this *guildMgr) AsyncSetGuildJob(accountId string, targetId string, guildJ return } member.guildJob = guildJob - task.SetSucc() - cb(0, "") + if guildJob == constant.GuildMemberLevelLeader { + f5.GetJsStyleDb().Update( + constant.FRIEND_DB, + "t_guild_member", + [][]string{ + {"guild_job", q5.ToString(constant.GuildMemberLevelDefault)}, + }, + [][]string{ + {"member_id", owner.memberId}, + {"guild_id", guild.guildId}, + }, + func (err error, lastInsertId int64, rowsAffected int64) { + if err != nil { + task.SetFail() + cb(500, "") + return + } + owner.guildJob = constant.GuildMemberLevelDefault + guild.asyncUpdateOwner(member.memberId, + func (errCode int32, errMsg string) { + if err != nil { + task.SetFail() + cb(500, "") + return + } + task.SetSucc() + cb(0, "") + }) + }) + } else { + task.SetSucc() + cb(0, "") + } }) }) }