This commit is contained in:
aozhiwei 2024-04-12 13:08:28 +08:00
parent e6a40c4f9e
commit cc7b58078d
3 changed files with 45 additions and 10 deletions

View File

@ -86,7 +86,7 @@ type GuildMgr interface {
AsyncCreateGuild(string, string, int32, string, func(int32, string, string)) AsyncCreateGuild(string, string, int32, string, func(int32, string, string))
AsyncGetApplyList(int64, string, func(int32, string, int64, []string)) AsyncGetApplyList(int64, string, func(int32, string, int64, []string))
AsyncApplyJoin(string, string, func(int32, string)) AsyncApplyJoin(string, string, func(int32, string))
AsyncAcceptApply(string, string, func(int32, string)) AsyncAcceptApply(string, string, func(int32, string, string, string))
AsyncRejectApply(string, string, func(int32, string)) AsyncRejectApply(string, string, func(int32, string))
AsyncGetGuildRank(int32, func(int32, string, []string)) AsyncGetGuildRank(int32, func(int32, string, []string))
AsyncGetRecommendGuild(int32, func(int32, string, []string)) AsyncGetRecommendGuild(int32, func(int32, string, []string))
@ -98,6 +98,8 @@ type GuildMgr interface {
AsyncSearch(int64, string, func(int32, string, int64, []string)) AsyncSearch(int64, string, func(int32, string, int64, []string))
AsyncGetGuildLogs(string, string, func(int32, string)) AsyncGetGuildLogs(string, string, func(int32, string))
AsyncUpdateGuild(string, map[int32]string, func(int32, string)) AsyncUpdateGuild(string, map[int32]string, func(int32, string))
NotifyGuildMsg(string, proto.Message)
} }
type CacheMgr interface { type CacheMgr interface {

View File

@ -10,6 +10,7 @@ import (
"mt" "mt"
"strings" "strings"
. "main/global" . "main/global"
"github.com/golang/protobuf/proto"
) )
type guildMgr struct { type guildMgr struct {
@ -339,20 +340,21 @@ func (this *guildMgr) AsyncApplyJoin(accountId string, guildId string, cb func(i
} }
func (this *guildMgr) asyncAcceptApplyTask(task *f5.LockAsyncTask, guild *guild, func (this *guildMgr) asyncAcceptApplyTask(task *f5.LockAsyncTask, guild *guild,
accountId string, targetId string, cb func(int32, string)) { accountId string, targetId string,
cb func(int32, string, string, string)) {
if !guild.isOwner(accountId) { if !guild.isOwner(accountId) {
task.SetFail() task.SetFail()
cb(1, "") cb(1, "", "", "")
return return
} }
if accountId == targetId { if accountId == targetId {
task.SetFail() task.SetFail()
cb(1, "") cb(1, "", "", "")
return return
} }
if this.internalGetMemberByAccountId(targetId) != nil { if this.internalGetMemberByAccountId(targetId) != nil {
task.SetFail() task.SetFail()
cb(1, "") cb(1, "", "", "")
return return
} }
nowTime := f5.GetApp().GetNowSeconds() nowTime := f5.GetApp().GetNowSeconds()
@ -360,7 +362,7 @@ func (this *guildMgr) asyncAcceptApplyTask(task *f5.LockAsyncTask, guild *guild,
func (err error, lastInsertId int64, rowsAffected int64) { func (err error, lastInsertId int64, rowsAffected int64) {
if err != nil { if err != nil {
task.SetFail() task.SetFail()
cb(500, "server internal error") cb(500, "server internal error", "", "")
return return
} }
m := newMember() m := newMember()
@ -370,16 +372,17 @@ func (this *guildMgr) asyncAcceptApplyTask(task *f5.LockAsyncTask, guild *guild,
model.GuildApply.SetStatus(guild.guildId, targetId, constant.GUILD_APPLY_STATUS_ACCEPT, model.GuildApply.SetStatus(guild.guildId, targetId, constant.GUILD_APPLY_STATUS_ACCEPT,
func (err error, lastInsertId int64, rowsAffected int64) { func (err error, lastInsertId int64, rowsAffected int64) {
task.SetSucc() task.SetSucc()
cb(0, "") cb(0, "", guild.guildId, guild.guildName)
return return
}) })
}) })
} }
func (this *guildMgr) AsyncAcceptApply(accountId string, targetId string, cb func(int32, string)) { func (this *guildMgr) AsyncAcceptApply(accountId string, targetId string,
cb func(int32, string, string, string)) {
guild := this.internalGetGuildByAccountId(accountId) guild := this.internalGetGuildByAccountId(accountId)
if guild == nil { if guild == nil {
cb(0, "") cb(0, "", guild.guildId, guild.guildName)
return; return;
} }
f5.NewLockAsyncTask([][]string{ f5.NewLockAsyncTask([][]string{
@ -711,6 +714,18 @@ func (this *guildMgr) AsyncUpdateGuild(accountId string, kv map[int32]string, cb
}) })
} }
func (this *guildMgr) NotifyGuildMsg(guildId string, msg proto.Message) {
g := this.internalGetGuildByGuildId(guildId)
g.traverseMembers(
func (m *member) bool {
hum := GetPlayerMgr().GetPlayerByAccountId(m.memberId)
if hum != nil {
hum.SendMsg(msg)
}
return true
})
}
func (this *guildMgr) AsyncGetGuildRank(num int32, cb func(int32, string, []string)) { func (this *guildMgr) AsyncGetGuildRank(num int32, cb func(int32, string, []string)) {
guildIds := []string{} guildIds := []string{}
for _, m := range(this.guildRankList) { for _, m := range(this.guildRankList) {

View File

@ -515,12 +515,30 @@ func (this *player) CMApprove(hdr *f5.MsgHdr, msg *cs.CMApprove) {
GetGuildMgr().AsyncAcceptApply( GetGuildMgr().AsyncAcceptApply(
this.GetAccountId(), this.GetAccountId(),
msg.GetApplicantAccountId(), msg.GetApplicantAccountId(),
func (errCode int32, errMsg string) { func (errCode int32, errMsg string, guildId string, guildName string) {
if errCode != 0 { if errCode != 0 {
this.SendMsg(rspMsg.Err(errCode, errMsg)) this.SendMsg(rspMsg.Err(errCode, errMsg))
return return
} }
this.SendMsg(rspMsg) this.SendMsg(rspMsg)
{
pbGuilds := []*cs.MFGuildMember{}
GetCacheMgr().AsyncGetUsersAndFillMFGuildMember(
[]string{
msg.GetApplicantAccountId(),
},
&pbGuilds,
func (errCode int32, errMsg string) {
if errCode == 0 && len(pbGuilds) > 0 {
notifyMsg := new(cs.SMApproveJoinGuildNotify)
notifyMsg.GuildId = proto.Int64(q5.ToInt64(guildId))
notifyMsg.Name = proto.String(guildName)
notifyMsg.AccountId = proto.String(pbGuilds[0].GetAccountId())
notifyMsg.Username = proto.String(pbGuilds[0].GetUsername())
GetGuildMgr().NotifyGuildMsg(guildId, notifyMsg)
}
})
}
}) })
} }