sms_staff_assess.go
3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package notify
import (
"time"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/constant"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)
// 每日自评短信通知
type notifyStaffAssess struct {
}
var _ notifySendOrNot = (*notifyStaffAssess)(nil)
func (notices notifyStaffAssess) from() string {
return "StaffAssess"
}
// makeNotify 生成待执行的短信通知内容
// func (notices notifyStaffAssess) makeNotify(param *domain.StaffAssess) *domain.LogSms {
// newSms := domain.LogSms{
// Id: 0,
// Phone: param.Executor.Account,
// TemplateId: 5475050,
// Template: "您好,#name#,百忙之中不要忘记填写今天的绩效自评反馈哦",
// Value: map[string]string{
// "name": param.Executor.UserName,
// },
// Result: "",
// Status: domain.SmsWait,
// From: notices.from(),
// Index: param.Id,
// // ExecuteAt: executeAt,
// CreatedAt: time.Now(),
// }
// // 每日自评 结束前30 分钟
// // newSms.ExecuteAt = param.EndTime.Add(-1800 * time.Second)
// //改为 固定在截止时间 那天的 前一天晚上10
// y, m, d := param.EndTime.Local().Date()
// dayTime := time.Date(y, m, d, 0, 0, 0, 0, time.Local)
// newSms.ExecuteAt = dayTime.Add(-2 * time.Hour)
// return &newSms
// }
//
// makeNotify 生成待执行的短信通知内容
func (notices notifyStaffAssess) makeNotify(param *domain.StaffAssess) *domain.LogSms {
year, month, dayNumber := param.BeginTime.Local().Date()
// 限制只有 在每月的15号进行每日评估填报时,才进行短信消息提醒
if dayNumber != 15 {
return nil
}
// 每月15日的每日评估必做,未填写的在晚上10点下发短信提醒
dayTime := time.Date(year, month, dayNumber, 22, 0, 0, 0, time.Local)
newSms := domain.LogSms{
Id: 0,
Phone: param.Executor.Account,
TemplateId: 5824230,
Template: "您好,#name#,百忙之中不要忘记填写#date#的绩效自评反馈哦",
Value: map[string]string{
"name": param.Executor.UserName,
"date": "本月15日",
},
Result: "",
Status: domain.SmsWait,
From: notices.from(),
Index: param.Id,
ExecuteAt: dayTime,
CreatedAt: time.Now(),
}
return &newSms
}
// ifSend 确认是否发送通知
func (notices notifyStaffAssess) ifSend(index int) (bool, error) {
if constant.Env != "prd" {
return false, nil
}
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
return false, err
}
if err := transactionContext.StartTransaction(); err != nil {
return false, err
}
defer func() {
_ = transactionContext.RollbackTransaction()
}()
staffAssessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{"transactionContext": transactionContext})
assessData, err := staffAssessRepo.FindOne(map[string]interface{}{"id": index})
if err != nil {
return false, err
}
//还未完成评估填写,时发送短信
if assessData.Status == domain.StaffAssessUncompleted {
return true, nil
}
if err := transactionContext.CommitTransaction(); err != nil {
return false, err
}
return false, nil
}