diff --git a/jobs/job.go b/jobs/job.go index d85c705..2fc3841 100644 --- a/jobs/job.go +++ b/jobs/job.go @@ -353,21 +353,19 @@ func (j *Job) Run() { } else if j.task.NotifyType == 2 && len(dingtalk) > 0 { TextStatus := []string{ - " 超时", - " 错误", - " 正常", + "超时", + "错误", + "正常", } content := fmt.Sprintf( - `定时任务异常:%s: -任务执行详情: + `任务执行异常详情: 任务 ID:%d 任务名称:%s 执行时间:%s 执行耗时:%f秒 执行状态:%s -任务执行输出 +任务执行输出: %s`, - j.task.TaskName, j.task.Id, j.task.TaskName, beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), diff --git a/libs/http.go b/libs/http.go index 479c3ff..c8ff43f 100644 --- a/libs/http.go +++ b/libs/http.go @@ -8,24 +8,17 @@ package libs import ( - "encoding/json" "github.com/pkg/errors" "io/ioutil" - "net/http" "strings" + "net/http" "io" ) -type AjaxReturn struct { - Status int `json:"status"` - Message string `json:"message"` - Data interface{} `json:"data"` -} - -func HttpGet(url string, param map[string]string) error { +func HttpGet(url string, param map[string]string) (string, error) { if url == "" { - return errors.Errorf("url %s is not exists", url) + return "", errors.Errorf("url %s is not exists", url) } paramStr := "" for k, v := range param { @@ -40,7 +33,7 @@ func HttpGet(url string, param map[string]string) error { resp, err := http.Get(url) if err != nil { - return err + return "", err } defer resp.Body.Close() @@ -48,31 +41,27 @@ func HttpGet(url string, param map[string]string) error { body, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return "", err } - ajaxData := AjaxReturn{} - json.Unmarshal(body, &ajaxData) - if ajaxData.Status != 200 { - return errors.Errorf("msg %s", ajaxData.Message) - } - return nil + + return string(body), nil } -func HttpPost(url string, contentType string, body io.Reader) error { +func HttpPost(url string, contentType string, body io.Reader) (string, error) { resp, err := http.Post(url, contentType, body) if err != nil { - return err + return "", err } defer resp.Body.Close() - _, resErr := ioutil.ReadAll(resp.Body) + resBody, err := ioutil.ReadAll(resp.Body) - if resErr != nil { - return resErr + if err != nil { + return "", err } - return nil + return string(resBody), nil } diff --git a/notify/dingtalk.go b/notify/dingtalk.go index 030b11c..f9e5543 100644 --- a/notify/dingtalk.go +++ b/notify/dingtalk.go @@ -17,6 +17,15 @@ import ( "bytes" ) +type Msg struct { + MsgType string `json:"msgtype"` + Text *Text `json:"text"` +} + +type Text struct { + Content string `json:"content"` +} + type Dingtalk struct { Dingtalks []string Content string @@ -39,7 +48,7 @@ func init() { if !ok { return } - if err := m.SendDingtalk(); err != nil { + if _, err := m.SendDingtalk(); err != nil { beego.Error("SendDingtalk:", err.Error()) } } @@ -62,16 +71,7 @@ func SendDingtalkToChan(dingtalks []string, content string) bool { } } -type Msg struct { - MsgType string `json:"msgtype"` - Text *Text `json:"text"` -} - -type Text struct { - Content string `json:"content"` -} - -func (s *Dingtalk) SendDingtalk() error { +func (s *Dingtalk) SendDingtalk() (string, error) { for _, v := range s.Dingtalks { @@ -83,13 +83,16 @@ func (s *Dingtalk) SendDingtalk() error { msgJson, err := json.Marshal(msg) if err != nil { log.Println(err) + return "", err } url := fmt.Sprintf(DingtalkUrl, v) - resErr := libs.HttpPost(url, "application/json;charset=utf-8", bytes.NewBuffer(msgJson)) - if resErr != nil { + res, err := libs.HttpPost(url, "application/json;charset=utf-8", bytes.NewBuffer(msgJson)) + if err != nil { log.Println(err) + return "", err } + return res, err } - return nil + return "", nil } diff --git a/notify/sms.go b/notify/sms.go index 8969a1b..1737059 100644 --- a/notify/sms.go +++ b/notify/sms.go @@ -12,8 +12,16 @@ import ( "github.com/george518/PPGo_Job/libs" "log" "time" + "encoding/json" + "github.com/pkg/errors" ) +type AjaxReturn struct { + Status int `json:"status"` + Message string `json:"message"` + Data interface{} `json:"data"` +} + type Sms struct { Mobiles []string Param map[string]string @@ -36,7 +44,7 @@ func init() { if !ok { return } - if err := m.SendSms(); err != nil { + if _, err := m.SendSms(); err != nil { beego.Error("SendSms:", err.Error()) } } @@ -59,13 +67,30 @@ func SendSmsToChan(mobiles []string, param map[string]string) bool { } } -func (s *Sms) SendSms() error { +func (s *Sms) SendSms() (string, error) { + for _, v := range s.Mobiles { s.Param["mobile"] = v - err := libs.HttpGet(SmsUrl, s.Param) + res, err := libs.HttpGet(SmsUrl, s.Param) + if err != nil { log.Println(err) + return "", err } + + ajaxData := AjaxReturn{} + jsonErr := json.Unmarshal([]byte(res), &ajaxData) + + if jsonErr != nil { + return "", jsonErr + } + + if ajaxData.Status != 200 { + return "", errors.Errorf("msg %s", ajaxData.Message) + } + + return res, nil + } - return nil + return "", nil }