jlzf.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*
  2. * @description:计量支付接口相关操作
  3. * @Author: CP
  4. * @Date: 2020-09-03 16:57:56
  5. * @FilePath: \construction_management\lib\jlzf.go
  6. */
  7. package lib
  8. import (
  9. "errors"
  10. "fmt"
  11. "time"
  12. "github.com/dgrijalva/jwt-go"
  13. "github.com/spf13/viper"
  14. "go.mod/conf"
  15. "go.mod/web/utils"
  16. "go.mod/web/viewmodels"
  17. )
  18. type Jlzf struct {
  19. AuthUrl string
  20. App string
  21. Token string
  22. }
  23. //创建项目用户service
  24. func NewJlzf() *Jlzf {
  25. // 自动识别开发环境和生产环境
  26. debug := getEnvInfo("DEBUG")
  27. AuthUrl := ""
  28. if debug {
  29. AuthUrl = "http://ljr.jl.com:7002"
  30. }
  31. return &Jlzf{
  32. AuthUrl: AuthUrl,
  33. }
  34. }
  35. // 生成请求token
  36. func makeTokenString(claimsData jwt.MapClaims) (string, error) {
  37. var (
  38. tokenString string
  39. err error
  40. )
  41. token := jwt.NewWithClaims(jwt.SigningMethodHS256, claimsData)
  42. if tokenString, err = token.SignedString([]byte(conf.JLSecretKey)); err != nil {
  43. return "", err
  44. }
  45. return tokenString, nil
  46. }
  47. // 拉取计量项目信息
  48. func (j *Jlzf) GetProjectAndAccount(code string, account string) (map[string]interface{}, error) {
  49. var (
  50. tokenString string
  51. err error
  52. resultData map[string]interface{}
  53. )
  54. // 1.生成请求数据
  55. expirationTime := time.Now().Add(24 * time.Hour)
  56. claimsData := jwt.MapClaims{
  57. "data": map[string]string{"code": code, "account": account},
  58. "exp": expirationTime.Unix(),
  59. // "StandardClaims": jwt.StandardClaims{
  60. // ExpiresAt: expirationTime.Unix(),
  61. // },
  62. }
  63. // 1-1.生成token
  64. if tokenString, err = makeTokenString(claimsData); err != nil {
  65. return nil, errors.New("生成请求token错误")
  66. }
  67. fmt.Println(tokenString)
  68. // 1-2.发送请求
  69. if resultData, err = utils.PullData("GET", j.AuthUrl+"/management/project", tokenString); err != nil {
  70. return nil, errors.New(fmt.Sprintf("计量错误,err= %s", err))
  71. }
  72. fmt.Println(resultData)
  73. return resultData, nil
  74. // client := &http.Client{}
  75. // data := url.Values{}
  76. // data.Set("auth", tokenString)
  77. // parameter := strings.NewReader(data.Encode())
  78. // reqest, err := http.NewRequest("GET", j.AuthUrl, parameter)
  79. // if err != nil {
  80. // return nil, errors.New("计量网络出现问题")
  81. // }
  82. // reqest.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  83. // // 发送请求
  84. // response, err := client.Do(reqest)
  85. }
  86. func (j *Jlzf) GetAccount() error {
  87. return nil
  88. }
  89. // 验证计量支付项目账号的登陆密码
  90. func (j *Jlzf) LoginValid(loginData viewmodels.Login) error {
  91. // TODO 生成令牌和提交时间
  92. //const [encryptToken, postTime] = this.generateCLDToken();
  93. // TODO 有接口在调试
  94. /*
  95. req := HttpRequest.NewRequest()
  96. res, _ := req.Post(j.AuthUrl, map[string]interface{}{
  97. "code": loginData.Code,
  98. "account": loginData.Account,
  99. "password": loginData.Password,
  100. "posttime": "",
  101. "token": "",
  102. })
  103. _, err := res.Body()
  104. if err != nil {
  105. return errors.New("账号或密码不正确")
  106. }
  107. */
  108. //return string(body)
  109. return nil
  110. }
  111. func getEnvInfo(env string) bool {
  112. viper.AutomaticEnv()
  113. return viper.GetBool(env)
  114. }