This commit is contained in:
殷勇 2023-08-31 19:40:21 +08:00
parent b33d728125
commit bbd2662f7b
4 changed files with 53 additions and 45 deletions

View File

@ -59,6 +59,9 @@ const (
GuildMemberLevelViceLeader = 2 // 成员等级, 副会长 GuildMemberLevelViceLeader = 2 // 成员等级, 副会长
GuildMemberLevelElite = 3 // 成员等级, 精英 GuildMemberLevelElite = 3 // 成员等级, 精英
GuildMemberLevelDefault = 3 // 成员等级, 普通成员 GuildMemberLevelDefault = 3 // 成员等级, 普通成员
JoinCondDefault = 0 // 加入条件 0 需要审批
JoinCondFree = 1 // 加入条件 1 可直接加入
JoinCondStar = 2 // 加入条件 2 满足星星条件
PendingReqIsJoinGuildStatusDefault = 0 // 等待验证请求状态, 0 等待审核 PendingReqIsJoinGuildStatusDefault = 0 // 等待验证请求状态, 0 等待审核
PendingReqIsJoinGuildStatusJoined = 1 // 等待验证请求状态, 1 已加入 PendingReqIsJoinGuildStatusJoined = 1 // 等待验证请求状态, 1 已加入
PendingReqIsJoinGuildStatusReject = 2 // 等待验证请求状态, 2 拒绝 PendingReqIsJoinGuildStatusReject = 2 // 等待验证请求状态, 2 拒绝

View File

@ -72,12 +72,10 @@ func (g *Guild) IsFull() error {
} }
// AddMember 添加成员 // AddMember 添加成员
func (g *Guild) AddMember(member *GuildMember) error { func (g *Guild) AddMember(member *GuildMember) {
if err := g.IsFull(); err != nil { if err := g.IsFull(); err == nil {
return err g.Members = append(g.Members, member)
} }
g.Members = append(g.Members, member)
return nil
} }
// RemoveMember 移除成员 // RemoveMember 移除成员

View File

@ -2,6 +2,7 @@ package main
import ( import (
"f5" "f5"
"fmt"
"q5" "q5"
) )
@ -192,18 +193,29 @@ func (gm *GuildMgr) createGuildDB(g *Guild) {
{"leader_account_id", g.LeaderId}, {"leader_account_id", g.LeaderId},
{"max_members", q5.ToString(g.MaxMembers)}, {"max_members", q5.ToString(g.MaxMembers)},
} }
var insertError error
var lastInsertId int64
var rowsAffected int64
insertCallback := func(err error, id int64, affectedRows int64) {
insertError = err
lastInsertId = id
rowsAffected = affectedRows
}
f5.GetJsStyleDb().Insert( f5.GetJsStyleDb().Insert(
FRIEND_DB, FRIEND_DB,
"t_guild", "t_guild",
fields, fields,
func(err error, lastInsertId int64, rowsAffected int64) { insertCallback,
if err != nil || rowsAffected != 1 {
f5.GetSysLog().Info("createGuildDB:%v\n", err)
}
f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId)
f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected)
},
) )
if insertError != nil || rowsAffected != 1 {
// 插入失败,处理错误逻辑
fmt.Printf("Failed to insert guild: %v", insertError)
}
f5.GetSysLog().Info("Guild inserted successfully. LastInsertId: %d, RowsAffected: %d", lastInsertId, rowsAffected)
} }
// updateGuild 更新公会信息 // updateGuild 更新公会信息

View File

@ -76,14 +76,11 @@ func (gm *GuildMgr) CreateGuild(name string, leaderId string) (int64, error) {
MaxMembers: MaxMembers, MaxMembers: MaxMembers,
} }
newMember := GuildMember{AccountId: leaderId, Level: GuildMemberLevelLeader} newMember := &GuildMember{AccountId: leaderId, Level: GuildMemberLevelLeader}
err = guild.AddMember(&newMember) guild.Members = append(guild.Members, newMember)
if err != nil {
return 0, err
}
gm.createGuildDB(guild) gm.createGuildDB(guild)
gm.upsertGuildMember(guildId, &newMember) gm.upsertGuildMember(guildId, newMember)
gm.AddGuild(guildId, guild) gm.AddGuild(guildId, guild)
return guildId, nil return guildId, nil
@ -96,7 +93,7 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error
return err return err
} }
// check join guild // 是否加入其他公会
_, err = gm.checkJoinGuild(applicantAccountId) _, err = gm.checkJoinGuild(applicantAccountId)
if err != nil { if err != nil {
return err return err
@ -107,6 +104,19 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error
return err return err
} }
// 可直接加入
if guild.JoinCond == JoinCondFree {
gm.JoinGuild(guild, applicantAccountId)
return nil
}
if guild.JoinCond == JoinCondStar {
var userStar int32 = 200
if userStar < guild.JoinCondValue {
return fmt.Errorf("joincond error")
}
}
// IF exists, then replace it fields `isJoinGuild` is 0 // IF exists, then replace it fields `isJoinGuild` is 0
gm.upsertPendingReqs(guildId, applicantAccountId, PendingReqIsJoinGuildStatusDefault) gm.upsertPendingReqs(guildId, applicantAccountId, PendingReqIsJoinGuildStatusDefault)
pendReq, exists := gm.pendingReqs[guildId] pendReq, exists := gm.pendingReqs[guildId]
@ -142,19 +152,21 @@ func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string)
return err return err
} }
err = guild.IsFull()
if err != nil {
return err
}
// 是否在申请队列中 // 是否在申请队列中
_, exists := gm.pendingReqs[guildId][accountId] _, exists := gm.pendingReqs[guildId][accountId]
if !exists { if !exists {
return fmt.Errorf("no pending applications for this guild") return fmt.Errorf("no pending applications for this guild")
} }
newMember := GuildMember{AccountId: accountId, Level: GuildMemberLevelDefault} newMember := &GuildMember{AccountId: accountId, Level: GuildMemberLevelDefault}
err = guild.AddMember(&newMember) guild.AddMember(newMember)
if err != nil {
return err
}
gm.upsertGuildMember(guildId, &newMember) gm.upsertGuildMember(guildId, newMember)
gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined) gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined)
logContent := fmt.Sprintf("Approve[operator:%s]", operatorAccountId) logContent := fmt.Sprintf("Approve[operator:%s]", operatorAccountId)
@ -178,28 +190,11 @@ func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error {
} }
// JoinGuild 直接加入公会 // JoinGuild 直接加入公会
func (gm *GuildMgr) JoinGuild(guildId int64, accountId string) error { func (gm *GuildMgr) JoinGuild(guild *Guild, accountId string) {
guild, err := gm.GetGuild(guildId)
if err != nil {
return err
}
err = guild.IsFull()
if err != nil {
return err
}
newMember := GuildMember{AccountId: accountId, Level: GuildMemberLevelDefault} newMember := GuildMember{AccountId: accountId, Level: GuildMemberLevelDefault}
err = guild.AddMember(&newMember) guild.AddMember(&newMember)
if err != nil { guildId := guild.GuildId
return err
}
gm.upsertGuildMember(guildId, &newMember) gm.upsertGuildMember(guildId, &newMember)
delete(gm.pendingReqs[guildId], accountId)
gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined)
return nil
} }
// LeaveGuild 离开公会 // LeaveGuild 离开公会