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 {
|
func newGuild() *guild {
|
||||||
p := new(guild)
|
p := new(guild)
|
||||||
p.idHash = make(map[string]*member)
|
p.idHash = make(map[string]*member)
|
||||||
|
@ -490,36 +490,17 @@ func (this *guildMgr) AsyncLeave(accountId string, cb func(int32, string, []stri
|
|||||||
cb(0, "", members)
|
cb(0, "", members)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if guild.isOwner(accountId) {
|
guild.asyncLeave(accountId,
|
||||||
} else {
|
func (errCode int32, errMsg string) {
|
||||||
|
if errCode != 0 {
|
||||||
}
|
|
||||||
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()
|
task.SetFail()
|
||||||
cb(500, "server internal error", members)
|
cb(errCode, errMsg, members)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
task.SetSucc()
|
task.SetSucc()
|
||||||
guild.disband()
|
|
||||||
cb(0, "", members)
|
cb(0, "", members)
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
task.SetSucc()
|
|
||||||
cb(0, "", members)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user