更新
This commit is contained in:
parent
fae06002f7
commit
b33d728125
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user