Save
This commit is contained in:
parent
80383c5bb8
commit
96253d24e3
@ -4,7 +4,6 @@ import "errors"
|
|||||||
|
|
||||||
type GuildMember struct {
|
type GuildMember struct {
|
||||||
AccountId string
|
AccountId string
|
||||||
Username string
|
|
||||||
Level int // 1: 会长, 2: 干部, 3: 成员
|
Level int // 1: 会长, 2: 干部, 3: 成员
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,6 +30,16 @@ func (g *Guild) findMemberIndex(AccountId string) int {
|
|||||||
return -1
|
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 添加成员
|
// AddMember 添加成员
|
||||||
func (g *Guild) AddMember(member GuildMember) error {
|
func (g *Guild) AddMember(member GuildMember) error {
|
||||||
if len(g.Members) >= g.MaxMembers {
|
if len(g.Members) >= g.MaxMembers {
|
||||||
|
@ -53,7 +53,6 @@ func (gm *GuildMgr) ApplyToGuild(guildID int, applicantAccountId string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
guild := gm.Guilds[guildID]
|
guild := gm.Guilds[guildID]
|
||||||
// 获取即时人数, 是否需要锁
|
|
||||||
if len(guild.Members) >= guild.MaxMembers {
|
if len(guild.Members) >= guild.MaxMembers {
|
||||||
return errors.New("guild is full")
|
return errors.New("guild is full")
|
||||||
}
|
}
|
||||||
@ -85,7 +84,7 @@ func (gm *GuildMgr) ApproveApplication(guildID int, applicantAccountId string) e
|
|||||||
|
|
||||||
for i, accountId := range pendingAccountIds {
|
for i, accountId := range pendingAccountIds {
|
||||||
if accountId == applicantAccountId {
|
if accountId == applicantAccountId {
|
||||||
newMember := GuildMember{AccountId: applicantAccountId, Username: applicantAccountId, Level: 3}
|
newMember := GuildMember{AccountId: applicantAccountId, Level: 3}
|
||||||
err := guild.AddMember(newMember)
|
err := guild.AddMember(newMember)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -115,7 +114,7 @@ func (gm *GuildMgr) RejectApplication(guildID int, applicantAccountId string) er
|
|||||||
return errors.New("applicant not found")
|
return errors.New("applicant not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
// JoinGuild 加入公会
|
// JoinGuild 可直接加入公会
|
||||||
func (gm *GuildMgr) JoinGuild(guildID int, memberID string) error {
|
func (gm *GuildMgr) JoinGuild(guildID int, memberID string) error {
|
||||||
guild, exists := gm.Guilds[guildID]
|
guild, exists := gm.Guilds[guildID]
|
||||||
if !exists {
|
if !exists {
|
||||||
@ -126,7 +125,7 @@ func (gm *GuildMgr) JoinGuild(guildID int, memberID string) error {
|
|||||||
return errors.New("guild is full")
|
return errors.New("guild is full")
|
||||||
}
|
}
|
||||||
|
|
||||||
newMember := GuildMember{AccountId: memberID, Username: memberID, Level: 3}
|
newMember := GuildMember{AccountId: memberID, Level: 3}
|
||||||
guild.Members = append(guild.Members, newMember)
|
guild.Members = append(guild.Members, newMember)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -137,6 +136,9 @@ func (gm *GuildMgr) LeaveGuild(guildID int, memberID string) error {
|
|||||||
if !exists {
|
if !exists {
|
||||||
return errors.New("guild not found")
|
return errors.New("guild not found")
|
||||||
}
|
}
|
||||||
|
if guild.LeaderID == memberID {
|
||||||
|
return errors.New("leader not leave guild")
|
||||||
|
}
|
||||||
|
|
||||||
for i, member := range guild.Members {
|
for i, member := range guild.Members {
|
||||||
if member.AccountId == memberID {
|
if member.AccountId == memberID {
|
||||||
@ -148,8 +150,8 @@ func (gm *GuildMgr) LeaveGuild(guildID int, memberID string) error {
|
|||||||
return errors.New("member not found in the guild")
|
return errors.New("member not found in the guild")
|
||||||
}
|
}
|
||||||
|
|
||||||
// DismissMember 开除成员
|
// DismissMember 开除成员 踢出
|
||||||
func (gm *GuildMgr) DismissMember(guildID int, memberID string) error {
|
func (gm *GuildMgr) DismissMember(guildID int, operatorAccountId, memberID string) error {
|
||||||
guild, exists := gm.Guilds[guildID]
|
guild, exists := gm.Guilds[guildID]
|
||||||
if !exists {
|
if !exists {
|
||||||
return errors.New("guild not found")
|
return errors.New("guild not found")
|
||||||
@ -159,14 +161,25 @@ func (gm *GuildMgr) DismissMember(guildID int, memberID string) error {
|
|||||||
return errors.New("cannot dismiss the leader")
|
return errors.New("cannot dismiss the leader")
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, member := range guild.Members {
|
operatorMember, err := guild.GetMember(operatorAccountId)
|
||||||
if member.AccountId == memberID {
|
if err != nil {
|
||||||
guild.Members = append(guild.Members[:i], guild.Members[i+1:]...)
|
return errors.New("cannot dismiss the leader")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
if operatorMember.Level >= 2 {
|
||||||
|
return errors.New("no permission")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dismissMember, err := guild.GetMember(memberID)
|
||||||
|
if err != nil {
|
||||||
return errors.New("member not found in the guild")
|
return errors.New("member not found in the guild")
|
||||||
|
}
|
||||||
|
if dismissMember.Level <= 2 {
|
||||||
|
return errors.New("no permission")
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = guild.RemoveMember(memberID)
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PromoteMember 提升成员为干部
|
// PromoteMember 提升成员为干部
|
||||||
|
Loading…
x
Reference in New Issue
Block a user