package controllers import ( "encoding/json" "eta_gn/eta_report/models" "eta_gn/eta_report/services" "eta_gn/eta_report/utils" "fmt" "io/ioutil" "net/http" ) type ChartController struct { BaseAuthController } // @router /detail [post] func (this *ChartController) ChartDetail() { br := new(models.BaseResponse).Init() defer func() { if br.ErrMsg == "" { br.IsSendEmail = false } this.Data["json"] = br this.ServeJSONNoEncryption() }() var req services.ChartDetailReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.UniqueCode == "" { br.Msg = "参数不能为空!" br.ErrMsg = "参数不能为空!" return } url := utils.ChartLibUrl + `/chart/common/detail?UniqueCode=%s` url = fmt.Sprintf(url, req.UniqueCode) resp, e := http.Get(url) if e != nil { err = fmt.Errorf("http Get err: %s", e.Error()) br.ErrMsg = err.Error() return } defer resp.Body.Close() b, e := ioutil.ReadAll(resp.Body) if e != nil { err = fmt.Errorf("resp body read err: %s", e.Error()) br.ErrMsg = err.Error() return } if len(b) == 0 { err = fmt.Errorf("resp body is empty") br.ErrMsg = err.Error() return } result := new(models.BaseResponse) if e = json.Unmarshal(b, &result); e != nil { err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b)) br.ErrMsg = err.Error() return } if result.Ret != 200 { err = fmt.Errorf("result: %s", string(b)) br.ErrMsg = err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = result.Data return }