1
This commit is contained in:
parent
5c368b75e6
commit
80cccdcea0
@ -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)
|
||||
|
@ -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
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user