优化随机公会
This commit is contained in:
parent
da7f8895a6
commit
f201b0ad26
@ -21,6 +21,8 @@ type GuildMgr struct {
|
||||
pendingReqs map[int64]map[string]bool // 公会ID -> 申请者账户ID -> bool
|
||||
Logs map[int64][]*GuildLog // 公会ID -> 公会日志
|
||||
loadedFlags int64
|
||||
guildIds []int64 // 公会ids
|
||||
//RandGuildIds []int64 // 随机公会ids
|
||||
}
|
||||
|
||||
func NewGuildMgr() *GuildMgr {
|
||||
@ -45,11 +47,12 @@ func (gm *GuildMgr) loadFromDB() {
|
||||
gm.loadGuildFromDB()
|
||||
// 加载公会成员
|
||||
gm.loadGuildMemberFromDB()
|
||||
//// 加载公会申请者列表
|
||||
// 加载公会申请者列表
|
||||
gm.loadPendingReqsFromDB()
|
||||
//// 加载公会日志
|
||||
// 加载公会日志
|
||||
gm.loadGuildLogsFromDB()
|
||||
|
||||
// 加载公会ids
|
||||
gm.loadGuildIds()
|
||||
//for gm.loadedFlags != 0 {
|
||||
// time.Sleep(time.Millisecond * 1000)
|
||||
//}
|
||||
@ -82,8 +85,8 @@ func (gm *GuildMgr) CreateGuild(name string, leaderId string) (int64, error) {
|
||||
|
||||
gm.createGuildDB(guild)
|
||||
gm.upsertGuildMember(guildId, &newMember)
|
||||
|
||||
gm.Guilds[guildId] = guild
|
||||
gm.addGuildIds(guildId)
|
||||
|
||||
return guildId, nil
|
||||
}
|
||||
@ -422,37 +425,35 @@ func (gm *GuildMgr) GetLogs(guildID int64) []*GuildLog {
|
||||
}
|
||||
|
||||
// SearchGuilds 根据关键字搜索公会
|
||||
func (gm *GuildMgr) SearchGuilds(keyword string) []Guild {
|
||||
var results []Guild
|
||||
func (gm *GuildMgr) SearchGuilds(keyword string) []*Guild {
|
||||
var results []*Guild
|
||||
for _, guild := range gm.Guilds {
|
||||
if containsSubstring(guild.Name, keyword) {
|
||||
results = append(results, *guild)
|
||||
results = append(results, guild)
|
||||
}
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
// RandomGuilds 随机10个公会
|
||||
func (gm *GuildMgr) RandomGuilds() []Guild {
|
||||
guildCount := RandomGuildCount
|
||||
func (gm *GuildMgr) RandomGuilds() []*Guild {
|
||||
count := len(gm.Guilds)
|
||||
if count <= guildCount {
|
||||
guildCount = count
|
||||
|
||||
var results []*Guild
|
||||
if count <= RandomGuildCount {
|
||||
for _, guildId := range gm.guildIds {
|
||||
results = append(results, gm.Guilds[guildId])
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
guildSlice := make([]*Guild, 0, count)
|
||||
for _, guild := range gm.Guilds {
|
||||
guildSlice = append(guildSlice, guild)
|
||||
for i := 0; i < RandomGuildCount; i++ {
|
||||
j := rand.Intn(len(gm.guildIds))
|
||||
gm.guildIds[i], gm.guildIds[j] = gm.guildIds[j], gm.guildIds[i]
|
||||
}
|
||||
|
||||
for i := 0; i < guildCount; i++ {
|
||||
j := rand.Intn(len(guildSlice))
|
||||
guildSlice[i], guildSlice[j] = guildSlice[j], guildSlice[i]
|
||||
}
|
||||
|
||||
var results []Guild
|
||||
for i := 0; i < guildCount; i++ {
|
||||
results = append(results, *guildSlice[i])
|
||||
for i := 0; i < RandomGuildCount; i++ {
|
||||
randGuildId := gm.guildIds[i]
|
||||
results = append(results, gm.Guilds[randGuildId])
|
||||
}
|
||||
return results
|
||||
}
|
||||
@ -514,6 +515,17 @@ func (gm *GuildMgr) GetGuildIdByAccountId(accountId string) int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (gm *GuildMgr) loadGuildIds() {
|
||||
gm.guildIds = make([]int64, 0, len(gm.Guilds))
|
||||
for guildId, _ := range gm.Guilds {
|
||||
gm.guildIds = append(gm.guildIds, guildId)
|
||||
}
|
||||
}
|
||||
|
||||
func (gm *GuildMgr) addGuildIds(guildId int64) {
|
||||
gm.guildIds = append(gm.guildIds, guildId)
|
||||
}
|
||||
|
||||
func containsSubstring(s, substr string) bool {
|
||||
return len(s) >= len(substr) && s[len(s)-len(substr):] == substr
|
||||
}
|
||||
|
@ -472,7 +472,7 @@ func (p *Player) CMSearchGuilds(hdr *f5.MsgHdr, msg *cs.CMSearchGuilds) {
|
||||
}
|
||||
|
||||
// FillGuild 填充公共列表
|
||||
func (p *Player) FillGuild(guilds []Guild) []*cs.MFGuild {
|
||||
func (p *Player) FillGuild(guilds []*Guild) []*cs.MFGuild {
|
||||
var resGuilds []*cs.MFGuild
|
||||
for _, g := range guilds {
|
||||
members := q5.ToInt32(len(g.Members))
|
||||
|
Loading…
x
Reference in New Issue
Block a user