package upstreamimpl import ( "encoding/json" "fmt" "git.5iot.com/iotlcm-public/iotlcm-upstream-proxy/internal/model" "strings" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/net/gclient" ) func readGatewayResponse(response *gclient.Response) (model.SimBaseResJson, error) { defer response.Close() body := response.ReadAll() var output struct { Code *int `json:"code"` Message string `json:"message"` Data model.SimBaseResJson `json:"data"` } if err := json.Unmarshal(body, &output); err != nil { return nil, gerror.Wrap(err, "解析网关响应失败") } if response.StatusCode < 200 || response.StatusCode >= 300 || output.Code == nil || *output.Code != 0 { message := strings.TrimSpace(output.Message) if message == "" { message = fmt.Sprintf("网关响应无效,HTTP状态码:%d", response.StatusCode) } return nil, gerror.New(message) } return output.Data, nil }