添加邮件通知。

This commit is contained in:
Mr. Lan 2020-07-25 21:51:30 +08:00
parent 9f3e66e50f
commit c2c9576ac0
4 changed files with 65 additions and 20 deletions

View File

@ -213,9 +213,11 @@ func CreateWorkOrder(c *gin.Context) {
SendTo: map[string]interface{}{ SendTo: map[string]interface{}{
"userList": sendToUserList, "userList": sendToUserList,
}, },
Subject: "您有一条待办工单,请及时处理。", Subject: "您有一条待办工单,请及时处理",
Description: "您有一条待办工单请及时处理,工单描述如下",
Classify: noticeList, Classify: noticeList,
Id: workOrderValue.Id, ProcessId: workOrderValue.Process,
Id: workOrderInfo.Id,
Title: workOrderValue.Title, Title: workOrderValue.Title,
Creator: userInfo.NickName, Creator: userInfo.NickName,
Priority: workOrderValue.Priority, Priority: workOrderValue.Priority,

View File

@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"ferry/models/system" "ferry/models/system"
"ferry/pkg/notify/email" "ferry/pkg/notify/email"
"os"
"text/template" "text/template"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@ -26,6 +25,8 @@ type BodyData struct {
PriorityValue string // 工单优先级 PriorityValue string // 工单优先级
CreatedAt string // 工单创建时间 CreatedAt string // 工单创建时间
Content string // 通知的内容 Content string // 通知的内容
Description string // 表格上面的描述信息
ProcessId int // 流程ID
} }
func (b *BodyData) ParsingTemplate() (err error) { func (b *BodyData) ParsingTemplate() (err error) {
@ -34,7 +35,6 @@ func (b *BodyData) ParsingTemplate() (err error) {
buf bytes.Buffer buf bytes.Buffer
) )
log.Info(os.Getwd())
tmpl, err := template.ParseFiles("./pkg/notify/template/email.html") tmpl, err := template.ParseFiles("./pkg/notify/template/email.html")
if err != nil { if err != nil {
return return
@ -68,7 +68,9 @@ func (b *BodyData) SendNotify() {
for _, c := range b.Classify { for _, c := range b.Classify {
switch c { switch c {
case 1: // 邮件 case 1: // 邮件
for _, user := range b.SendTo.(map[string]interface{})["userList"].([]system.SysUser) { users := b.SendTo.(map[string]interface{})["userList"].([]system.SysUser)
if len(users) > 0 {
for _, user := range users {
emailList = append(emailList, user.Email) emailList = append(emailList, user.Email)
} }
err = b.ParsingTemplate() err = b.ParsingTemplate()
@ -79,4 +81,5 @@ func (b *BodyData) SendNotify() {
go email.SendMail(emailList, b.Subject, b.Content) go email.SendMail(emailList, b.Subject, b.Content)
} }
} }
}
} }

View File

@ -6,7 +6,7 @@
</head> </head>
<body> <body>
<br> <br>
您有一条待办工单请及时处理,以下为工单详情 {{ .Description }}
<br> <br>
<br> <br>
<table> <table>
@ -29,7 +29,7 @@
</table> </table>
<br> <br>
<a href="" target="_blank">点击此处跳转工单详情</a> <a href="http://localhost:9527/#/process/handle-ticket?workOrderId={{ .Id }}&processId={{ .ProcessId }}" target="_blank">点击此处跳转工单详情</a>
</body> </body>
<style> <style>
table { table {

View File

@ -7,6 +7,7 @@ import (
"ferry/models/base" "ferry/models/base"
"ferry/models/process" "ferry/models/process"
"ferry/models/system" "ferry/models/system"
"ferry/pkg/notify"
"ferry/tools" "ferry/tools"
"ferry/tools/app" "ferry/tools/app"
"fmt" "fmt"
@ -338,6 +339,11 @@ func (h *Handle) HandleWorkOrder(
parallelStatusOk bool parallelStatusOk bool
processInfo process.Info processInfo process.Info
currentUserInfo system.SysUser currentUserInfo system.SysUser
sendToUserList []system.SysUser
noticeList []int
stateList []map[string]interface{}
sendSubject string = "您有一条待办工单,请及时处理"
sendDescription string = "您有一条待办工单请及时处理,工单描述如下"
) )
defer func() { defer func() {
@ -651,9 +657,10 @@ func (h *Handle) HandleWorkOrder(
h.tx.Rollback() h.tx.Rollback()
return return
} }
// 判断目标是否是结束节点 // 判断目标是否是结束节点
if h.targetStateValue["clazz"] == "end" && h.endHistory == true { if h.targetStateValue["clazz"] == "end" && h.endHistory == true {
sendSubject = "您的工单已完成"
sendDescription = "您的工单已完成,工单描述如下"
err = h.tx.Create(&process.CirculationHistory{ err = h.tx.Create(&process.CirculationHistory{
Model: base.Model{}, Model: base.Model{},
Title: h.workOrderDetails.Title, Title: h.workOrderDetails.Title,
@ -672,6 +679,39 @@ func (h *Handle) HandleWorkOrder(
h.tx.Commit() // 提交事务 h.tx.Commit() // 提交事务
// 发送通知
err = json.Unmarshal(processInfo.Notice, &noticeList)
if err != nil {
app.Error(c, -1, err, "")
return
}
if len(noticeList) > 0 {
sendToUserList, err = GetPrincipalUserInfo(stateList, h.workOrderDetails.Creator)
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("获取所有处理人的用户信息失败,%v", err.Error()))
return
}
// 发送通知
go func() {
bodyData := notify.BodyData{
SendTo: map[string]interface{}{
"userList": sendToUserList,
},
Subject: sendSubject,
Description: sendDescription,
Classify: noticeList,
ProcessId: h.workOrderDetails.Process,
Id: h.workOrderDetails.Id,
Title: h.workOrderDetails.Title,
Creator: currentUserInfo.NickName,
Priority: h.workOrderDetails.Priority,
CreatedAt: h.workOrderDetails.CreatedAt.Format("2006-01-02 15:04:05"),
}
bodyData.SendNotify()
}()
}
// 执行流程公共任务及节点任务 // 执行流程公共任务及节点任务
if h.stateValue["task"] != nil { if h.stateValue["task"] != nil {
for _, task := range h.stateValue["task"].([]interface{}) { for _, task := range h.stateValue["task"].([]interface{}) {