package ice_message import ( "bytes" "encoding/json" "errors" "eta_gn/eta_api/models" "eta_gn/eta_api/utils" "fmt" "io" "net/http" ) // pushIceMessageLib 推送ICE消息 func pushIceMessageLib(req *models.ReportIceMsgPushLibReq) (err error) { defer func() { if err != nil { utils.FileLog.Error("pushIceMessageLib, err:", err.Error()) } }() if req == nil { return errors.New("request cannot be nil") } if utils.IceMsgPushUrl == "" { return errors.New("iceMsgPushUrl cannot be empty") } if req.PlatformId == "" { return errors.New("platformId cannot be empty") } // 参数校验 req.Type = 0 // 此处必须传入:2,如果为非待办则传0, 本次传输的是订阅号消息,故传0 if req.Title == "" { return errors.New("title cannot be empty") } if req.Code == "" { //用户工号 return errors.New("code cannot be empty") } if req.URL == "" { return errors.New("url cannot be empty") } if req.TaskId == "" { return errors.New("taskId cannot be empty") } if req.SystemId == "" { return errors.New("systemId cannot be empty") } req.IsCompleted = 0 // 准备请求数据 jsonData, err := json.Marshal(req) if err != nil { return err } // 发送HTTP请求 client := &http.Client{} request, err := http.NewRequest("POST", utils.IceMsgPushUrl, bytes.NewBuffer(jsonData)) if err != nil { return err } request.Header.Set("Content-Type", "application/json") // 执行请求 response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() // 读取响应 body, err := io.ReadAll(response.Body) if err != nil { return err } utils.FileLog.Info("pushIceMessageLib, req:", string(jsonData), "body:", string(body)) // 解析响应 var result models.IceMsgPushLibResp if err = json.Unmarshal(body, &result); err != nil { return err } // 检查响应状态 if result.Code != 0 { return errors.New(result.Msg) } if result.Info.Ret != "0" { return errors.New(result.Info.Msg) } return nil } func PushIceMessage(title, summary, content, code, taskId string, reportId, pptId int, url string, classifyName string) (err error) { if url == "" { err = errors.New("url cannot be empty") return } platformId := GetIcePlatformIdByClassifyName(classifyName) req := &models.ReportIceMsgPushLibReq{ PlatformId: platformId, Title: title, Summary: summary, Content: content, Code: code, URL: url, TaskId: taskId, SystemId: taskId, } //fmt.Println("req:", req) err = pushIceMessageLib(req) if err != nil { err = errors.New(fmt.Sprintf("推送失败,Err:%s", err.Error())) return err } return nil } //生产platform_id: //煤炭市场日报:e3Rz //煤炭市场快讯:e3Ry //煤炭市场周报(简报):e3R9 //煤炭市场周报:e3R8 //煤炭市场月报:e3t1 func GetIcePlatformIdByClassifyName(classifyName string) (string) { switch classifyName { case "煤炭市场日报": return "e3Rz" case "煤炭市场快讯": return "e3Ry" case "煤炭市场周报(简报)": return "e3R9" case "煤炭市场周报": return "e3R8" case "煤炭市场月报": return "e3t1" } return "" }