This commit is contained in:
aozhiwei 2024-04-11 18:05:40 +08:00
parent f9697b9178
commit 8f036bfc22
4 changed files with 51 additions and 32 deletions

View File

@ -185,30 +185,10 @@ func (this *guild) asyncLeave(accountId string, cb func(int32, string)) {
} }
this.delMember(m.memberId) this.delMember(m.memberId)
_guildMgr.delGuildMember(m.memberId) _guildMgr.delGuildMember(m.memberId)
if m.guildJob == constant.GuildMemberLevelLeader { if m.isJob(constant.GuildMemberLevelLeader) {
var nextLeader *member nextLeader := this.chooseLeader()
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 { if nextLeader != nil {
f5.GetJsStyleDb().Update( model.GuildMember.SetJob(this.guildId, m.memberId, constant.GuildMemberLevelLeader,
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) { func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil { if err != nil {
cb(500, "server internal error") cb(500, "server internal error")
@ -221,15 +201,7 @@ func (this *guild) asyncLeave(accountId string, cb func(int32, string)) {
} }
} }
if this.GetMemberNum() <= 0 { if this.GetMemberNum() <= 0 {
f5.GetJsStyleDb().Update( model.Guild.Delete(this.guildId,
constant.FRIEND_DB,
"t_guild",
[][]string{
{"deleted", "1"},
},
[][]string{
{"guild_id", this.guildId},
},
func (err error, lastInsertId int64, rowsAffected int64) { func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil { if err != nil {
cb(500, "server internal error") cb(500, "server internal error")
@ -276,6 +248,20 @@ func (this *guild) getOwnerId() string {
return ownerId 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) { func (this *guild) delMember(memberId string) {
delete(this.idHash, memberId) delete(this.idHash, memberId)
} }

View File

@ -17,6 +17,10 @@ func (this *member) init(guild *guild, guildJob int32, memberId string, joinTime
this.joinTime = joinTime this.joinTime = joinTime
} }
func (this *member) isJob(guildJob int32) bool {
return this.guildJob == guildJob
}
func newMember() *member { func newMember() *member {
p := new(member) p := new(member)
return p return p

View File

@ -28,3 +28,17 @@ func (this *guild) New(guildId string, guildName string, creatorId string, avata
}, },
cb) 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)
}

View File

@ -52,3 +52,18 @@ func (this *guildMember) Delete(guildId string, memberId string,
}, },
cb) 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)
}