|
|
package notify
|
|
|
|
|
|
import (
|
|
|
"time"
|
|
|
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
|
|
|
)
|
|
|
|
|
|
// 短信提醒确认周期评估成绩
|
|
|
// 条件:上级提交评估后 到10号晚23:59前,对未确认的被评估人每隔6个小时进行提醒(23:00-7:00期间不提醒),直到确认
|
|
|
type notifyConfirmEvaluationScore struct {
|
|
|
}
|
|
|
|
|
|
var _ notifySendOrNot = (*notifyConfirmEvaluationScore)(nil)
|
|
|
|
|
|
func (notices notifyConfirmEvaluationScore) from() string {
|
|
|
return "ConfirmEvaluationScore"
|
|
|
}
|
|
|
|
|
|
func (notices notifyConfirmEvaluationScore) makeNotify(param *domain.SummaryEvaluation) *domain.LogSms {
|
|
|
newSms := domain.LogSms{
|
|
|
Id: 0,
|
|
|
Phone: param.Executor.Account,
|
|
|
TemplateId: 5475050,
|
|
|
Template: "您好,#name#,#periodName#成绩已出,请前往绩效系统PC端进行确认哦,逾期未确认可能会影响当月绩效工资哦~ ",
|
|
|
Value: map[string]string{
|
|
|
"name": param.Executor.UserName,
|
|
|
"periodName": param.CycleName,
|
|
|
},
|
|
|
Result: "",
|
|
|
Status: domain.SmsWait,
|
|
|
From: notices.from(),
|
|
|
Index: param.Id,
|
|
|
ExecuteAt: notices.getTimeExecuteAt(time.Now()),
|
|
|
CreatedAt: time.Now(),
|
|
|
}
|
|
|
return &newSms
|
|
|
}
|
|
|
|
|
|
func (notices notifyConfirmEvaluationScore) ifSend(index int) (bool, error) {
|
|
|
//检查时间
|
|
|
//适配规则:上级提交评估后 到10号晚23:59前,可以发送
|
|
|
|
|
|
//检查数据 SummaryEvaluation ,types=5,并添加短信数据
|
|
|
//适配规则 对未确认的被评估人每隔6个小时进行提醒(23:00-7:00期间不提醒),直到确认
|
|
|
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
// 输入的时间为基础微调短信的执行时间
|
|
|
// 适配规则 :(23:00-7:00期间不提醒)
|
|
|
func (notices notifyConfirmEvaluationScore) getTimeExecuteAt(nowTime time.Time) time.Time {
|
|
|
nowHour := nowTime.Local().Hour()
|
|
|
if nowHour < 23 && nowHour > 7 {
|
|
|
return nowTime
|
|
|
}
|
|
|
year, month, day := nowTime.Local().Date()
|
|
|
//微调执行时间
|
|
|
if nowHour >= 23 {
|
|
|
//第二天:7:00
|
|
|
t1 := time.Date(year, month, day, 23, 59, 59, 0, time.Local)
|
|
|
return t1.Add(7 * time.Hour)
|
|
|
}
|
|
|
if nowHour <= 7 {
|
|
|
//当天 7:00
|
|
|
t1 := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
|
|
|
return t1.Add(7 * time.Hour)
|
|
|
}
|
|
|
return nowTime
|
|
|
} |
...
|
...
|
|