ice_message_lib.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. if req == nil {
  15. return errors.New("request cannot be nil")
  16. }
  17. if utils.IceMsgPushUrl == "" {
  18. return errors.New("iceMsgPushUrl cannot be empty")
  19. }
  20. if utils.IceMsgPushPlatformId == "" {
  21. return errors.New("iceMsgPushPlatformId cannot be empty")
  22. }
  23. // 参数校验
  24. req.PlatformId = utils.IceMsgPushPlatformId
  25. req.Type = 0 // 此处必须传入:2,如果为非待办则传0, 本次传输的是订阅号消息,故传0
  26. if req.Title == "" {
  27. return errors.New("title cannot be empty")
  28. }
  29. if req.Code == "" { //用户工号
  30. return errors.New("code cannot be empty")
  31. }
  32. if req.URL == "" {
  33. return errors.New("url cannot be empty")
  34. }
  35. if req.TaskId == "" {
  36. return errors.New("taskId cannot be empty")
  37. }
  38. if req.SystemId == "" {
  39. return errors.New("systemId cannot be empty")
  40. }
  41. // 准备请求数据
  42. jsonData, err := json.Marshal(req)
  43. if err != nil {
  44. return err
  45. }
  46. // 发送HTTP请求
  47. client := &http.Client{}
  48. request, err := http.NewRequest("POST", "https://coalaiinsight.ceic.com:8180/push", bytes.NewBuffer(jsonData))
  49. if err != nil {
  50. return err
  51. }
  52. request.Header.Set("Content-Type", "application/json")
  53. // 执行请求
  54. response, err := client.Do(request)
  55. if err != nil {
  56. return err
  57. }
  58. defer response.Body.Close()
  59. // 读取响应
  60. body, err := io.ReadAll(response.Body)
  61. if err != nil {
  62. return err
  63. }
  64. utils.FileLog.Info("pushIceMessageLib, req:", string(jsonData), "body:", string(body))
  65. // 解析响应
  66. var result models.IceMsgPushLibResp
  67. if err = json.Unmarshal(body, &result); err != nil {
  68. return err
  69. }
  70. // 检查响应状态
  71. if result.Code != 0 {
  72. return errors.New(result.Msg)
  73. }
  74. return nil
  75. }
  76. func PushIceMessage(title, summary, content, code, taskId string, reportId, pptId int) (err error) {
  77. var url string
  78. if reportId > 0 {
  79. url = fmt.Sprintf("%s/report/report_detail?reportId=%s", utils.IceMsgPushUrl, reportId)
  80. } else if pptId > 0 {
  81. url = fmt.Sprintf("%s/report/ppt_detail?pptId=%s", utils.IceMsgPushUrl, pptId)
  82. }
  83. req := &models.ReportIceMsgPushLibReq{
  84. Title: title,
  85. Summary: summary,
  86. Content: content,
  87. Code: code,
  88. URL: url,
  89. TaskId: taskId,
  90. SystemId: taskId,
  91. }
  92. err = pushIceMessageLib(req)
  93. if err != nil {
  94. err = errors.New(fmt.Sprintf("推送失败,Err:%s", err.Error()))
  95. return err
  96. }
  97. return nil
  98. }