package services import ( "encoding/json" "eta/eta_api/models" "eta/eta_api/utils" "fmt" "io/ioutil" "net/http" "strings" ) func GetChartPermissionList() (list []*models.ChartPermission, err error) { var req GetChartPermissionReq data, err := getChartPermission(req) if err != nil { return } list = data.List return } type GetChartPermissionReq struct { ChartPermissionId int `json:"chart_permission_id"` ProductId int `json:"product_id"` } type GetChartPermissionItem struct { List []*models.ChartPermission ParentList []*models.ChartPermission } type GetChartPermissionResp struct { Code int `json:"code" description:"状态码"` Msg string `json:"msg" description:"提示信息"` Data GetChartPermissionItem `json:"data" description:"返回数据"` ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"` } func getChartPermission(pars GetChartPermissionReq) (res GetChartPermissionItem, err error) { url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/list") if pars.ProductId == 0 { pars.ProductId = 1 //默认查ficc的品种 } b, err := crmEtaPost(url, pars) if err != nil { err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } //result := new(models.ResultData) result := new(GetChartPermissionResp) 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 } res = result.Data return } type ChartPermissionResp struct { Code int `json:"code" description:"状态码"` Msg string `json:"msg" description:"提示信息"` ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"` } type ChartPermissionAddReq struct { PermissionName string `description:"品种权限名称"` ParentId int `description:"父级ID"` Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种 IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"` ProductId int } type ChartPermissionEditReq struct { ChartPermissionId int `description:"品种权限Id"` // 如果ID存在,则是更新操作,否则是新增操作 PermissionName string `description:"品种权限名称"` Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种 IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"` PublicPermissionIds []int `description:"公有权限的ID列表"` //一级品种没有公有私有属性 } type ChartPermissionMoveReq struct { ChartPermissionId int `description:"品种id"` // ParentChartPermissionId int `description:"父级品种id"` PrevChartPermissionId int `description:"上一个兄弟节点品种id"` NextChartPermissionId int `description:"下一个兄弟节点品种id"` } func crmEtaPost(url string, pars interface{}) (respBody []byte, err error) { params, e := json.Marshal(pars) if e != nil { err = fmt.Errorf("data json marshal err: %s", e.Error()) return } body := ioutil.NopCloser(strings.NewReader(string(params))) 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), utils.CrmEtaServerDes3Key) } respBody = b return } func AddChartPermission(pars *ChartPermissionAddReq) (err error, errMsg string) { url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/add") if pars.ProductId == 0 { pars.ProductId = 1 //默认新增ficc的品种 } b, err := crmEtaPost(url, pars) if err != nil { errMsg = "新增品种失败" err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } //result := new(models.ResultData) result := new(ChartPermissionResp) 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 } func EditChartPermission(pars *ChartPermissionEditReq) (err error, errMsg string) { url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/edit") b, err := crmEtaPost(url, pars) if err != nil { errMsg = "更新品种失败" err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } //result := new(models.ResultData) result := new(ChartPermissionResp) 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 } func MoveChartPermission(pars *ChartPermissionMoveReq) (err error, errMsg string) { url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/move") b, err := crmEtaPost(url, pars) if err != nil { errMsg = "移动品种失败" err = fmt.Errorf("url:%s err: %s", url, err.Error()) return } //result := new(models.ResultData) result := new(ChartPermissionResp) 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 }