| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- package svc
 
- import (
 
- 	"encoding/json"
 
- 	"golib/features/mo"
 
- 	"golib/infra/ii"
 
- 	"golib/log"
 
- )
 
- var (
 
- 	svc *Service
 
- )
 
- func InitDefault(client *mo.Client, items ii.Items, perms ii.Permission, log log.Printer) {
 
- 	svc = new(Service)
 
- 	svc.Client = client
 
- 	svc.Items = items
 
- 	svc.Perms = perms
 
- 	svc.Log = log
 
- 	svc.cache = NewCache(items)
 
- 	svc.refreshCh = make(chan *ii.ItemInfo, 1024)
 
- 	go svc.handleRefresh()
 
- }
 
- func Items() ii.Items {
 
- 	return svc.GetItems()
 
- }
 
- func HasItem(name ii.Name) (*ii.ItemInfo, bool) {
 
- 	info, ok := svc.HasItem(name)
 
- 	if !ok {
 
- 		return nil, false
 
- 	}
 
- 	b, err := json.Marshal(info)
 
- 	if err != nil {
 
- 		panic(err)
 
- 	}
 
- 	var itemInfo ii.ItemInfo
 
- 	if err = json.Unmarshal(b, &itemInfo); err != nil {
 
- 		panic(err)
 
- 	}
 
- 	return &itemInfo, true
 
- }
 
- func AddItemCache(name ii.Name, user ii.User) {
 
- 	svc.cache.AddItem(name)
 
- 	service := Svc(user)
 
- 	rows, err := service.Find(name, mo.D{})
 
- 	if err != nil {
 
- 		panic(err)
 
- 	}
 
- 	svc.cache.SetData(name, rows)
 
- }
 
- func Svc(u ii.User) *Service {
 
- 	s := svc
 
- 	s.User = u
 
- 	return s
 
- }
 
 
  |