ice_message_lib.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package ice_message
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "errors"
  6. "eta_gn/eta_api/models"
  7. "eta_gn/eta_api/utils"
  8. "fmt"
  9. "io"
  10. "net/http"
  11. )
  12. // pushIceMessageLib 推送ICE消息
  13. func pushIceMessageLib(req *models.ReportIceMsgPushLibReq) (err error) {
  14. defer func() {
  15. if err != nil {
  16. utils.FileLog.Error("pushIceMessageLib, err:", err.Error())
  17. }
  18. }()
  19. if req == nil {
  20. return errors.New("request cannot be nil")
  21. }
  22. if utils.IceMsgPushUrl == "" {
  23. return errors.New("iceMsgPushUrl cannot be empty")
  24. }
  25. if req.PlatformId == "" {
  26. return errors.New("platformId cannot be empty")
  27. }
  28. // 参数校验
  29. req.Type = 0 // 此处必须传入:2,如果为非待办则传0, 本次传输的是订阅号消息,故传0
  30. if req.Title == "" {
  31. return errors.New("title cannot be empty")
  32. }
  33. if req.Code == "" { //用户工号
  34. return errors.New("code cannot be empty")
  35. }
  36. if req.URL == "" {
  37. return errors.New("url cannot be empty")
  38. }
  39. if req.TaskId == "" {
  40. return errors.New("taskId cannot be empty")
  41. }
  42. if req.SystemId == "" {
  43. return errors.New("systemId cannot be empty")
  44. }
  45. // 准备请求数据
  46. jsonData, err := json.Marshal(req)
  47. if err != nil {
  48. return err
  49. }
  50. // 发送HTTP请求
  51. client := &http.Client{}
  52. request, err := http.NewRequest("POST", utils.IceMsgPushUrl, bytes.NewBuffer(jsonData))
  53. if err != nil {
  54. return err
  55. }
  56. request.Header.Set("Content-Type", "application/json")
  57. // 执行请求
  58. response, err := client.Do(request)
  59. if err != nil {
  60. return err
  61. }
  62. defer response.Body.Close()
  63. // 读取响应
  64. body, err := io.ReadAll(response.Body)
  65. if err != nil {
  66. return err
  67. }
  68. utils.FileLog.Info("pushIceMessageLib, req:", string(jsonData), "body:", string(body))
  69. // 解析响应
  70. var result models.IceMsgPushLibResp
  71. if err = json.Unmarshal(body, &result); err != nil {
  72. return err
  73. }
  74. // 检查响应状态
  75. if result.Code != 0 {
  76. return errors.New(result.Msg)
  77. }
  78. if result.Info.Ret != "0" {
  79. return errors.New(result.Info.Msg)
  80. }
  81. return nil
  82. }
  83. func PushIceMessage(title, summary, content, code, taskId string, reportId, pptId int, url string, classifyName string) (err error) {
  84. if url == "" {
  85. err = errors.New("url cannot be empty")
  86. return
  87. }
  88. platformId := GetIcePlatformIdByClassifyName(classifyName)
  89. req := &models.ReportIceMsgPushLibReq{
  90. PlatformId: platformId,
  91. Title: title,
  92. Summary: summary,
  93. Content: content,
  94. Code: code,
  95. URL: url,
  96. TaskId: taskId,
  97. SystemId: taskId,
  98. }
  99. err = pushIceMessageLib(req)
  100. if err != nil {
  101. err = errors.New(fmt.Sprintf("推送失败,Err:%s", err.Error()))
  102. return err
  103. }
  104. return nil
  105. }
  106. //生产platform_id:
  107. //煤炭市场日报:e3Rz
  108. //煤炭市场快讯:e3Ry
  109. //煤炭市场周报(简报):e3R9
  110. //煤炭市场周报:e3R8
  111. //煤炭市场月报:e3t1
  112. func GetIcePlatformIdByClassifyName(classifyName string) (string) {
  113. switch classifyName {
  114. case "煤炭市场日报":
  115. return "e3Rz"
  116. case "煤炭市场快讯":
  117. return "e3Ry"
  118. case "煤炭市场周报(简报)":
  119. return "e3R9"
  120. case "煤炭市场周报":
  121. return "e3R8"
  122. case "煤炭市场月报":
  123. return "e3t1"
  124. }
  125. return ""
  126. }