/* * @description:计量支付接口相关操作 * @Author: CP * @Date: 2020-09-03 16:57:56 * @FilePath: \construction_management\lib\jlzf.go */ package lib import ( "errors" "fmt" "time" "github.com/dgrijalva/jwt-go" "github.com/spf13/viper" "go.mod/conf" "go.mod/web/utils" "go.mod/web/viewmodels" ) type Jlzf struct { AuthUrl string App string Token string } //创建项目用户service func NewJlzf() *Jlzf { // 自动识别开发环境和生产环境 debug := getEnvInfo("DEBUG") AuthUrl := "" if debug { AuthUrl = "http://ljr.jl.com:7002" } return &Jlzf{ AuthUrl: AuthUrl, } } // 生成请求token func makeTokenString(claimsData jwt.MapClaims) (string, error) { var ( tokenString string err error ) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claimsData) if tokenString, err = token.SignedString([]byte(conf.JLSecretKey)); err != nil { return "", err } return tokenString, nil } // 拉取计量项目信息 func (j *Jlzf) GetProjectAndAccount(code string, account string) (map[string]interface{}, error) { var ( tokenString string err error resultData map[string]interface{} ) // 1.生成请求数据 expirationTime := time.Now().Add(24 * time.Hour) claimsData := jwt.MapClaims{ "data": map[string]string{"code": code, "account": account}, "exp": expirationTime.Unix(), // "StandardClaims": jwt.StandardClaims{ // ExpiresAt: expirationTime.Unix(), // }, } // 1-1.生成token if tokenString, err = makeTokenString(claimsData); err != nil { return nil, errors.New("生成请求token错误") } fmt.Println(tokenString) // 1-2.发送请求 if resultData, err = utils.PullData("GET", j.AuthUrl+"/management/project", tokenString); err != nil { return nil, errors.New(fmt.Sprintf("计量错误,err= %s", err)) } fmt.Println(resultData) return resultData, nil // client := &http.Client{} // data := url.Values{} // data.Set("auth", tokenString) // parameter := strings.NewReader(data.Encode()) // reqest, err := http.NewRequest("GET", j.AuthUrl, parameter) // if err != nil { // return nil, errors.New("计量网络出现问题") // } // reqest.Header.Add("Content-Type", "application/x-www-form-urlencoded") // // 发送请求 // response, err := client.Do(reqest) } func (j *Jlzf) GetAccount() error { return nil } // 验证计量支付项目账号的登陆密码 func (j *Jlzf) LoginValid(loginData viewmodels.Login) error { // TODO 生成令牌和提交时间 //const [encryptToken, postTime] = this.generateCLDToken(); // TODO 有接口在调试 /* req := HttpRequest.NewRequest() res, _ := req.Post(j.AuthUrl, map[string]interface{}{ "code": loginData.Code, "account": loginData.Account, "password": loginData.Password, "posttime": "", "token": "", }) _, err := res.Body() if err != nil { return errors.New("账号或密码不正确") } */ //return string(body) return nil } func getEnvInfo(env string) bool { viper.AutomaticEnv() return viper.GetBool(env) }