package notify import ( "time" "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" ) // 每日自评短信通知 type notifyStaffAssess struct { } 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) return &newSms } // ifSend 确认是否发送通知 func (notices notifyStaffAssess) ifSend(index int) (bool, error) { 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 }