66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package main
|
|
|
|
import "errors"
|
|
|
|
type GuildMember struct {
|
|
AccountId string
|
|
Level int // 1: 会长, 2: 干部, 3: 成员
|
|
}
|
|
|
|
type Guild struct {
|
|
ID int
|
|
Name string
|
|
LeaderID string
|
|
Members []GuildMember
|
|
MaxMembers int
|
|
}
|
|
type GuildLog struct {
|
|
GuildId int
|
|
AccountId string
|
|
LogType uint16
|
|
Content string
|
|
}
|
|
|
|
func (g *Guild) findMemberIndex(AccountId string) int {
|
|
for i, member := range g.Members {
|
|
if member.AccountId == AccountId {
|
|
return i
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
|
|
// GetMember 获取成员
|
|
func (g *Guild) GetMember(accountId string) (*GuildMember, error) {
|
|
index := g.findMemberIndex(accountId)
|
|
if index == -1 {
|
|
return nil, errors.New("member not found")
|
|
}
|
|
|
|
return &g.Members[index], nil
|
|
}
|
|
|
|
// AddMember 添加成员
|
|
func (g *Guild) AddMember(member GuildMember) error {
|
|
if len(g.Members) >= g.MaxMembers {
|
|
return errors.New("guild is full")
|
|
}
|
|
g.Members = append(g.Members, member)
|
|
return nil
|
|
}
|
|
|
|
// RemoveMember 移除成员
|
|
func (g *Guild) RemoveMember(accountId string) error {
|
|
if accountId == g.LeaderID {
|
|
return errors.New("cannot remove leader")
|
|
}
|
|
|
|
index := g.findMemberIndex(accountId)
|
|
if index == -1 {
|
|
return errors.New("member not found")
|
|
}
|
|
|
|
g.Members = append(g.Members[:index], g.Members[index+1:]...)
|
|
return nil
|
|
}
|