新增出错短信提醒
This commit is contained in:
@@ -33,5 +33,6 @@ email.pool = 10
|
|||||||
|
|
||||||
|
|
||||||
# 其他通知方式
|
# 其他通知方式
|
||||||
msg.url = http://xxx.com/sms/url?id=12&msg=12121
|
msg.url = http://chanxiyou.com/api/tools/send_sms
|
||||||
|
msg.pool = 10
|
||||||
|
|
||||||
|
|||||||
@@ -285,14 +285,14 @@ func serverListByGroupId(groupId int) []string {
|
|||||||
return servers
|
return servers
|
||||||
}
|
}
|
||||||
|
|
||||||
type adminInfo struct {
|
type AdminInfo struct {
|
||||||
Id int
|
Id int
|
||||||
Email string
|
Email string
|
||||||
Phone string
|
Phone string
|
||||||
RealName string
|
RealName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func AllAdminInfo(adminIds string) []*adminInfo {
|
func AllAdminInfo(adminIds string) []*AdminInfo {
|
||||||
Filters := make([]interface{}, 0)
|
Filters := make([]interface{}, 0)
|
||||||
Filters = append(Filters, "status", 1)
|
Filters = append(Filters, "status", 1)
|
||||||
//Filters = append(Filters, "id__gt", 1)
|
//Filters = append(Filters, "id__gt", 1)
|
||||||
@@ -307,9 +307,9 @@ func AllAdminInfo(adminIds string) []*adminInfo {
|
|||||||
}
|
}
|
||||||
Result, _ := models.AdminGetList(1, 1000, Filters...)
|
Result, _ := models.AdminGetList(1, 1000, Filters...)
|
||||||
|
|
||||||
adminInfos := make([]*adminInfo, 0)
|
adminInfos := make([]*AdminInfo, 0)
|
||||||
for _, v := range Result {
|
for _, v := range Result {
|
||||||
ai := adminInfo{
|
ai := AdminInfo{
|
||||||
Id: v.Id,
|
Id: v.Id,
|
||||||
Email: v.Email,
|
Email: v.Email,
|
||||||
Phone: v.Phone,
|
Phone: v.Phone,
|
||||||
|
|||||||
@@ -166,8 +166,7 @@ func (self *TaskController) Detail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//是否出错通知
|
//是否出错通知
|
||||||
self.Data["adminInfo"] = []int{0}
|
self.Data["adminInfo"] = []*AdminInfo{}
|
||||||
fmt.Println(task.NotifyUserIds)
|
|
||||||
if task.NotifyUserIds != "0" && task.NotifyUserIds != "" {
|
if task.NotifyUserIds != "0" && task.NotifyUserIds != "" {
|
||||||
self.Data["adminInfo"] = AllAdminInfo(task.NotifyUserIds)
|
self.Data["adminInfo"] = AllAdminInfo(task.NotifyUserIds)
|
||||||
}
|
}
|
||||||
|
|||||||
32
jobs/job.go
32
jobs/job.go
@@ -266,25 +266,13 @@ func (j *Job) Run() {
|
|||||||
log.Status = models.TASK_ERROR
|
log.Status = models.TASK_ERROR
|
||||||
log.Error = err.Error() + ":" + cmdErr
|
log.Error = err.Error() + ":" + cmdErr
|
||||||
}
|
}
|
||||||
fmt.Println()
|
|
||||||
fmt.Println()
|
|
||||||
fmt.Println(log.Status, j.task.IsNotify)
|
|
||||||
|
|
||||||
if log.Status < 0 && j.task.IsNotify == 1 {
|
if log.Status < 0 && j.task.IsNotify == 1 {
|
||||||
fmt.Println()
|
|
||||||
fmt.Println()
|
|
||||||
fmt.Println(j.task.NotifyUserIds)
|
|
||||||
|
|
||||||
fmt.Println()
|
|
||||||
|
|
||||||
fmt.Println(j.task.NotifyUserIds != "0")
|
|
||||||
fmt.Println(j.task.NotifyUserIds != "")
|
|
||||||
if j.task.NotifyUserIds != "0" && j.task.NotifyUserIds != "" {
|
if j.task.NotifyUserIds != "0" && j.task.NotifyUserIds != "" {
|
||||||
admin_info := AllAdminInfo(j.task.NotifyUserIds)
|
adminInfo := AllAdminInfo(j.task.NotifyUserIds)
|
||||||
fmt.Println("ADMIN:", admin_info)
|
|
||||||
phone := make([]string, 0)
|
phone := make([]string, 0)
|
||||||
toEmail := ""
|
toEmail := ""
|
||||||
for _, v := range admin_info {
|
for _, v := range adminInfo {
|
||||||
if v.Phone != "0" && v.Phone != "" {
|
if v.Phone != "0" && v.Phone != "" {
|
||||||
phone = append(phone, v.Phone)
|
phone = append(phone, v.Phone)
|
||||||
}
|
}
|
||||||
@@ -294,9 +282,6 @@ func (j *Job) Run() {
|
|||||||
}
|
}
|
||||||
toEmail = strings.TrimRight(toEmail, ";")
|
toEmail = strings.TrimRight(toEmail, ";")
|
||||||
|
|
||||||
fmt.Println("EMAIL:", toEmail)
|
|
||||||
fmt.Println("TYPE:", j.task.NotifyType)
|
|
||||||
|
|
||||||
TextStatus := []string{
|
TextStatus := []string{
|
||||||
"<font color='red'>超时</font>",
|
"<font color='red'>超时</font>",
|
||||||
"<font color='red'>错误</font>",
|
"<font color='red'>错误</font>",
|
||||||
@@ -342,9 +327,18 @@ func (j *Job) Run() {
|
|||||||
fmt.Println("发送邮件错误", toEmail)
|
fmt.Println("发送邮件错误", toEmail)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if j.task.NotifyType == 1 {
|
} else if j.task.NotifyType == 1 && len(phone) > 0 {
|
||||||
//信息
|
//信息
|
||||||
|
TextStatus := []string{
|
||||||
|
" 超时",
|
||||||
|
" 错误",
|
||||||
|
" 正常",
|
||||||
|
}
|
||||||
|
param := make(map[string]string)
|
||||||
|
param["task_id"] = " " + strconv.Itoa(j.task.Id)
|
||||||
|
param["task_name"] = " " + j.task.TaskName
|
||||||
|
param["status"] = " " + TextStatus[status]
|
||||||
|
notify.SendSmsToChan(phone, param)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
58
libs/http.go
Normal file
58
libs/http.go
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/************************************************************
|
||||||
|
** @Description: libs
|
||||||
|
** @Author: george hao
|
||||||
|
** @Date: 2018-08-09 13:29
|
||||||
|
** @Last Modified by: george hao
|
||||||
|
** @Last Modified time: 2018-08-09 13:29
|
||||||
|
*************************************************************/
|
||||||
|
package libs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AjaxReturn struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func HttpGet(url string, param map[string]string) error {
|
||||||
|
|
||||||
|
if url == "" {
|
||||||
|
return errors.Errorf("url %s is not exists", url)
|
||||||
|
}
|
||||||
|
paramStr := ""
|
||||||
|
for k, v := range param {
|
||||||
|
paramStr += k + "=" + v + "&"
|
||||||
|
}
|
||||||
|
paramStr = strings.TrimRight(paramStr, "&")
|
||||||
|
|
||||||
|
if paramStr != "" {
|
||||||
|
url += "?" + paramStr
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := http.Get(url)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
ajaxData := AjaxReturn{}
|
||||||
|
json.Unmarshal(body, &ajaxData)
|
||||||
|
if ajaxData.Status != 200 {
|
||||||
|
return errors.Errorf("msg %s", ajaxData.Message)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
71
notify/sms.go
Normal file
71
notify/sms.go
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
/************************************************************
|
||||||
|
** @Description: notify
|
||||||
|
** @Author: george hao
|
||||||
|
** @Date: 2018-08-09 13:05
|
||||||
|
** @Last Modified by: george hao
|
||||||
|
** @Last Modified time: 2018-08-09 13:05
|
||||||
|
*************************************************************/
|
||||||
|
package notify
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
"github.com/george518/PPGo_Job/libs"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Sms struct {
|
||||||
|
Mobiles []string
|
||||||
|
Param map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
var SmsChan chan *Sms
|
||||||
|
var SmsUrl string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SmsUrl = beego.AppConfig.String("msg.url")
|
||||||
|
poolSize, _ := beego.AppConfig.Int("msg.pool")
|
||||||
|
|
||||||
|
//创建通道
|
||||||
|
SmsChan = make(chan *Sms, poolSize)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case m, ok := <-SmsChan:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := m.SendSms(); err != nil {
|
||||||
|
beego.Error("SendSms:", err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func SendSmsToChan(mobiles []string, param map[string]string) bool {
|
||||||
|
sms := &Sms{
|
||||||
|
Mobiles: mobiles,
|
||||||
|
Param: param,
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case SmsChan <- sms:
|
||||||
|
return true
|
||||||
|
case <-time.After(time.Second * 3):
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Sms) SendSms() error {
|
||||||
|
for _, v := range s.Mobiles {
|
||||||
|
s.Param["mobile"] = v
|
||||||
|
err := libs.HttpGet(SmsUrl, s.Param)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>出错通知</td>
|
<td>出错通知</td>
|
||||||
<td>{{if eq .task.IsNotify 0}}否{{end}} {{if eq .task.IsNotify 1}}否{{end}}</td>
|
<td>{{if eq .task.IsNotify 0}}否{{end}} {{if eq .task.IsNotify 1}}是{{end}}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>输出大小</td>
|
<td>输出大小</td>
|
||||||
<td>{{.taskLog.ouput_size}}</td>
|
<td>{{.taskLog.output_size}}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user