From a8cb38154bbb4b982bcb11cad3f6ead7b1a51d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B0=E4=BA=AE?= Date: Tue, 5 Nov 2019 19:50:59 +0800 Subject: [PATCH] optimized code --- app/route/middleware/exception/exception.go | 11 ++++++++- app/route/middleware/logger/logger.go | 3 +-- app/route/middleware/requestid/requestid.go | 4 +-- app/util/error/error.go | 18 +++++++++++--- app/util/grpc_log/grpc_log.go | 2 +- app/util/json/json.go | 2 +- app/util/mail/mail.go | 27 ++++++++++++--------- 7 files changed, 45 insertions(+), 22 deletions(-) diff --git a/app/route/middleware/exception/exception.go b/app/route/middleware/exception/exception.go index 8171f158..e5eb5ec1 100644 --- a/app/route/middleware/exception/exception.go +++ b/app/route/middleware/exception/exception.go @@ -31,7 +31,16 @@ func SetUp() gin.HandlerFunc { body = strings.ReplaceAll(body, "{RequestIP}", c.ClientIP()) body = strings.ReplaceAll(body, "{DebugStack}", DebugStack) - _ = mail.SendMail(config.ErrorNotifyUser, subject, body) + options := &mail.Options{ + MailHost : config.SystemEmailHost, + MailPort : config.SystemEmailPort, + MailUser : config.SystemEmailUser, + MailPass : config.SystemEmailPass, + MailTo : config.ErrorNotifyUser, + Subject : subject, + Body : body, + } + _ = mail.Send(options) utilGin := response.Gin{Ctx: c} utilGin.Response(500, "系统异常,请联系管理员!", nil) diff --git a/app/route/middleware/logger/logger.go b/app/route/middleware/logger/logger.go index 18ada5c1..86772cf8 100644 --- a/app/route/middleware/logger/logger.go +++ b/app/route/middleware/logger/logger.go @@ -86,8 +86,7 @@ func SetUp() gin.HandlerFunc { accessLogMap["cost_time"] = fmt.Sprintf("%vms", endTime-startTime) - accessLogJson, _ := jsonUtil.JsonEncode(accessLogMap) - + accessLogJson, _ := jsonUtil.Encode(accessLogMap) accessChannel <- accessLogJson } } diff --git a/app/route/middleware/requestid/requestid.go b/app/route/middleware/requestid/requestid.go index 92d55dc4..1d931d6e 100644 --- a/app/route/middleware/requestid/requestid.go +++ b/app/route/middleware/requestid/requestid.go @@ -2,7 +2,7 @@ package requestid import ( "github.com/gin-gonic/gin" - "go-gin-api/app/util" + "go-gin-api/app/util/uuid" ) func SetUp() gin.HandlerFunc { @@ -10,7 +10,7 @@ func SetUp() gin.HandlerFunc { return func(c *gin.Context) { requestId := c.Request.Header.Get("X-Request-Id") if requestId == "" { - requestId = util.GenUUID() + requestId = uuid.GenUUID() } c.Set("X-Request-Id", requestId) c.Writer.Header().Set("X-Request-Id", requestId) diff --git a/app/util/error/error.go b/app/util/error/error.go index cd4c004a..c9e5daf9 100644 --- a/app/util/error/error.go +++ b/app/util/error/error.go @@ -5,7 +5,8 @@ import ( "go-gin-api/app/config" "go-gin-api/app/route/middleware/exception" "go-gin-api/app/util/json" - time2 "go-gin-api/app/util/time" + "go-gin-api/app/util/mail" + timeUtil "go-gin-api/app/util/time" "log" "os" "runtime/debug" @@ -55,14 +56,23 @@ func alarm(level string, str string) { subject := fmt.Sprintf("【系统告警】%s 项目出错了!", config.AppName) body := strings.ReplaceAll(exception.MailTemplate, "{ErrorMsg}", fmt.Sprintf("%s", str)) - body = strings.ReplaceAll(body, "{RequestTime}", time2.GetCurrentDate()) + body = strings.ReplaceAll(body, "{RequestTime}", timeUtil.GetCurrentDate()) body = strings.ReplaceAll(body, "{RequestURL}", "--") body = strings.ReplaceAll(body, "{RequestUA}", "--") body = strings.ReplaceAll(body, "{RequestIP}", "--") body = strings.ReplaceAll(body, "{DebugStack}", DebugStack) // 执行发邮件 - _ = SendMail(config.ErrorNotifyUser, subject, body) + options := &mail.Options{ + MailHost : config.SystemEmailHost, + MailPort : config.SystemEmailPort, + MailUser : config.SystemEmailUser, + MailPass : config.SystemEmailPass, + MailTo : config.ErrorNotifyUser, + Subject : subject, + Body : body, + } + _ = mail.Send(options) } else if level == "SMS" { // 执行发短信 @@ -80,7 +90,7 @@ func alarm(level string, str string) { errorLogMap["time"] = time.Now().Format("2006/01/02 - 15:04:05") errorLogMap["info"] = str - errorLogJson, _ := json.JsonEncode(errorLogMap) + errorLogJson, _ := json.Encode(errorLogMap) _, _ = f.WriteString(errorLogJson + "\n") } } diff --git a/app/util/grpc_log/grpc_log.go b/app/util/grpc_log/grpc_log.go index f39f4ecd..9cb77cba 100644 --- a/app/util/grpc_log/grpc_log.go +++ b/app/util/grpc_log/grpc_log.go @@ -41,7 +41,7 @@ func ClientInterceptor() grpc.UnaryClientInterceptor { grpcLogMap["cost_time"] = fmt.Sprintf("%vms", endTime-startTime) - grpcLogJson, _ := json.JsonEncode(grpcLogMap) + grpcLogJson, _ := json.Encode(grpcLogMap) grpcChannel <- grpcLogJson diff --git a/app/util/json/json.go b/app/util/json/json.go index 2a0dc6a5..86515469 100644 --- a/app/util/json/json.go +++ b/app/util/json/json.go @@ -2,7 +2,7 @@ package json import "encoding/json" -func JsonEncode(v interface{}) (string, error) { +func Encode(v interface{}) (string, error) { bytes, err := json.Marshal(v) if err != nil { return "", err diff --git a/app/util/mail/mail.go b/app/util/mail/mail.go index e8475849..b89f0943 100644 --- a/app/util/mail/mail.go +++ b/app/util/mail/mail.go @@ -2,33 +2,38 @@ package mail import ( "fmt" - "go-gin-api/app/config" "gopkg.in/gomail.v2" "strings" ) -func SendMail(mailTo string, subject string, body string) error { - - if config.ErrorNotifyOpen != 1 { - return nil - } +type Options struct { + MailHost string + MailPort int + MailUser string // 发件人 + MailPass string // 发件人密码 + MailTo string // 收件人 多个用,分割 + Subject string // 邮件主题 + Body string // 邮件内容 +} + +func Send(o *Options) error { m := gomail.NewMessage() //设置发件人 - m.SetHeader("From", config.SystemEmailUser) + m.SetHeader("From", o.MailUser) //设置发送给多个用户 - mailArrTo := strings.Split(mailTo, ",") + mailArrTo := strings.Split(o.MailTo, ",") m.SetHeader("To", mailArrTo...) //设置邮件主题 - m.SetHeader("Subject", subject) + m.SetHeader("Subject", o.Subject) //设置邮件正文 - m.SetBody("text/html", body) + m.SetBody("text/html", o.Body) - d := gomail.NewDialer(config.SystemEmailHost, config.SystemEmailPort, config.SystemEmailUser, config.SystemEmailPass) + d := gomail.NewDialer(o.MailHost, o.MailPort, o.MailUser, o.MailPass) err := d.DialAndSend(m) if err != nil {