diff --git a/server/imserver_new/guild/guild.go b/server/imserver_new/guild/guild.go index 95a945cb..68df6577 100644 --- a/server/imserver_new/guild/guild.go +++ b/server/imserver_new/guild/guild.go @@ -185,30 +185,10 @@ func (this *guild) asyncLeave(accountId string, cb func(int32, string)) { } this.delMember(m.memberId) _guildMgr.delGuildMember(m.memberId) - if m.guildJob == constant.GuildMemberLevelLeader { - var nextLeader *member - this.traverseMembers( - func (ele *member) bool { - if ele != m { - if nextLeader == nil { - nextLeader = m - } else if ele.guildJob < nextLeader.guildJob { - nextLeader = m - } - } - return true - }) + if m.isJob(constant.GuildMemberLevelLeader) { + nextLeader := this.chooseLeader() if nextLeader != nil { - f5.GetJsStyleDb().Update( - constant.FRIEND_DB, - "t_guild_member", - [][]string{ - {"guild_job", q5.ToString(constant.GuildMemberLevelLeader)}, - }, - [][]string{ - {"guild_id", this.guildId}, - {"member_id", m.memberId}, - }, + model.GuildMember.SetJob(this.guildId, m.memberId, constant.GuildMemberLevelLeader, func (err error, lastInsertId int64, rowsAffected int64) { if err != nil { cb(500, "server internal error") @@ -221,15 +201,7 @@ func (this *guild) asyncLeave(accountId string, cb func(int32, string)) { } } if this.GetMemberNum() <= 0 { - f5.GetJsStyleDb().Update( - constant.FRIEND_DB, - "t_guild", - [][]string{ - {"deleted", "1"}, - }, - [][]string{ - {"guild_id", this.guildId}, - }, + model.Guild.Delete(this.guildId, func (err error, lastInsertId int64, rowsAffected int64) { if err != nil { cb(500, "server internal error") @@ -276,6 +248,20 @@ func (this *guild) getOwnerId() string { return ownerId } +func (this *guild) chooseLeader() *member { + var nextLeader *member + this.traverseMembers( + func (ele *member) bool { + if nextLeader == nil { + nextLeader = ele + } else if ele.guildJob < nextLeader.guildJob { + nextLeader = ele + } + return true + }) + return nextLeader +} + func (this *guild) delMember(memberId string) { delete(this.idHash, memberId) } diff --git a/server/imserver_new/guild/member.go b/server/imserver_new/guild/member.go index 843d678a..85b26342 100644 --- a/server/imserver_new/guild/member.go +++ b/server/imserver_new/guild/member.go @@ -17,6 +17,10 @@ func (this *member) init(guild *guild, guildJob int32, memberId string, joinTime this.joinTime = joinTime } +func (this *member) isJob(guildJob int32) bool { + return this.guildJob == guildJob +} + func newMember() *member { p := new(member) return p diff --git a/server/imserver_new/model/guild.go b/server/imserver_new/model/guild.go index 34e2e297..e0ed192d 100644 --- a/server/imserver_new/model/guild.go +++ b/server/imserver_new/model/guild.go @@ -28,3 +28,17 @@ func (this *guild) New(guildId string, guildName string, creatorId string, avata }, cb) } + +func (this *guild) Delete(guildId string, + cb func (error, int64, int64)) { + f5.GetJsStyleDb().Update( + constant.FRIEND_DB, + "t_guild", + [][]string{ + {"deleted", "1"}, + }, + [][]string{ + {"guild_id", guildId}, + }, + cb) +} diff --git a/server/imserver_new/model/guild_member.go b/server/imserver_new/model/guild_member.go index 563f106b..73d6ec19 100644 --- a/server/imserver_new/model/guild_member.go +++ b/server/imserver_new/model/guild_member.go @@ -52,3 +52,18 @@ func (this *guildMember) Delete(guildId string, memberId string, }, cb) } + +func (this *guildMember) SetJob(guildId string, memberId string, guildJob int32, + cb func (error, int64, int64)) { + f5.GetJsStyleDb().Update( + constant.FRIEND_DB, + "t_guild_member", + [][]string{ + {"guild_job", q5.ToString(guildJob)}, + }, + [][]string{ + {"guild_id", guildId}, + {"member_id", memberId}, + }, + cb) +}