Add 踢出成员

This commit is contained in:
殷勇 2023-08-23 11:07:42 +08:00
parent e5adb3e3d0
commit 5f4c6ffe63
3 changed files with 44 additions and 28 deletions

View File

@ -206,12 +206,19 @@ func (gm *GuildMgr) insertGuildMember(guildId int64, member *GuildMember) {
{"guild_id", q5.ToString(guildId)}, {"guild_id", q5.ToString(guildId)},
{"account_id", member.AccountId}, {"account_id", member.AccountId},
{"level", q5.ToString(member.Level)}, {"level", q5.ToString(member.Level)},
{"is_leave_guild", "0"},
} }
f5.GetJsStyleDb().Replace( f5.GetJsStyleDb().Replace(
FRIEND_DB, FRIEND_DB,
"t_guild_members", "t_guild_members",
fields, fields,
func(error, int64, int64) {}, func(err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
fmt.Printf("error:%v\n", err)
}
fmt.Printf("lastInsertId:%d\n", lastInsertId)
fmt.Printf("rowsAffected:%d\n", rowsAffected)
},
) )
} }
@ -231,6 +238,12 @@ func (gm *GuildMgr) updateGuildMember(g *Guild, fields [][]string, newWhere []st
"t_guild_members", "t_guild_members",
fields, fields,
where, where,
func(error, int64, int64) {}, func(err error, lastInsertId int64, rowsAffected int64) {
if err != nil {
fmt.Printf("error:%v\n", err)
}
fmt.Printf("lastInsertId:%d\n", lastInsertId)
fmt.Printf("rowsAffected:%d\n", rowsAffected)
},
) )
} }

View File

@ -87,7 +87,7 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error
return nil return nil
} }
// Approve 批准申请加入公会 // Approve 同意申请者加入公会
func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string) error { func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string) error {
guild, exists := gm.Guilds[guildId] guild, exists := gm.Guilds[guildId]
if !exists { if !exists {
@ -125,7 +125,7 @@ func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string)
return nil return nil
} }
// Reject 拒绝申请加入公会 // Reject 拒绝申请加入公会
func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error { func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error {
_, exists := gm.pendingReqs[guildId] _, exists := gm.pendingReqs[guildId]
if !exists { if !exists {
@ -140,7 +140,7 @@ func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error {
} }
// JoinGuild 可直接加入公会 // JoinGuild 可直接加入公会
//func (gm *GuildMgr) JoinGuild(guildId int64, memberID string) error { //func (gm *GuildMgr) JoinGuild(guildId int64, accountId string) error {
// guild, exists := gm.Guilds[guildId] // guild, exists := gm.Guilds[guildId]
// if !exists { // if !exists {
// return fmt.Errorf("guild not found") // return fmt.Errorf("guild not found")
@ -150,28 +150,28 @@ func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error {
// return fmt.Errorf("guild is full") // return fmt.Errorf("guild is full")
// } // }
// //
// newMember := GuildMember{AccountId: memberID, Level: 3} // newMember := GuildMember{AccountId: accountId, Level: 3}
// guild.Members = append(guild.Members, newMember) // guild.Members = append(guild.Members, newMember)
// return nil // return nil
//} //}
// LeaveGuild 离开公会 // LeaveGuild 离开公会
func (gm *GuildMgr) LeaveGuild(guildId int64, memberID string) error { func (gm *GuildMgr) LeaveGuild(guildId int64, accountId string) error {
guild, exists := gm.Guilds[guildId] guild, exists := gm.Guilds[guildId]
if !exists { if !exists {
return fmt.Errorf("guild not found") return fmt.Errorf("guild not found")
} }
if guild.LeaderId == memberID { if guild.LeaderId == accountId {
return fmt.Errorf("leader not leave guild") return fmt.Errorf("leader not leave guild")
} }
member, err := guild.GetMember(memberID) member, err := guild.GetMember(accountId)
if err != nil { if err != nil {
return fmt.Errorf("member not found in the guild") return fmt.Errorf("member not found in the guild")
} }
_ = guild.RemoveMember(memberID) _ = guild.RemoveMember(accountId)
fields := [][]string{{"is_leave_guild", q5.ToString(1)}} fields := [][]string{{"is_leave_guild", q5.ToString(1)}}
where := []string{"account_id", q5.ToString(member.AccountId)} where := []string{"account_id", q5.ToString(member.AccountId)}
gm.updateGuildMember(guild, fields, where) gm.updateGuildMember(guild, fields, where)
@ -180,25 +180,28 @@ func (gm *GuildMgr) LeaveGuild(guildId int64, memberID string) error {
} }
// DismissMember 开除成员 踢出 // DismissMember 开除成员 踢出
func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, memberID string) error { func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, accountId string) error {
guild, exists := gm.Guilds[guildId] guild, exists := gm.Guilds[guildId]
if !exists { if !exists {
return fmt.Errorf("guild not found") return fmt.Errorf("guild not found")
} }
if memberID == guild.LeaderId { if accountId == guild.LeaderId {
return fmt.Errorf("cannot dismiss the leader") return fmt.Errorf("cannot dismiss the leader")
} }
operatorMember, err := guild.GetMember(operatorAccountId) // 公会干部及以上仅可操作
operatorPermLevel := 2
err := gm.checkOperatorPerm(guild, operatorAccountId, operatorPermLevel)
if err != nil { if err != nil {
return fmt.Errorf("cannot dismiss the leader") return err
}
if operatorMember.Level >= 2 {
return fmt.Errorf("no permission")
} }
dismissMember, err := guild.GetMember(memberID) if operatorAccountId == accountId {
return fmt.Errorf("member not dismiss")
}
dismissMember, err := guild.GetMember(accountId)
if err != nil { if err != nil {
return fmt.Errorf("member not found in the guild") return fmt.Errorf("member not found in the guild")
} }
@ -206,7 +209,7 @@ func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, memberID str
return fmt.Errorf("no permission") return fmt.Errorf("no permission")
} }
_ = guild.RemoveMember(memberID) _ = guild.RemoveMember(accountId)
fields := [][]string{{"is_leave_guild", q5.ToString(1)}} fields := [][]string{{"is_leave_guild", q5.ToString(1)}}
where := []string{"account_id", q5.ToString(dismissMember.AccountId)} where := []string{"account_id", q5.ToString(dismissMember.AccountId)}
gm.updateGuildMember(guild, fields, where) gm.updateGuildMember(guild, fields, where)
@ -215,17 +218,17 @@ func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, memberID str
} }
// PromoteMember 提升成员为干部 // PromoteMember 提升成员为干部
func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, memberID string) error { func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, accountId string) error {
guild, exists := gm.Guilds[guildId] guild, exists := gm.Guilds[guildId]
if !exists { if !exists {
return fmt.Errorf("guild not found") return fmt.Errorf("guild not found")
} }
if memberID == guild.LeaderId { if accountId == guild.LeaderId {
return fmt.Errorf("cannot promote the leader") return fmt.Errorf("cannot promote the leader")
} }
member, err := guild.GetMember(memberID) member, err := guild.GetMember(accountId)
if err != nil { if err != nil {
return fmt.Errorf("member not found in the guild") return fmt.Errorf("member not found in the guild")
} }
@ -240,17 +243,17 @@ func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, memberID str
} }
// DemoteMember 解除成员干部身份 // DemoteMember 解除成员干部身份
func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, memberID string) error { func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, accountId string) error {
guild, exists := gm.Guilds[guildId] guild, exists := gm.Guilds[guildId]
if !exists { if !exists {
return fmt.Errorf("guild not found") return fmt.Errorf("guild not found")
} }
if memberID == guild.LeaderId { if accountId == guild.LeaderId {
return fmt.Errorf("cannot demote the leader") return fmt.Errorf("cannot demote the leader")
} }
member, err := guild.GetMember(memberID) member, err := guild.GetMember(accountId)
if err != nil { if err != nil {
return fmt.Errorf("member not found in the guild") return fmt.Errorf("member not found in the guild")
} }

View File

@ -206,7 +206,7 @@ func (p *Player) CMCreateGuild(hdr *f5.MsgHdr, msg *cs.CMCreateGuild) {
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
} }
// CMApplyToGuild 申请加入公会 // CMApplyToGuild 同意申请加入公会
func (p *Player) CMApplyToGuild(hdr *f5.MsgHdr, msg *cs.CMApplyToGuild) { func (p *Player) CMApplyToGuild(hdr *f5.MsgHdr, msg *cs.CMApplyToGuild) {
rspMsg := new(cs.SMApplyToGuild) rspMsg := new(cs.SMApplyToGuild)
guildId := msg.GetGuildId() guildId := msg.GetGuildId()
@ -222,7 +222,7 @@ func (p *Player) CMApplyToGuild(hdr *f5.MsgHdr, msg *cs.CMApplyToGuild) {
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
} }
// CMApprove 批准申请加入公会 // CMApprove 同意申请者加入公会
func (p *Player) CMApprove(hdr *f5.MsgHdr, msg *cs.CMApprove) { func (p *Player) CMApprove(hdr *f5.MsgHdr, msg *cs.CMApprove) {
rspMsg := new(cs.SMApprove) rspMsg := new(cs.SMApprove)
guildId := msg.GetGuildId() guildId := msg.GetGuildId()
@ -241,7 +241,7 @@ func (p *Player) CMApprove(hdr *f5.MsgHdr, msg *cs.CMApprove) {
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
} }
// CMReject 拒绝申请加入公会 // CMReject 拒绝申请加入公会
func (p *Player) CMReject(hdr *f5.MsgHdr, msg *cs.CMReject) { func (p *Player) CMReject(hdr *f5.MsgHdr, msg *cs.CMReject) {
rspMsg := new(cs.SMReject) rspMsg := new(cs.SMReject)
guildId := msg.GetGuildId() guildId := msg.GetGuildId()