1
This commit is contained in:
parent
1c0eff8711
commit
56047ca430
2
server/imserver_new/cache/cachemgr.go
vendored
2
server/imserver_new/cache/cachemgr.go
vendored
@ -28,7 +28,7 @@ func (this *cacheMgr) GetUserProfile(accountId string) common.UserProfile {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *cacheMgr) PreLoad(accountIds []string) {
|
func (this *cacheMgr) PreLoadUsers(accountIds []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *cacheMgr) AsyncSearch(sinceId int64, q string,
|
func (this *cacheMgr) AsyncSearch(sinceId int64, q string,
|
||||||
|
@ -96,7 +96,7 @@ type GuildMgr interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CacheMgr interface {
|
type CacheMgr interface {
|
||||||
PreLoadUser([]string)
|
PreLoadUsers([]string)
|
||||||
GetUserProfile(string) UserProfile
|
GetUserProfile(string) UserProfile
|
||||||
AsyncGetUsers([]string, func(int32, string))
|
AsyncGetUsers([]string, func(int32, string))
|
||||||
AsyncSearch(int64, string, func(int32, string, int64, []string))
|
AsyncSearch(int64, string, func(int32, string, int64, []string))
|
||||||
|
@ -12,6 +12,10 @@ var initOrders = []int32 {
|
|||||||
constant.HANDLER_MGR_MODULE_IDX,
|
constant.HANDLER_MGR_MODULE_IDX,
|
||||||
constant.PLAYER_MGR_MODULE_IDX,
|
constant.PLAYER_MGR_MODULE_IDX,
|
||||||
constant.WSPLISTENER_MODULE_IDX,
|
constant.WSPLISTENER_MODULE_IDX,
|
||||||
|
constant.FRIEND_MGR_MODULE_IDX,
|
||||||
|
constant.GUILD_MGR_MODULE_IDX,
|
||||||
|
constant.CACHE_MGR_MODULE_IDX,
|
||||||
|
constant.CHAT_MGR_MODULE_IDX,
|
||||||
}
|
}
|
||||||
|
|
||||||
var app common.App
|
var app common.App
|
||||||
|
@ -1,164 +1,8 @@
|
|||||||
package guild
|
package guild
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
|
||||||
"main/constant"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type GuildMember struct {
|
type guild struct {
|
||||||
AccountId string
|
|
||||||
Level int32 // 1: 会长, 20: 副会长, 30: 精英, 40 成员
|
|
||||||
}
|
|
||||||
|
|
||||||
type Guild struct {
|
|
||||||
AutoId int64 // 公会自增id
|
|
||||||
GuildId int64 // 公会id
|
|
||||||
Name string // 公会名称
|
|
||||||
LeaderId string // 公会leader
|
|
||||||
Avatar int32 // 头像
|
|
||||||
Notice string // 公告
|
|
||||||
JoinCond int32 // 公会加入条件
|
|
||||||
JoinCondValue int32 // 公会加入条件值
|
|
||||||
TotalStars int32 // 公会统计信息, 总星星数量 从api获取
|
|
||||||
TotalKills int32 // 公会统计信息, 单局总击杀数 从api获取
|
|
||||||
ChickenDinners int32 // 公会统计信息, 单局第一名数 从api获取
|
|
||||||
MaxMembers int32 // 公会最大成员数 default 30
|
|
||||||
Members map[string]*GuildMember // accountId -> GuildMember
|
|
||||||
PendingReqs map[string]int32 // pendingAccountId -> status 0,1,2,3 pending, accept, reject, leave
|
|
||||||
}
|
|
||||||
|
|
||||||
// GuildLog 公会日志
|
|
||||||
type GuildLog struct {
|
|
||||||
GuildId int64
|
|
||||||
AccountId string
|
|
||||||
LogType int32
|
|
||||||
Content string
|
|
||||||
}
|
|
||||||
|
|
||||||
// PendingReq 待审核请求
|
|
||||||
type PendingReq struct {
|
|
||||||
AccountId string
|
|
||||||
Status int32 // 0 pending, 1 ok, 2 reject, 3 disband
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) GetGuildId() int64 {
|
|
||||||
return this.GuildId
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) GetMembersCount() int {
|
|
||||||
return len(this.Members)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) GetMembersViceLeaderCount() int {
|
|
||||||
count := 0
|
|
||||||
for _, member := range this.Members {
|
|
||||||
if member.Level == constant.GuildMemberLevelViceLeader {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsMember 是否是公会成员
|
|
||||||
func (this *Guild) IsMember(accountId string) bool {
|
|
||||||
_, exists := this.Members[accountId]
|
|
||||||
return exists
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsFull 成员是否已满
|
|
||||||
func (this *Guild) IsFull() bool {
|
|
||||||
return int32(len(this.Members)) >= this.MaxMembers
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddMember 添加成员
|
|
||||||
func (this *Guild) AddMember(member *GuildMember) {
|
|
||||||
accountId := member.AccountId
|
|
||||||
this.Members[accountId] = member
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveMember 移除成员
|
|
||||||
func (this *Guild) RemoveMember(accountId string) {
|
|
||||||
delete(this.Members, accountId)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMember 获取成员
|
|
||||||
func (this *Guild) GetMember(accountId string) *GuildMember {
|
|
||||||
if member, exists := this.Members[accountId]; exists {
|
|
||||||
return member
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMemberLevel 获取成员职位
|
|
||||||
func (this *Guild) GetMemberLevel(accountId string) int32 {
|
|
||||||
if member, exists := this.Members[accountId]; exists {
|
|
||||||
return member.Level
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) SetNotice(notice *string) {
|
|
||||||
this.Notice = *notice
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) GetNotice() string {
|
|
||||||
return this.Notice
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddPendingReq 添加等待审核成员
|
|
||||||
func (this *Guild) AddPendingReq(p *PendingReq) {
|
|
||||||
this.PendingReqs[p.AccountId] = p.Status
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) GetPendingReqStatus(accountId string) int32 {
|
|
||||||
if pendingReqStatus, exists := this.PendingReqs[accountId]; exists {
|
|
||||||
return pendingReqStatus
|
|
||||||
}
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemovePendingReq 移除等待审核成员
|
|
||||||
func (this *Guild) RemovePendingReq(accountId string) {
|
|
||||||
delete(this.PendingReqs, accountId)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gm *GuildMember) GetAccountId() string {
|
|
||||||
return gm.AccountId
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) IsInReq(accountId string) bool {
|
|
||||||
return this.PendingReqs[accountId] == constant.PendingReqIsJoinGuildStatusJoined
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *Guild) NewLeader(oldLeaderId string) *GuildMember {
|
|
||||||
if len(this.Members) <= 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 找到级别最高的成员
|
|
||||||
highestLevel := int32(constant.GuildMemberLevelDefault)
|
|
||||||
highestLevelMembers := make([]*GuildMember, 0)
|
|
||||||
for accountId, member := range this.Members {
|
|
||||||
if accountId == oldLeaderId {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if member.Level < highestLevel {
|
|
||||||
// 发现更高级别的成员,重置列表
|
|
||||||
highestLevel = member.Level
|
|
||||||
highestLevelMembers = []*GuildMember{member}
|
|
||||||
} else if member.Level == highestLevel {
|
|
||||||
// 发现与当前最高级别相同的成员,添加到列表中
|
|
||||||
highestLevelMembers = append(highestLevelMembers, member)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(highestLevelMembers) <= 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
newLeaderIndex := rand.Intn(len(highestLevelMembers))
|
|
||||||
newLeader := highestLevelMembers[newLeaderIndex]
|
|
||||||
newLeader.Level = constant.GuildMemberLevelLeader
|
|
||||||
return newLeader
|
|
||||||
}
|
}
|
||||||
|
@ -12,10 +12,11 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type guildMgr struct {
|
type guildMgr struct {
|
||||||
|
/*
|
||||||
guilds map[int64]*Guild // 公会ID -> 公会
|
guilds map[int64]*Guild // 公会ID -> 公会
|
||||||
guildLogs map[int64][]*GuildLog // 公会ID -> []公会日志列表
|
guildLogs map[int64][]*GuildLog // 公会ID -> []公会日志列表
|
||||||
userGuilds map[string]int64 // accountId -> 公会ID
|
userGuilds map[string]int64 // accountId -> 公会ID
|
||||||
loadedFlags int64
|
loadedFlags int64*/
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *guildMgr) Init() {
|
func (this *guildMgr) Init() {
|
||||||
@ -32,13 +33,13 @@ func (this *guildMgr) GetGuildByAccountId(string) common.Guild {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *guildMgr) GetRecommendGuilds(string) []Guild {
|
func (this *guildMgr) GetRecommendGuilds(string) []common.Guild {
|
||||||
guilds := []Guild{}
|
guilds := []common.Guild{}
|
||||||
return guilds
|
return guilds
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *guildMgr) GetGuildRank() []Guild {
|
func (this *guildMgr) GetGuildRank() []common.Guild {
|
||||||
guilds := []Guild{}
|
guilds := []common.Guild{}
|
||||||
return guilds
|
return guilds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user