This commit is contained in:
殷勇 2023-08-31 19:02:25 +08:00
parent fae06002f7
commit b33d728125
2 changed files with 61 additions and 54 deletions

View File

@ -51,7 +51,7 @@ func (g *Guild) findMemberIndex(AccountId string) int {
func (g *Guild) GetMember(accountId string) (*GuildMember, error) {
index := g.findMemberIndex(accountId)
if index == -1 {
return nil, fmt.Errorf("member[%s] not found", accountId)
return nil, fmt.Errorf("member[%s] not found in the guild[%d]", accountId, g.GuildId)
}
return g.Members[index], nil
@ -64,14 +64,17 @@ func (g *Guild) IsMember(accountId string) bool {
}
// IsFull 成员是否已满
func (g *Guild) IsFull() bool {
return int32(len(g.Members)) >= g.MaxMembers
func (g *Guild) IsFull() error {
if int32(len(g.Members)) >= g.MaxMembers {
return fmt.Errorf("guild is full")
}
return nil
}
// AddMember 添加成员
func (g *Guild) AddMember(member *GuildMember) error {
if g.IsFull() {
return fmt.Errorf("guild is full")
if err := g.IsFull(); err != nil {
return err
}
g.Members = append(g.Members, member)
return nil

View File

@ -84,27 +84,27 @@ func (gm *GuildMgr) CreateGuild(name string, leaderId string) (int64, error) {
gm.createGuildDB(guild)
gm.upsertGuildMember(guildId, &newMember)
gm.guilds[guildId] = guild
gm.addGuildIds(guildId)
gm.AddGuild(guildId, guild)
return guildId, nil
}
// ApplyToGuild 申请加入公会
func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
}
// check join guild
_, err := gm.checkJoinGuild(applicantAccountId)
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if guild.IsFull() {
return fmt.Errorf("guild is full")
// check join guild
_, err = gm.checkJoinGuild(applicantAccountId)
if err != nil {
return err
}
err = guild.IsFull()
if err != nil {
return err
}
// IF exists, then replace it fields `isJoinGuild` is 0
@ -120,9 +120,9 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error
// Approve 同意申请者加入公会
func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
operatorMember, err := guild.GetMember(operatorAccountId)
@ -179,17 +179,18 @@ func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error {
// JoinGuild 直接加入公会
func (gm *GuildMgr) JoinGuild(guildId int64, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if guild.IsFull() {
return fmt.Errorf("guild is full")
err = guild.IsFull()
if err != nil {
return err
}
newMember := GuildMember{AccountId: accountId, Level: GuildMemberLevelDefault}
err := guild.AddMember(&newMember)
err = guild.AddMember(&newMember)
if err != nil {
return err
}
@ -203,9 +204,9 @@ func (gm *GuildMgr) JoinGuild(guildId int64, accountId string) error {
// LeaveGuild 离开公会
func (gm *GuildMgr) LeaveGuild(guildId int64, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if guild.LeaderId == accountId {
@ -229,9 +230,9 @@ func (gm *GuildMgr) LeaveGuild(guildId int64, accountId string) error {
// DismissMember 开除成员 踢出
func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if accountId == guild.LeaderId {
@ -255,7 +256,7 @@ func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, accountId st
dismissMember, err := guild.GetMember(accountId)
if err != nil {
return fmt.Errorf("member not found in the guild")
return err
}
if dismissMember.Level <= operatorMember.Level {
@ -274,9 +275,9 @@ func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, accountId st
// PromoteMember 提升成员为干部
func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if accountId == guild.LeaderId {
@ -318,9 +319,9 @@ func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, accountId st
// DemoteMember 解除成员干部身份
func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
if accountId == guild.LeaderId {
@ -362,9 +363,9 @@ func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, accountId str
// Disband 解散公会
func (gm *GuildMgr) Disband(guildId int64, accountId string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
// 仅会长可操作
@ -401,9 +402,9 @@ func (gm *GuildMgr) Disband(guildId int64, accountId string) error {
// SetNotice 设置公告
func (gm *GuildMgr) SetNotice(guildId int64, accountId string, notice *string) error {
guild := gm.GetGuild(guildId)
if guild == nil {
return fmt.Errorf("guild not found")
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
// 仅会长可操作
@ -422,8 +423,8 @@ func (gm *GuildMgr) SetNotice(guildId int64, accountId string, notice *string) e
// WriteLog 记录公会日志
func (gm *GuildMgr) WriteLog(guildId int64, accountId string, logType int32, content string) {
guild := gm.GetGuild(guildId)
if guild == nil {
_, err := gm.GetGuild(guildId)
if err != nil {
return
}
@ -479,11 +480,18 @@ func (gm *GuildMgr) RandomGuilds() []*Guild {
return results
}
func (gm *GuildMgr) GetGuild(guildId int64) *Guild {
if guild, exists := gm.guilds[guildId]; exists {
return guild
func (gm *GuildMgr) AddGuild(guildId int64, guild *Guild) {
if _, exists := gm.guilds[guildId]; !exists {
gm.guilds[guildId] = guild
gm.guildIds = append(gm.guildIds, guildId)
}
return nil
}
func (gm *GuildMgr) GetGuild(guildId int64) (*Guild, error) {
if guild, exists := gm.guilds[guildId]; exists {
return guild, nil
}
return nil, fmt.Errorf("guild not found")
}
// GetGuildByAccountId 查询我的工会
@ -558,10 +566,6 @@ func (gm *GuildMgr) RemoveGuildsId(guildId int64) {
gm.guildIds = gm.guildIds[:len(gm.guildIds)-1]
}
func (gm *GuildMgr) addGuildIds(guildId int64) {
gm.guildIds = append(gm.guildIds, guildId)
}
func (gm *GuildMgr) GetAllPendingReqs(guildId int64) map[string]bool {
if pendingReq, exists := gm.pendingReqs[guildId]; exists {
return pendingReq