审查视图

pkg/application/notify/sms_summary_evaluation.go 2.4 KB
tangxvhui authored
1 2 3
package notify

import (
tangxvhui authored
4 5
	"time"
tangxvhui authored
6
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
tangxvhui authored
7
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/constant"
tangxvhui authored
8 9 10 11 12
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)

// 周期评估短信通知
// 条件:周期自评结束前4个小时,且还未完成评估填写
tangxvhui authored
13
type notifySummaryEvaluation struct {
tangxvhui authored
14 15
}
tangxvhui authored
16 17
var _ notifySendOrNot = (*notifySummaryEvaluation)(nil)
tangxvhui authored
18
func (notices notifySummaryEvaluation) from() string {
tangxvhui authored
19 20 21
	return "SummaryEvaluation"
}
tangxvhui authored
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
// makeNotify 生成待执行的短信通知内容
func (notices notifySummaryEvaluation) makeNotify(param *domain.SummaryEvaluation) *domain.LogSms {
	newSms := domain.LogSms{
		Id:         0,
		Phone:      param.Executor.Account,
		TemplateId: 5536232,
		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(),
	}
	// 周期自评结束前4个小时,
tangxvhui authored
40 41 42 43 44
	// newSms.ExecuteAt = param.EndTime.Add(-4 * time.Hour)
	//改为 固定在截止时间 那天的 前一天晚上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)
tangxvhui authored
45
	return &newSms
tangxvhui authored
46 47
}
tangxvhui authored
48
// ifSend 确认是否发送通知
tangxvhui authored
49
func (notices notifySummaryEvaluation) ifSend(index int) (bool, error) {
tangxvhui authored
50 51 52
	if constant.Env != "prd" {
		return false, nil
	}
53 54 55 56 57
	nowDay := time.Now().Weekday()
	if nowDay == time.Sunday || nowDay == time.Saturday {
		//周末不发
		return false, nil
	}
tangxvhui authored
58 59
	transactionContext, err := factory.CreateTransactionContext(nil)
	if err != nil {
tangxvhui authored
60
		return false, err
tangxvhui authored
61 62
	}
	if err := transactionContext.StartTransaction(); err != nil {
tangxvhui authored
63
		return false, err
tangxvhui authored
64 65 66 67
	}
	defer func() {
		_ = transactionContext.RollbackTransaction()
	}()
tangxvhui authored
68 69
	summaryEvaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext})
	summaryEvaluationData, err := summaryEvaluationRepo.FindOne(map[string]interface{}{"id": index})
tangxvhui authored
70
	if err != nil {
tangxvhui authored
71 72 73 74 75
		return false, err
	}
	//还未完成评估填写,时发送短信
	if summaryEvaluationData.Status == domain.EvaluationUncompleted {
		return true, nil
tangxvhui authored
76 77
	}
	if err := transactionContext.CommitTransaction(); err != nil {
tangxvhui authored
78
		return false, err
tangxvhui authored
79
	}
tangxvhui authored
80
	return false, nil
tangxvhui authored
81
}