ht_mini_facade.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package instance
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta/eta_chart_lib/facade"
  6. "eta/eta_chart_lib/models"
  7. "eta/eta_chart_lib/utils"
  8. "fmt"
  9. "strings"
  10. )
  11. const (
  12. bookMarkUrl = "user/bookMark"
  13. unBookMarkUrl = "user/unBookMark"
  14. checkBookMarkUrl = "user/checkBookMark"
  15. target = "ht"
  16. )
  17. type HTCollectionReq struct {
  18. UniqueCode string `json:"uniqueCode"`
  19. }
  20. type HTMiniFacade struct {
  21. facade.BaseMiniFacade
  22. }
  23. type HTResponse struct {
  24. Ret int
  25. Msg string
  26. Data interface{} `json:"data"`
  27. ErrMsg string
  28. ErrCode int
  29. Success bool
  30. }
  31. type HTRequest struct {
  32. facade.BaseRequest
  33. ChartInfoId int
  34. ChartName string
  35. ChartImage string
  36. SourceType string
  37. SourceId int
  38. }
  39. func dealChartInfo(baseReq facade.BaseRequest) (request HTRequest, err error) {
  40. chartInfo, err := models.GetChartInfoByUniqueCode(baseReq.UniqueCode)
  41. if err != nil {
  42. utils.FileLog.Error("收藏失败,获取图表信息失败:%v", err.Error())
  43. return
  44. }
  45. request = HTRequest{
  46. BaseRequest: baseReq,
  47. ChartImage: chartInfo.ChartImage,
  48. ChartInfoId: chartInfo.ChartInfoId,
  49. ChartName: chartInfo.ChartName,
  50. SourceType: "chart",
  51. SourceId: chartInfo.ChartInfoId,
  52. }
  53. return
  54. }
  55. func parseResult(resp string) (response HTResponse, err error) {
  56. var respBytes []byte
  57. if utils.RunMode != "debug" {
  58. resp = strings.Trim(resp, `"`)
  59. respBytes = utils.DesBase64Decrypt([]byte(resp), utils.ETA_MINI_DES_KEY)
  60. } else {
  61. respBytes = []byte(resp)
  62. }
  63. err = json.Unmarshal(respBytes, &response)
  64. if err != nil {
  65. utils.FileLog.Error("收藏失败,解析应答失败:%v,应答结果:%s", err.Error(), resp)
  66. }
  67. if !response.Success {
  68. utils.FileLog.Error("收藏失败,应答结果:%d[%s]", response.ErrCode, response.ErrMsg)
  69. err = errors.New(response.ErrMsg)
  70. }
  71. return
  72. }
  73. func (ht *HTMiniFacade) Collect(req facade.BaseRequest) (err error) {
  74. param, err := dealChartInfo(req)
  75. if err != nil {
  76. utils.FileLog.Error("收藏失败,获取图表信息失败:%v", err.Error())
  77. return err
  78. }
  79. url, err := generateUrl(bookMarkUrl)
  80. if err != nil {
  81. return
  82. }
  83. resp, err := ht.Post(url, param, req.Auth)
  84. if err != nil {
  85. utils.FileLog.Error("收藏失败,err:%v,resp:%v", err, resp)
  86. return
  87. }
  88. _, err = parseResult(resp)
  89. return
  90. }
  91. func (ht *HTMiniFacade) UnCollect(req facade.BaseRequest) (err error) {
  92. param, err := dealChartInfo(req)
  93. if err != nil {
  94. utils.FileLog.Error("收藏失败,获取图表信息失败:%v", err.Error())
  95. return err
  96. }
  97. url, err := generateUrl(unBookMarkUrl)
  98. if err != nil {
  99. return
  100. }
  101. resp, err := ht.Post(url, param, req.Auth)
  102. if err != nil {
  103. utils.FileLog.Error("取消收藏失败,err:%v,resp:%v", err, resp)
  104. return
  105. }
  106. _, err = parseResult(resp)
  107. return
  108. }
  109. func generateUrl(path string) (url string, err error) {
  110. configPath := utils.GetMiniUrl(target)
  111. if configPath == "" {
  112. utils.FileLog.Error("获取mini接口地址失败", err)
  113. err = errors.New("获取mini接口地址失败")
  114. return
  115. }
  116. url = fmt.Sprintf("%s%s", configPath, path)
  117. return
  118. }
  119. func (ht *HTMiniFacade) IsCollect(req facade.BaseRequest) bool {
  120. param, err := dealChartInfo(req)
  121. if err != nil {
  122. utils.FileLog.Error("获取是否收藏失败,获取图表信息失败:%v", err.Error())
  123. return false
  124. }
  125. url, err := generateUrl(checkBookMarkUrl)
  126. if err != nil {
  127. return false
  128. }
  129. resp, err := ht.Post(url, param, req.Auth)
  130. if err != nil {
  131. utils.FileLog.Error("获取是否收藏失败,err:%v,resp:%v", err, resp)
  132. return false
  133. }
  134. response, err := parseResult(resp)
  135. if err != nil {
  136. utils.FileLog.Error("获取是否收藏失败,解析应答失败:%v,应答结果:%s", err, resp)
  137. return false
  138. }
  139. var resMap = response.Data.(map[string]interface{})
  140. bookMarked := resMap["isBookMarked"]
  141. if bookMarked == nil {
  142. return false
  143. }
  144. return bookMarked.(bool)
  145. }
  146. func init() {
  147. facade.RegisterMiniFacade(target, &HTMiniFacade{
  148. BaseMiniFacade: facade.FacadeClient,
  149. })
  150. }