12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package service
- import (
- "context"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/util/gconv"
- "time"
- )
- type (
- tokenResData struct {
- Token string `json:"token"`
- ExpiresIn int `json:"expiresIn"` //一天有效期
- }
- tripartite struct {
- token string
- effectiveTime time.Time
- }
- )
- var (
- JyElectronicTripartite = createTripartite()
- )
- func createTripartite() *tripartite {
- t := &tripartite{}
- _, err := t.GetToken(true)
- if err != nil {
- g.Log().Errorf(context.Background(), "刷新token异常%v", err)
- }
- return t
- }
- // GetToken 获取token
- func (t *tripartite) GetToken(reload ...bool) (string, error) {
- var (
- ctx = context.Background()
- )
- if time.Now().Before(t.effectiveTime) && t.token != "" && len(reload) == 0 {
- return t.token, nil
- }
- err := CommonDoPost("/authority_token/getToken",
- getDefaultFormHeader(),
- g.MapStrAny{
- "client_id": g.Cfg().MustGet(ctx, "tripartite.clientId"),
- "client_secret": g.Cfg().MustGet(ctx, "tripartite.clientSecret"),
- },
- func(i interface{}) error {
- var d tokenResData
- if err := gconv.Struct(i, &d); err != nil {
- return err
- }
- t.token = d.Token
- t.effectiveTime = time.Now().Add(time.Second * time.Duration(d.ExpiresIn))
- return nil
- })
- if err != nil {
- return "", err
- }
- return t.token, nil
- }
|