diff --git a/server/mailserver/mail/mailmgr.go b/server/mailserver/mail/mailmgr.go index 3dbf4763..47343e45 100644 --- a/server/mailserver/mail/mailmgr.go +++ b/server/mailserver/mail/mailmgr.go @@ -10,25 +10,20 @@ import ( "github.com/gin-gonic/gin" ) -type groupMail struct { - lock sync.Mutex - mailHash map[int64]*mail -} - type userGroup struct { groupId int64 - userHash map[string]int64 + userHash sync.Map } type mailMgr struct { - idHash sync.Map + idHash sync.Map wholeMails sync.Map - groupMails [1024]*groupMail - groupHash map[int64]*userGroup + groupMails sync.Map + personalMails sync.Map + groupHash sync.Map } func (this *mailMgr) Init() { - this.groupHash = make(map[int64]*userGroup) this.loadMails() this.loadGroups() this.loadGroupMembers() @@ -68,8 +63,7 @@ func (this *mailMgr) loadGroups() { } p := new(userGroup) p.groupId = groupId - p.userHash = make(map[string]int64) - this.groupHash[p.groupId] = p + this.addGroup(p) }, func (err error) { panic(fmt.Sprintf("mailMgr.loadGroups dberror:%s", err)) @@ -89,7 +83,7 @@ func (this *mailMgr) loadGroupMembers() { memberId := ds.GetByName("member_id") p := this.getGroup(groupId) if p != nil { - p.userHash[memberId] = q5.ToInt64(ds.GetByName("idx")) + p.userHash.Store(memberId, q5.ToInt64(ds.GetByName("idx"))) } }, func (err error) { @@ -131,9 +125,13 @@ func (this *mailMgr) addMail(m *mail) { } } +func (this *mailMgr) addGroup(g *userGroup) { + this.groupHash.Store(g.groupId, g) +} + func (this *mailMgr) getGroup(groupId int64) *userGroup { - if p, ok := this.groupHash[groupId]; ok { - return p + if p, ok := this.groupHash.Load(groupId); ok { + return p.(*userGroup) } else { return nil }