This commit is contained in:
aozhiwei 2024-04-08 16:59:21 +08:00
parent 5c368b75e6
commit 80cccdcea0
2 changed files with 90 additions and 29 deletions

View File

@ -151,6 +151,86 @@ func (this *guild) AsyncFillMFGuild(pbGuild *cs.MFGuild, cb func(int32, string))
})
}
func (this *guild) asyncLeave(accountId string, cb func(int32, string)) {
m := this.getMember(accountId)
if m == nil {
cb(0, "")
return
}
f5.GetJsStyleDb().Update(
constant.FRIEND_DB,
"t_guild_member",
[][]string{
{"deleted", "1"},
},
[][]string{
{"guild_id", this.guildId},
{"member_id", m.memberId},
},
func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
cb(500, "server internal error")
return
}
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 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},
},
func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
cb(500, "server internal error")
return
}
nextLeader.guildJob = constant.GuildMemberLevelLeader
cb(0, "")
return
})
}
delete(this.idHash, m.memberId)
}
if this.GetMemberNum() <= 0 {
f5.GetJsStyleDb().Update(
constant.FRIEND_DB,
"t_guild",
[][]string{
{"deleted", "1"},
},
[][]string{
{"guild_id", this.guildId},
},
func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
cb(500, "server internal error")
return
}
this.disband()
cb(0, "")
return
})
}
})
}
func newGuild() *guild {
p := new(guild)
p.idHash = make(map[string]*member)

View File

@ -490,36 +490,17 @@ func (this *guildMgr) AsyncLeave(accountId string, cb func(int32, string, []stri
cb(0, "", members)
return
}
if guild.isOwner(accountId) {
} else {
}
if guild.GetMemberNum() <= 0 {
f5.GetJsStyleDb().Update(
constant.FRIEND_DB,
"t_guild",
[][]string{
{"deleted", "1"},
},
[][]string{
{"guild_id", guild.guildId},
},
func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
task.SetFail()
cb(500, "server internal error", members)
return
}
task.SetSucc()
guild.disband()
cb(0, "", members)
guild.asyncLeave(accountId,
func (errCode int32, errMsg string) {
if errCode != 0 {
task.SetFail()
cb(errCode, errMsg, members)
return
})
} else {
task.SetSucc()
cb(0, "", members)
return
}
}
task.SetSucc()
cb(0, "", members)
return
})
})
}