ice_message_lib.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. req.IsCompleted = 0
  46. // 准备请求数据
  47. jsonData, err := json.Marshal(req)
  48. if err != nil {
  49. return err
  50. }
  51. // 发送HTTP请求
  52. client := &http.Client{}
  53. request, err := http.NewRequest("POST", utils.IceMsgPushUrl, bytes.NewBuffer(jsonData))
  54. if err != nil {
  55. return err
  56. }
  57. request.Header.Set("Content-Type", "application/json")
  58. // 执行请求
  59. response, err := client.Do(request)
  60. if err != nil {
  61. return err
  62. }
  63. defer response.Body.Close()
  64. // 读取响应
  65. body, err := io.ReadAll(response.Body)
  66. if err != nil {
  67. return err
  68. }
  69. utils.FileLog.Info("pushIceMessageLib, req:", string(jsonData), "body:", string(body))
  70. // 解析响应
  71. var result models.IceMsgPushLibResp
  72. if err = json.Unmarshal(body, &result); err != nil {
  73. return err
  74. }
  75. // 检查响应状态
  76. if result.Code != 0 {
  77. return errors.New(result.Msg)
  78. }
  79. if result.Info.Ret != "0" {
  80. return errors.New(result.Info.Msg)
  81. }
  82. return nil
  83. }
  84. func PushIceMessage(title, summary, content, code, taskId string, reportId, pptId int, url string, classifyName string) (err error) {
  85. if url == "" {
  86. err = errors.New("url cannot be empty")
  87. return
  88. }
  89. platformId := GetIcePlatformIdByClassifyName(classifyName)
  90. req := &models.ReportIceMsgPushLibReq{
  91. PlatformId: platformId,
  92. Title: title,
  93. Summary: summary,
  94. Content: content,
  95. Code: code,
  96. URL: url,
  97. TaskId: taskId,
  98. SystemId: taskId,
  99. }
  100. //fmt.Println("req:", req)
  101. err = pushIceMessageLib(req)
  102. if err != nil {
  103. err = errors.New(fmt.Sprintf("推送失败,Err:%s", err.Error()))
  104. return err
  105. }
  106. return nil
  107. }
  108. //生产platform_id:
  109. //煤炭市场日报:e3Rz
  110. //煤炭市场快讯:e3Ry
  111. //煤炭市场周报(简报):e3R9
  112. //煤炭市场周报:e3R8
  113. //煤炭市场月报:e3t1
  114. func GetIcePlatformIdByClassifyName(classifyName string) (string) {
  115. switch classifyName {
  116. case "煤炭市场日报":
  117. return "e3Rz"
  118. case "煤炭市场快讯":
  119. return "e3Ry"
  120. case "煤炭市场周报(简报)":
  121. return "e3R9"
  122. case "煤炭市场周报":
  123. return "e3R8"
  124. case "煤炭市场月报":
  125. return "e3t1"
  126. }
  127. return ""
  128. }