chart_permission.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. package services
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "io/ioutil"
  8. "net/http"
  9. "strings"
  10. )
  11. func GetChartPermissionList() (list []*models.ChartPermission, err error) {
  12. var req GetChartPermissionReq
  13. data, err := getChartPermission(req)
  14. if err != nil {
  15. return
  16. }
  17. list = data.List
  18. return
  19. }
  20. type GetChartPermissionReq struct {
  21. ChartPermissionId int `json:"chart_permission_id"`
  22. ProductId int `json:"product_id"`
  23. }
  24. type GetChartPermissionItem struct {
  25. List []*models.ChartPermission
  26. ParentList []*models.ChartPermission
  27. }
  28. type GetChartPermissionResp struct {
  29. Code int `json:"code" description:"状态码"`
  30. Msg string `json:"msg" description:"提示信息"`
  31. Data GetChartPermissionItem `json:"data" description:"返回数据"`
  32. ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
  33. }
  34. func getChartPermission(pars GetChartPermissionReq) (res GetChartPermissionItem, err error) {
  35. url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/list")
  36. if pars.ProductId == 0 {
  37. pars.ProductId = 1 //默认查ficc的品种
  38. }
  39. b, err := crmEtaPost(url, pars)
  40. if err != nil {
  41. err = fmt.Errorf("url:%s err: %s", url, err.Error())
  42. return
  43. }
  44. //result := new(models.ResultData)
  45. result := new(GetChartPermissionResp)
  46. if e := json.Unmarshal(b, &result); e != nil {
  47. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  48. return
  49. }
  50. utils.FileLog.Info("%s", string(b))
  51. if result.Code != 200 {
  52. err = fmt.Errorf("result: %s", string(b))
  53. return
  54. }
  55. res = result.Data
  56. return
  57. }
  58. type ChartPermissionResp struct {
  59. Code int `json:"code" description:"状态码"`
  60. Msg string `json:"msg" description:"提示信息"`
  61. ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
  62. }
  63. type ChartPermissionAddReq struct {
  64. PermissionName string `description:"品种权限名称"`
  65. ParentId int `description:"父级ID"`
  66. Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
  67. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"`
  68. ProductId int
  69. }
  70. type ChartPermissionEditReq struct {
  71. ChartPermissionId int `description:"品种权限Id"` // 如果ID存在,则是更新操作,否则是新增操作
  72. PermissionName string `description:"品种权限名称"`
  73. Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
  74. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"`
  75. PublicPermissionIds []int `description:"公有权限的ID列表"` //一级品种没有公有私有属性
  76. }
  77. type ChartPermissionMoveReq struct {
  78. ChartPermissionId int `description:"品种id"`
  79. // ParentChartPermissionId int `description:"父级品种id"`
  80. PrevChartPermissionId int `description:"上一个兄弟节点品种id"`
  81. NextChartPermissionId int `description:"下一个兄弟节点品种id"`
  82. }
  83. func crmEtaPost(url string, pars interface{}) (respBody []byte, err error) {
  84. params, e := json.Marshal(pars)
  85. if e != nil {
  86. err = fmt.Errorf("data json marshal err: %s", e.Error())
  87. return
  88. }
  89. body := ioutil.NopCloser(strings.NewReader(string(params)))
  90. client := &http.Client{}
  91. req, e := http.NewRequest("POST", url, body)
  92. if e != nil {
  93. err = fmt.Errorf("http create request err: %s", e.Error())
  94. return
  95. }
  96. contentType := "application/json;charset=utf-8"
  97. req.Header.Set("Content-Type", contentType)
  98. req.Header.Set("Authorization", utils.CrmEtaAuthorization)
  99. resp, e := client.Do(req)
  100. if e != nil {
  101. err = fmt.Errorf("http client do err: %s", e.Error())
  102. return
  103. }
  104. defer func() {
  105. _ = resp.Body.Close()
  106. }()
  107. b, e := ioutil.ReadAll(resp.Body)
  108. if e != nil {
  109. err = fmt.Errorf("resp body read err: %s", e.Error())
  110. return
  111. }
  112. if len(b) == 0 {
  113. err = fmt.Errorf("resp body is empty")
  114. return
  115. }
  116. // 生产环境解密, 注意有个坑前后的双引号
  117. if utils.RunMode == "release" {
  118. str := string(b)
  119. str = strings.Trim(str, `"`)
  120. b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
  121. }
  122. respBody = b
  123. return
  124. }
  125. func AddChartPermission(pars *ChartPermissionAddReq) (err error, errMsg string) {
  126. url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/add")
  127. if pars.ProductId == 0 {
  128. pars.ProductId = 1 //默认新增ficc的品种
  129. }
  130. b, err := crmEtaPost(url, pars)
  131. if err != nil {
  132. errMsg = "新增品种失败"
  133. err = fmt.Errorf("url:%s err: %s", url, err.Error())
  134. return
  135. }
  136. //result := new(models.ResultData)
  137. result := new(ChartPermissionResp)
  138. if e := json.Unmarshal(b, &result); e != nil {
  139. errMsg = "新增品种失败"
  140. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  141. return
  142. }
  143. utils.FileLog.Info("%s", string(b))
  144. if result.Code != 200 {
  145. err = fmt.Errorf("result: %s, err: %s", string(b), result.ErrMsg)
  146. errMsg = result.Msg
  147. return
  148. }
  149. return
  150. }
  151. func EditChartPermission(pars *ChartPermissionEditReq) (err error, errMsg string) {
  152. url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/edit")
  153. b, err := crmEtaPost(url, pars)
  154. if err != nil {
  155. errMsg = "更新品种失败"
  156. err = fmt.Errorf("url:%s err: %s", url, err.Error())
  157. return
  158. }
  159. //result := new(models.ResultData)
  160. result := new(ChartPermissionResp)
  161. if e := json.Unmarshal(b, &result); e != nil {
  162. errMsg = "更新品种失败"
  163. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  164. return
  165. }
  166. utils.FileLog.Info("%s", string(b))
  167. if result.Code != 200 {
  168. err = fmt.Errorf("result: %s, err: %s", string(b), result.ErrMsg)
  169. errMsg = result.Msg
  170. return
  171. }
  172. return
  173. }
  174. func MoveChartPermission(pars *ChartPermissionMoveReq) (err error, errMsg string) {
  175. url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/move")
  176. b, err := crmEtaPost(url, pars)
  177. if err != nil {
  178. errMsg = "移动品种失败"
  179. err = fmt.Errorf("url:%s err: %s", url, err.Error())
  180. return
  181. }
  182. //result := new(models.ResultData)
  183. result := new(ChartPermissionResp)
  184. if e := json.Unmarshal(b, &result); e != nil {
  185. errMsg = "移动品种失败"
  186. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  187. return
  188. }
  189. utils.FileLog.Info("%s", string(b))
  190. if result.Code != 200 {
  191. err = fmt.Errorf("result: %s, err: %s", string(b), result.ErrMsg)
  192. errMsg = result.Msg
  193. return
  194. }
  195. return
  196. }