Commit 0d78ac63 authored by szh's avatar szh

add emailhistory

parent d87dcb1d
...@@ -40,5 +40,6 @@ require ( ...@@ -40,5 +40,6 @@ require (
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a // indirect golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a // indirect
google.golang.org/grpc v1.23.1 google.golang.org/grpc v1.23.1
gopkg.in/go-playground/validator.v8 v8.18.2 gopkg.in/go-playground/validator.v8 v8.18.2
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/yaml.v2 v2.2.2 gopkg.in/yaml.v2 v2.2.2
) )
...@@ -43,6 +43,7 @@ github.com/dgrijalva/jwt-go v0.0.0-20171019215719-dbeaa9332f19/go.mod h1:E3ru+11 ...@@ -43,6 +43,7 @@ github.com/dgrijalva/jwt-go v0.0.0-20171019215719-dbeaa9332f19/go.mod h1:E3ru+11
github.com/dgryski/go-farm v0.0.0-20180109070241-2de33835d102/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20180109070241-2de33835d102/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 h1:6VSn3hB5U5GeA6kQw4TwWIWbOhtvR2hmbBJnTOtqTWc=
github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6/go.mod h1:YxOVT5+yHzKvwhsiSIWmbAYM3Dr9AEEbER2dVayfBkg= github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6/go.mod h1:YxOVT5+yHzKvwhsiSIWmbAYM3Dr9AEEbER2dVayfBkg=
github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7 h1:AzN37oI0cOS+cougNAV9szl6CVoj2RYwzS3DpUQNtlY= github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7 h1:AzN37oI0cOS+cougNAV9szl6CVoj2RYwzS3DpUQNtlY=
github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
...@@ -190,6 +191,8 @@ gopkg.in/go-playground/validator.v8 v8.0.0-20170730050235-5f1438d3fca6/go.mod h1 ...@@ -190,6 +191,8 @@ gopkg.in/go-playground/validator.v8 v8.0.0-20170730050235-5f1438d3fca6/go.mod h1
gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ= gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/go-playground/webhooks.v5 v5.2.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ= gopkg.in/go-playground/webhooks.v5 v5.2.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
gopkg.in/natefinch/lumberjack.v2 v2.0.0-20170531160350-a96e63847dc3/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.0.0-20170531160350-a96e63847dc3/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk=
......
package models
type RaspEmailHistory struct {
//Model
Id int64 `json:"id" gorm:"PRIMARY_KEY"`
Addr string `json:"addr"`
Date string `json:"date"`
Error string `json:"error"`
}
func AddEmailHistory(rasp *RaspEmailHistory) error {
return db.Create(rasp).Error
}
func CheckEmailToday(rasp *RaspEmailHistory) bool {
var email RaspEmailHistory
return db.Model(&email).Where("addr = ? and date = ?",rasp.Addr,rasp.Date).First(&email).RecordNotFound()
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ var JobChan chan MsgType ...@@ -4,6 +4,7 @@ var JobChan chan MsgType
type MsgType struct { type MsgType struct {
Name string Name string
Addr string
Email string Email string
} }
......
...@@ -12,6 +12,7 @@ import ( ...@@ -12,6 +12,7 @@ import (
"sync" "sync"
"time" "time"
"strings" "strings"
"chain33-pai/pkg/util"
) )
func GennerPort()(port,daemonPort int,err error){ func GennerPort()(port,daemonPort int,err error){
...@@ -187,6 +188,10 @@ func SendMailIfNodeError() error { ...@@ -187,6 +188,10 @@ func SendMailIfNodeError() error {
if v.NodeStatus == 1 { if v.NodeStatus == 1 {
continue continue
} }
//一天只发一次
if !models.CheckEmailToday(&models.RaspEmailHistory{Addr:v.Addr,Date:util.GetMonthDay()}) {
continue
}
if v.NodeStatus == 0 && v.Email != "" {//节点未启动 if v.NodeStatus == 0 && v.Email != "" {//节点未启动
fmt.Println(NODEERROR,"addr=",v.Addr,"email=",v.Email) fmt.Println(NODEERROR,"addr=",v.Addr,"email=",v.Email)
JobChan <- MsgType{Name:NODEERROR,Email:v.Email} JobChan <- MsgType{Name:NODEERROR,Email:v.Email}
......
...@@ -3,6 +3,8 @@ package app ...@@ -3,6 +3,8 @@ package app
import ( import (
"chain33-pai/pkg/email" "chain33-pai/pkg/email"
"fmt" "fmt"
"chain33-pai/models"
"chain33-pai/pkg/util"
) )
const ( const (
...@@ -13,12 +15,16 @@ const ( ...@@ -13,12 +15,16 @@ const (
var mailMsg = map[string]string{ var mailMsg = map[string]string{
"NODEERROR":"节点不能正常启动,请联系技术远程排查问题", "NODEERROR":"节点不能正常启动,请联系技术远程排查问题",
"NETWORKERROR":"网络出现异常,请排查家里网络是否正常上网以及网线接口是否松动", "NETWORKERROR":"网络出现异常,请排查家里网络是否正常上网以及网线接口是否松动",
"NODENOTSYNC":"节点不同步,尝试排查网络,一键回滚,一键恢复,重置节点等功能", "NODENOTSYNC":"节点不同步,尝试排查网络,一键回滚,一键恢复等功能",
} }
func EmailJob() error { func EmailJob() error {
for { for {
for v:= range JobChan { for v:= range JobChan {
var rasp models.RaspEmailHistory
rasp.Date = util.GetMonthDay()
rasp.Addr = v.Addr
rasp.Error = v.Name
switch v.Name { switch v.Name {
case NODEERROR: case NODEERROR:
err := email.SendToMail(mailMsg[NODEERROR],v.Email) err := email.SendToMail(mailMsg[NODEERROR],v.Email)
...@@ -36,6 +42,7 @@ func EmailJob() error { ...@@ -36,6 +42,7 @@ func EmailJob() error {
fmt.Println("SendToMail",err) fmt.Println("SendToMail",err)
} }
} }
models.AddEmailHistory(&rasp)
} }
} }
} }
...@@ -41,5 +41,9 @@ func GetLocalIP() (ipv4 *net.IPNet, err error) { ...@@ -41,5 +41,9 @@ func GetLocalIP() (ipv4 *net.IPNet, err error) {
} }
func GetMonthDate() string { func GetMonthDate() string {
return time.Now().Format("2006-1") return time.Now().Format("2006-01")
}
func GetMonthDay() string {
return time.Now().Format("2006-01-02")
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment