This commit is contained in:
aozhiwei 2024-04-09 20:49:57 +08:00
parent 90dfba2737
commit e8a8a9fe1b
3 changed files with 78 additions and 3 deletions

View File

@ -99,7 +99,7 @@ type GuildMgr interface {
AsyncKickout(string, string, func(int32, string)) AsyncKickout(string, string, func(int32, string))
AsyncDisband(string, func(int32, string, []string)) AsyncDisband(string, func(int32, string, []string))
AsyncSetGuildJob(string, string, int32, func(int32, string)) AsyncSetGuildJob(string, string, int32, func(int32, string))
AsyncSearch(string, string, func(int32, 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))
} }

View File

@ -733,8 +733,39 @@ func (this *guildMgr) AsyncDisband(accountId string, cb func(int32, string, []st
}) })
} }
func (this *guildMgr) AsyncSearch(string, string, func(int32, string)) { func (this *guildMgr) AsyncSearch(sinceId int64, q string, cb func(int32, string, int64, []string)) {
f5.GetJsStyleDb().PageQuery(
constant.GAME_DB,
50,
0,
"SELECT guild_id FROM t_user WHERE 1=1",
[]string{},
f5.GetDbFilter().Comp(
f5.GetDbFilter().GT("idx", q5.ToString(sinceId)).And(),
f5.GetDbFilter().GT("deleted", q5.ToString(0)).And(),
f5.GetDbFilter().Like("guild_name", q5.ToString(q)).And(),
),
"",
func (err error, pg *f5.Pagination) {
var lastSinceId int64 = sinceId
if err != nil {
cb(500, "", lastSinceId, []string{})
}
guildIds := []string{}
for pg.Rows.Next() {
idx := q5.ToInt64(pg.Rows.GetByName("idx"))
guildId := pg.Rows.GetByName("guild_id")
if idx > lastSinceId {
lastSinceId = idx
} else {
panic(fmt.Sprintf("guild.AsyncSearch idx error:%s %s", idx, lastSinceId))
}
if this.GetGuildByGuildId(guildId) != nil {
q5.AppendSlice(&guildIds, guildId)
}
}
cb(0, "", lastSinceId, guildIds)
})
} }
func (this *guildMgr) AsyncGetGuildLogs(string, string, func(int32, string)) { func (this *guildMgr) AsyncGetGuildLogs(string, string, func(int32, string)) {

View File

@ -692,6 +692,50 @@ func (this *player) CMGuildMembersList(hdr *f5.MsgHdr, msg *cs.CMGuildMembersLis
} }
func (this *player) CMSearchGuilds(hdr *f5.MsgHdr, msg *cs.CMSearchGuilds) { func (this *player) CMSearchGuilds(hdr *f5.MsgHdr, msg *cs.CMSearchGuilds) {
rspMsg := new(cs.SMSearchGuilds)
q5.NewSlice(&rspMsg.Guilds, 0, 50)
GetGuildMgr().AsyncSearch(
msg.GetSinceId(),
msg.GetName(),
func (errCode int32, errMsg string, sinceId int64, guildIds []string) {
rspMsg.SinceId = proto.Int64(sinceId)
if errCode != 0 {
this.SendMsg(rspMsg.Err(1, "server internal error"))
return
}
if len(guildIds) <= 0 {
this.SendMsg(rspMsg)
return
}
i := 0
f5.NewAsyncTask(
func (task* f5.AsyncTask) {
doNextFunc := func() {
if i + 1 < len(guildIds) {
i++
task.Continue()
} else {
this.SendMsg(rspMsg)
}
}
guild := GetGuildMgr().GetGuildByGuildId(guildIds[i])
if guild == nil {
doNextFunc()
} else {
pbGuild := new(cs.MFGuild)
guild.AsyncFillMFGuild(
pbGuild,
func (errCode int32, errMsg string) {
if errCode != 0 {
this.SendMsg(rspMsg.Err(1, "server internal error"))
return
}
q5.AppendSlice(&rspMsg.Guilds, pbGuild)
doNextFunc()
})
}
})
})
} }
func (this *player) CMGuildLogs(hdr *f5.MsgHdr, msg *cs.CMGuildLogs) { func (this *player) CMGuildLogs(hdr *f5.MsgHdr, msg *cs.CMGuildLogs) {