提交 cb5d7f7b authored 作者: 屈传平's avatar 屈传平

ikucun

上级 dd40b0f1
......@@ -8,6 +8,7 @@ import (
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"math/rand"
"net/url"
"sort"
......@@ -105,7 +106,7 @@ func beforeSignBuild(nonceStr, interfaceName string, queryParams map[string]stri
return builder.String()
}
func getQueryParams(interfaceName, body string) map[string]string {
func getQueryParams(interfaceName, body string, queryParamsTemp map[string]interface{}) map[string]string {
// 生成 nonce 并添加到查询参数
nonceStr := makeNonceStr()
......@@ -119,6 +120,13 @@ func getQueryParams(interfaceName, body string) map[string]string {
"accessToken": server.AccessToken,
// 其他查询参数...
}
if nil != queryParamsTemp {
for k, v := range queryParamsTemp {
queryParams[k] = gconv.String(v)
}
}
queryParams["noncestr"] = nonceStr
// 构建签名前字符串
......@@ -168,7 +176,7 @@ func mapToSortedQuery(params map[string]string) string {
func post(ctx context.Context, method string, req interface{}) (res string, err error) {
Start := gtime.TimestampMilli()
param := gjson.New(req)
queryParam := getQueryParams(method, param.MustToJsonString())
queryParam := getQueryParams(method, param.MustToJsonString(), nil)
Url := server.ApiUrl + "?" + mapToSortedQuery(queryParam)
Request := g.Client()
Request.SetHeader("Content-Type", "application/json")
......@@ -186,3 +194,25 @@ func post(ctx context.Context, method string, req interface{}) (res string, err
res = resp.ReadAllString()
return
}
func get(ctx context.Context, method string, req interface{}) (res string, err error) {
Start := gtime.TimestampMilli()
param := gjson.New(req)
queryParam := getQueryParams(method, "", gconv.Map(req))
Url := server.ApiUrl + "?" + mapToSortedQuery(queryParam)
Request := g.Client()
Request.SetHeader("Content-Type", "application/json")
resp, err := Request.Timeout(time.Second*5).Get(Url, param.MustToJsonString())
defer func() {
_ = resp.Close()
ctx = context.WithValue(ctx, "Method", "GET")
ctx = context.WithValue(ctx, "URI", Url)
if err != nil {
g.Log().Ctx(ctx).Cat(pkgName).Cat("error").Infof("参数【%v】错误【%v】响应时间【%v ms】", param.MustToJsonString(), err.Error(), gtime.TimestampMilli()-Start)
} else {
g.Log().Ctx(ctx).Cat(pkgName).Infof("参数【%v】响应【%v】响应时间【%v ms】", param.MustToJsonString(), res, gtime.TimestampMilli()-Start)
}
}()
res = resp.ReadAllString()
return
}
......@@ -24,9 +24,9 @@ type AddressProvinceRes struct {
} `json:"data"`
}
func (s *msg) Province(ctx context.Context) (res *AddressProvinceRes, err error) {
func (s *address) Province(ctx context.Context) (res *AddressProvinceRes, err error) {
method := "aikucun.base.address.province.list"
result, err := post(ctx, method, g.Map{})
result, err := get(ctx, method, g.Map{})
_ = gjson.New(result).Scan(&res)
return
}
......@@ -48,9 +48,9 @@ type AddressCityRes struct {
} `json:"data"`
}
func (s *msg) City(ctx context.Context, req *AddressCityReq) (res *AddressCityRes, err error) {
func (s *address) City(ctx context.Context, req *AddressCityReq) (res *AddressCityRes, err error) {
method := "aikucun.base.address.city.list"
result, err := post(ctx, method, req)
result, err := get(ctx, method, req)
_ = gjson.New(result).Scan(&res)
return
}
......@@ -72,9 +72,9 @@ type AddressAreaRes struct {
} `json:"data"`
}
func (s *msg) Area(ctx context.Context, req *AddressAreaReq) (res *AddressAreaRes, err error) {
func (s *address) Area(ctx context.Context, req *AddressAreaReq) (res *AddressAreaRes, err error) {
method := "aikucun.base.address.district.list"
result, err := post(ctx, method, req)
result, err := get(ctx, method, req)
_ = gjson.New(result).Scan(&res)
return
}
......@@ -105,9 +105,9 @@ type AddressStreetRes struct {
} `json:"data"`
}
func (s *msg) Street(ctx context.Context, req *AddressStreetReq) (res *AddressStreetRes, err error) {
func (s *address) Street(ctx context.Context, req *AddressStreetReq) (res *AddressStreetRes, err error) {
method := "aikucun.base.address.villages.list"
result, err := post(ctx, method, req)
result, err := get(ctx, method, req)
_ = gjson.New(result).Scan(&res)
return
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论