This commit is contained in:
aozhiwei 2023-09-14 16:29:51 +08:00
commit 299ab00b5c
5 changed files with 67 additions and 21 deletions

View File

@ -105,6 +105,7 @@ const (
ERR_CODE_SEARCH_USERS_DB_FAIL = 11013
ERR_CODE_SEARCH_USER_DB_RESULT_IS_NULL = 11014
ERR_CODE_SEARCH_USER_DB_FAIL = 11015
ERR_CODE_SEARCH_NO_RESULT = 11016
// Guild
ERR_CODE_GUILD_NO_EXISTS = 10001

View File

@ -141,7 +141,7 @@ func (fm *FriendsMgr) findUsersByUsername(username string, sinceId int64, cb fun
return
}
lastId := sinceId
profiles := make([]*PlayerProfile, 0, 20)
profiles := make([]*PlayerProfile, 0, MaxSearchResults)
for rows.Next() {
autoId := q5.ToInt64(*rows.GetByIndex(0))
if autoId > lastId {

View File

@ -393,3 +393,38 @@ func (gm *GuildMgr) insertGuildLog(log *GuildLog) {
f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected)
})
}
func (gm *GuildMgr) findGuildIdsByName(sinceId int64, name string, cb func(err error, lastId int64, guildIds []int64)) {
fields := []string{"idx", "guild_id"}
var where [][]string
nameLike := fmt.Sprintf("%%%s%%", name)
likeWhere := [][]string{
{"name", nameLike},
}
f5.GetJsStyleDb().SelectLike(
FRIEND_DB,
"t_guild",
fields,
where,
likeWhere,
sinceId,
MaxSearchResults,
func(err error, rows *f5.DataSet) {
if err != nil {
cb(err, 0, nil)
return
}
lastId := sinceId
ids := make([]int64, 0, MaxSearchResults)
for rows.Next() {
autoId := q5.ToInt64(*rows.GetByIndex(0))
if lastId < autoId {
lastId = autoId
}
guildId := q5.ToInt64(*rows.GetByIndex(1))
ids = append(ids, guildId)
}
cb(nil, lastId, ids)
},
)
}

View File

@ -884,15 +884,18 @@ func (gm *GuildMgr) GetLogs(guildID int64) []*GuildLog {
return gm.guildLogs[guildID]
}
// SearchGuilds 根据关键字搜索公会
func (gm *GuildMgr) SearchGuilds(sinceId int64, name string) []*Guild {
var results []*Guild
for _, guild := range gm.guilds {
if containsSubstring(guild.Name, name) {
results = append(results, guild)
// SearchGuild 根据关键字搜索公会
func (gm *GuildMgr) SearchGuild(sinceId int64, name string, cb func(errCode int32, errMsg string, lastId int64, guildIds []int64)) {
gm.findGuildIdsByName(sinceId, name, func(err error, lastId int64, guildIds []int64) {
if err != nil {
cb(ERR_CODE_SEARCH_USERS_DB_FAIL, "SearchUsers username db error", sinceId, guildIds)
return
}
}
return results
if len(guildIds) <= 0 {
cb(ERR_CODE_SEARCH_NO_RESULT, "SearchGuilds result is empty", lastId, guildIds)
}
cb(0, "OK", lastId, guildIds)
})
}
// RandomGuilds 随机10个公会
@ -1001,7 +1004,3 @@ func (gm *GuildMgr) GetGuildLogs(guildId int64) []*GuildLog {
}
return nil
}
func containsSubstring(s, substr string) bool {
return len(s) >= len(substr) && s[len(s)-len(substr):] == substr
}

View File

@ -343,7 +343,7 @@ func (p *Player) CMGuildInfo(hdr *f5.MsgHdr, msg *cs.CMGuildInfo) {
guild := guildMgr.GetGuildByAccountId(p.accountId)
if guild == nil {
rspMsg.Guild = nil
rspMsg.RandomGuilds = p.FillGuilds(guildMgr.RandomGuilds())
rspMsg.RandomGuilds = p.FillMFGuilds(guildMgr.RandomGuilds())
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
return
}
@ -628,7 +628,6 @@ func (p *Player) CMGuildMembersList(hdr *f5.MsgHdr, msg *cs.CMGuildMembersList)
}
}
}
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
}
@ -636,10 +635,22 @@ func (p *Player) CMGuildMembersList(hdr *f5.MsgHdr, msg *cs.CMGuildMembersList)
func (p *Player) CMSearchGuilds(hdr *f5.MsgHdr, msg *cs.CMSearchGuilds) {
sinceId := msg.GetSinceId()
name := msg.GetName()
rspMsg := new(cs.SMSearchGuilds)
rspMsg.Guilds = p.FillGuilds(guildMgr.SearchGuilds(sinceId, name))
f5.GetSysLog().Info("CMSearchGuilds name[%s], result:%d \n", msg.GetName(), len(rspMsg.Guilds))
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
guildMgr.SearchGuild(sinceId, name, func(errCode int32, errMsg string, lastId int64, guildIds []int64) {
rspMsg := new(cs.SMSearchGuilds)
if errCode != 0 {
rspMsg.Errcode = &errCode
rspMsg.Errmsg = &errMsg
} else {
for _, guildId := range guildIds {
guild := guildMgr.GetGuild(guildId)
if guild != nil {
rspMsg.Guilds = append(rspMsg.Guilds, p.FillMFGuild(guild))
}
}
}
f5.GetSysLog().Info("CMSearchGuilds since:%, name[%s], result:%d \n", sinceId, msg.GetName(), len(rspMsg.Guilds))
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
})
}
// CMGuildLogs 请求公会日志
@ -710,8 +721,8 @@ func (p *Player) FillMFGuild(guild *Guild) *cs.MFGuild {
return resGuild
}
// FillGuilds 填充公会列表
func (p *Player) FillGuilds(guilds []*Guild) []*cs.MFGuild {
// FillMFGuilds 填充公会列表
func (p *Player) FillMFGuilds(guilds []*Guild) []*cs.MFGuild {
var resGuilds []*cs.MFGuild
for _, g := range guilds {
guild := p.FillMFGuild(g)