package services import ( "encoding/json" "fmt" "hongze/hz_crm_api/models" "hongze/hz_crm_api/utils" "io/ioutil" "net/http" "strings" ) type GetClassifyListReq struct { Keyword string CompanyType string HideDayWeek int } type ClassifySetEnabledReq struct { ClassifyId int `description:"分类ID"` Enabled int `description:"是否可用,1可用,0禁用"` } type EditClassifyReq struct { ClassifyId int `description:"分类ID"` /*Abstract string `description:"栏目简介"` Descript string `description:"分享描述"` ReportAuthor string `description:"栏目作者"` AuthorDescript string `description:"作者简介"` ColumnImgUrl string `description:"栏目配图"` ReportImgUrl string `description:"报告配图"` HeadImgUrl string `description:"头部banner"` AvatarImgUrl string `description:"头像"` HomeImgUrl string `description:"首页配图"`*/ ClassifyLabel string `description:"分类标签"` ShowType int `description:"展示类型:1-列表 2-专栏"` /*HasTeleconference int `description:"是否有电话会:0-否 1-是"` VipTitle string `description:"研究员头衔"`*/ //Sort int `description:"后台排序"` IsShow int `description:"是否在小程序显示:1-显示 0-隐藏"` YbFiccSort int `description:"小程序FICC页排序"` YbFiccIcon string `description:"小程序FICC页icon"` YbFiccPcIcon string `description:"小程序PC端FICC页背景图"` YbIconUrl string `description:"小程序已购页icon"` YbBgUrl string `description:"小程序已购详情背景图"` YbListImg string `description:"小程序研报列表封面图"` YbShareBgImg string `description:"小程序研报详情分享背景图"` YbRightBanner string `description:"Pc端详情页,右侧,报告合集背景图"` MenuList []*ClassifyMenuSaveReq `description:"子目录列表"` ClassifyMenuId int `description:"二级分类-子目录ID"` RelateTel int `description:"是否在电话会中可选: 0-否; 1-是"` RelateVideo int `description:"是否在路演视频中可选: 0-否; 1-是"` } // ClassifyMenuSaveReq 保存分类子目录请求体 type ClassifyMenuSaveReq struct { MenuId int `description:"子目录ID, 0为新增, 大于0为编辑"` MenuName string `description:"子目录名称"` } type CrmEtaBaseResp struct { Code int `json:"code" description:"状态码"` Msg string `json:"msg" description:"提示信息"` ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"` } func crmEtaPost(url string, param interface{}) (respBody []byte, err error) { data, e := json.Marshal(param) if e != nil { err = fmt.Errorf("data json marshal err: %s", e.Error()) return } body := ioutil.NopCloser(strings.NewReader(string(data))) client := &http.Client{} req, e := http.NewRequest("POST", url, body) if e != nil { err = fmt.Errorf("http create request err: %s", e.Error()) return } contentType := "application/json;charset=utf-8" req.Header.Set("Content-Type", contentType) req.Header.Set("Authorization", utils.CrmEtaAuthorization) resp, e := client.Do(req) if e != nil { err = fmt.Errorf("http client do err: %s", e.Error()) return } defer func() { _ = resp.Body.Close() }() b, e := ioutil.ReadAll(resp.Body) if e != nil { err = fmt.Errorf("resp body read err: %s", e.Error()) return } if len(b) == 0 { err = fmt.Errorf("resp body is empty") return } // 生产环境解密, 注意有个坑前后的双引号 if utils.RunMode == "release" { str := string(b) str = strings.Trim(str, `"`) b = utils.DesBase64Decrypt([]byte(str)) } respBody = b return } func EditReportClassify(pars *EditClassifyReq) (err error, errMsg string) { if utils.CrmEtaServerUrl == "" { return } url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta/classify/edit") b, err := crmEtaPost(url, pars) if err != nil { errMsg = "更新品种失败" err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } result := new(CrmEtaBaseResp) if e := json.Unmarshal(b, &result); e != nil { errMsg = "更新分类失败" err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b)) return } utils.FileLog.Info("%s", string(b)) if result.Code != 200 { err = fmt.Errorf("result: %s, err: %s", string(b), result.ErrMsg) errMsg = result.Msg return } return } type EditClassifyPermissionReq struct { Keyword string ChartPermissionIdList []int `description:"权限id数组"` NewKeyword string } // GetClassifyList 获取报告分类已绑定的权限 func GetClassifyList(req *GetClassifyListReq) (list models.ClassifyListResp, err error) { if utils.CrmEtaServerUrl == "" { return } url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta/classify/list") b, err := crmEtaPost(url, req) if err != nil { err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } //result := new(models.ResultData) result := new(GetClassifyListResp) if e := json.Unmarshal(b, &result); e != nil { err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b)) return } utils.FileLog.Info("%s", string(b)) if result.Code != 200 { err = fmt.Errorf("result: %s", string(b)) return } list = result.Data return } type ClassifyPermissionReq struct { Keyword string } type ClassifyPermissionList struct { List []*models.ChartPermissionSearchKeyWordMapping } type GetClassifyListResp struct { Code int `json:"code" description:"状态码"` Msg string `json:"msg" description:"提示信息"` Data models.ClassifyListResp `json:"data" description:"返回数据"` ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"` }