This commit is contained in:
殷勇 2023-09-05 17:34:51 +08:00
parent 8b94922a4b
commit 6b9bcbaed1

View File

@ -213,13 +213,13 @@ func (gm *GuildMgr) Approve(operatorAccountId, accountId string, cb func(errCode
}
newMember := &GuildMember{accountId: accountId, level: GuildMemberLevelDefault}
guild.AddMember(newMember)
gm.upsertGuildMember(guildId, newMember, func(err error) {
if err != nil {
cb(1, "xxx")
return
}
guild.AddMember(newMember)
gm.AddUserGuild(accountId, guildId)
gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined, func(err error) {
logContent := fmt.Sprintf("Approve[operator:%s]", operatorAccountId)
gm.WriteLog(guildId, accountId, LogTypeApprove, logContent)
@ -267,10 +267,13 @@ func (gm *GuildMgr) Reject(operatorAccountId, accountId string, cb func(errCode
// JoinGuild 直接加入公会
func (gm *GuildMgr) JoinGuild(guild *Guild, accountId string) {
newMember := GuildMember{accountId: accountId, level: GuildMemberLevelDefault}
guild.AddMember(&newMember)
guildId := guild.guildId
gm.upsertGuildMember(guildId, &newMember,
func(err error) {
if err != nil {
guild.AddMember(&newMember)
gm.AddUserGuild(accountId, guildId)
}
})
}
@ -288,15 +291,19 @@ func (gm *GuildMgr) LeaveGuild(accountId string, cb func(errCode int32, errMsg s
cb(1, "XXX")
}
guild.RemoveMember(accountId)
fields := [][]string{{"is_leave_guild", q5.ToString(1)}}
gm.updateGuildMember(guild, member.accountId, fields,
func(err error) {
if err != nil {
cb(1, err.Error())
}
guild.RemoveMember(accountId)
gm.RemoveUserGuild(accountId)
// Add logs
logContent := fmt.Sprintf("LeaveGuild[%d-%s]", guild.guildId, accountId)
gm.WriteLog(guild.guildId, accountId, LogTypeLeave, logContent)
cb(0, "")
}
})
}
@ -330,10 +337,17 @@ func (gm *GuildMgr) DismissMember(operatorAccountId, accountId string, cb func(e
if dismissMember.level <= operatorMember.level {
cb(1, "XXX")
}
guild.RemoveMember(accountId)
fields := [][]string{{"is_leave_guild", q5.ToString(1)}}
gm.updateGuildMember(guild, dismissMember.accountId, fields, func(err error) {
if err != nil {
cb(1, err.Error())
return
}
guild.RemoveMember(accountId)
gm.RemoveUserGuild(accountId)
// Add logs
logContent := fmt.Sprintf("DismissMember[%d-%s-%s]", guild.guildId, operatorAccountId, accountId)
gm.WriteLog(guild.guildId, accountId, LogTypeDismiss, logContent)
cb(0, "")
@ -370,9 +384,14 @@ func (gm *GuildMgr) PromoteMember(operatorAccountId, accountId string, cb func(e
cb(1, "XXX")
}
member.level = GuildMemberLevelViceLeader
fields := [][]string{{"level", q5.ToString(GuildMemberLevelViceLeader)}}
gm.updateGuildMember(guild, member.accountId, fields, func(err error) {
if err != nil {
cb(1, err.Error())
return
}
member.level = GuildMemberLevelViceLeader
logContent := fmt.Sprintf("PromoteMember[%d-%s-%s]", guild.guildId, operatorAccountId, accountId)
gm.WriteLog(guild.guildId, accountId, LogTypeDismiss, logContent)
cb(0, "")
@ -404,9 +423,14 @@ func (gm *GuildMgr) DemoteMember(operatorAccountId, accountId string, cb func(er
cb(1, "XXX")
}
member.level = GuildMemberLevelDefault
fields := [][]string{{"level", q5.ToString(GuildMemberLevelDefault)}}
gm.updateGuildMember(guild, member.accountId, fields, func(err error) {
if err != nil {
cb(1, err.Error())
return
}
member.level = GuildMemberLevelDefault
logContent := fmt.Sprintf("DemoteMember[%d-%s-%s]", guild.guildId, operatorAccountId, accountId)
gm.WriteLog(guild.guildId, accountId, LogTypeDismiss, logContent)
cb(0, "")
@ -438,10 +462,12 @@ func (gm *GuildMgr) Disband(operatorAccountId string, cb func(errCode int32, err
logContent := fmt.Sprintf("GuildDisbanded[%d-%s]", guildId, guildName)
gm.WriteLog(guildId, operatorAccountId, LogTypeDisband, logContent)
guild.members = nil
gm.guilds[guildId] = nil
gm.guildLogs[guildId] = nil
// delete user guilds
for _, member := range guild.members {
delete(gm.userGuilds, member.accountId)
}
guild.members = nil
delete(gm.guilds, guildId)
delete(gm.guildLogs, guildId)
gm.RemoveGuild(guildId)
@ -462,15 +488,16 @@ func (gm *GuildMgr) SetNotice(operatorAccountId string, notice *string, cb func(
cb(1, "XXX")
}
guild.SetNotice(notice)
updateFields := [][]string{
{"notice", *notice},
}
gm.updateGuild(guild, updateFields, func(err error) {
if err == nil {
cb(0, "")
}
if err != nil {
cb(1, err.Error())
return
}
guild.SetNotice(notice)
cb(0, "")
})
}
@ -545,6 +572,14 @@ func (gm *GuildMgr) ExistsGuild(guildId int64) bool {
return ok
}
func (gm *GuildMgr) AddUserGuild(accountId string, guildId int64) {
gm.userGuilds[accountId] = guildId
}
func (gm *GuildMgr) RemoveUserGuild(accountId string) {
delete(gm.userGuilds, accountId)
}
func (gm *GuildMgr) AddGuild(guildId int64, guild *Guild) {
if _, exists := gm.guilds[guildId]; !exists {
gm.guilds[guildId] = guild