123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package service
- import (
- "context"
- "time"
- "go-common/app/admin/main/manager/conf"
- "go-common/app/admin/main/manager/dao"
- "go-common/app/admin/main/manager/model"
- )
- // Service biz service def.
- type Service struct {
- c *conf.Config
- dao *dao.Dao
- // rbac may not change frequent, can update every few seconds. only assignment must get from db.
- points map[int64]*model.AuthItem
- pointList []*model.AuthItem
- groupAuth map[int64][]int64
- orgAuth map[int64]*model.AuthOrg // group + role info
- roleAuth map[int64][]int64
- admins map[int64]bool
- userNames map[int64]string // users' name
- userNicknames map[int64]string // user's nickname
- userDeps map[int64]string // users' department
- userIds map[string]int64 // users' ids
- }
- // New new a Service and return.
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- c: c,
- dao: dao.New(c),
- }
- s.syncRbac()
- s.loadUnames()
- go s.syncRbacproc()
- go s.loadUnamesproc()
- return s
- }
- func (s *Service) syncRbacproc() {
- for {
- time.Sleep(time.Second * 10)
- s.syncRbac()
- }
- }
- func (s *Service) syncRbac() {
- if points, mpoints, err := s.ptrs(); err != nil {
- return
- } else if len(mpoints) > 0 {
- s.pointList = points
- s.points = mpoints
- }
- if admins, err := s.adms(); err != nil {
- return
- } else if len(admins) > 0 {
- s.admins = admins
- }
- if ra, err := s.roleAuths(); err != nil {
- return
- } else if len(ra) > 0 {
- s.roleAuth = ra
- }
- if ga, err := s.groupAuths(); err != nil {
- return
- } else if len(ga) > 0 {
- s.groupAuth = ga
- }
- if oa, err := s.orgAuths(); err != nil {
- return
- } else if len(oa) > 0 {
- s.orgAuth = oa
- }
- }
- // Ping check dao health.
- func (s *Service) Ping(c context.Context) (err error) {
- return s.dao.Ping(c)
- }
- // Wait wait all closed.
- func (s *Service) Wait() {
- }
- // Close close all dao.
- func (s *Service) Close() {
- s.dao.Close()
- }
|