token.go 932 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * @desc:后台token处理
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2022/3/8 17:10
  6. */
  7. package service
  8. import (
  9. "context"
  10. "github.com/gogf/gf/v2/frame/g"
  11. "github.com/tiger1103/gfast/v3/internal/app/common/model"
  12. commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
  13. "github.com/tiger1103/gfast/v3/library/liberr"
  14. "sync"
  15. )
  16. type gft struct {
  17. options *model.TokenOptions
  18. gT commonService.IGfToken
  19. lock *sync.Mutex
  20. }
  21. var gftService = &gft{
  22. options: nil,
  23. gT: nil,
  24. lock: &sync.Mutex{},
  25. }
  26. func GfToken(ctx context.Context) commonService.IGfToken {
  27. if gftService.gT == nil {
  28. gftService.lock.Lock()
  29. defer gftService.lock.Unlock()
  30. if gftService.gT == nil {
  31. err := g.Cfg().MustGet(ctx, "gfToken").Struct(&gftService.options)
  32. liberr.ErrIsNil(ctx, err)
  33. gftService.gT = commonService.GfToken(gftService.options)
  34. }
  35. }
  36. return gftService.gT
  37. }