token.go 956 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * @desc:后台token处理
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2022/3/8 17:10
  6. */
  7. package service
  8. import (
  9. "github.com/gogf/gf/v2/frame/g"
  10. "github.com/gogf/gf/v2/os/gctx"
  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() commonService.IGfToken {
  27. if gftService.gT == nil {
  28. gftService.lock.Lock()
  29. defer gftService.lock.Unlock()
  30. if gftService.gT == nil {
  31. ctx := gctx.New()
  32. err := g.Cfg().MustGet(ctx, "gfToken").Struct(&gftService.options)
  33. liberr.ErrIsNil(ctx, err)
  34. gftService.gT = commonService.GfToken(gftService.options)
  35. }
  36. }
  37. return gftService.gT
  38. }