七月迭代短暂完结,还有很多后端的关键东西没有弄,这是一版赶时间做的东西
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m26s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m26s
This commit is contained in:
45
internal/application/packageexpiry/reminder.go
Normal file
45
internal/application/packageexpiry/reminder.go
Normal file
@@ -0,0 +1,45 @@
|
||||
// Package packageexpiry 编排套餐临期节点提醒用例。
|
||||
package packageexpiry
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
||||
)
|
||||
|
||||
// ReminderScanner 查询当天命中临期节点的资产。
|
||||
type ReminderScanner interface {
|
||||
ReminderCandidates(ctx context.Context) ([]dto.ExpiringAssetItem, error)
|
||||
}
|
||||
|
||||
// ReminderPublisher 批量发布个人客户临期通知。
|
||||
type ReminderPublisher interface {
|
||||
Publish(ctx context.Context, candidates []dto.ExpiringAssetItem) error
|
||||
}
|
||||
|
||||
// ReminderService 扫描并发布每日套餐临期节点提醒。
|
||||
type ReminderService struct {
|
||||
scanner ReminderScanner
|
||||
publisher ReminderPublisher
|
||||
}
|
||||
|
||||
// NewReminderService 创建套餐临期提醒用例。
|
||||
func NewReminderService(scanner ReminderScanner, publisher ReminderPublisher) *ReminderService {
|
||||
return &ReminderService{scanner: scanner, publisher: publisher}
|
||||
}
|
||||
|
||||
// Run 执行当天 15、7、3 天节点扫描并可靠发布通知。
|
||||
func (s *ReminderService) Run(ctx context.Context) error {
|
||||
if s == nil || s.scanner == nil || s.publisher == nil {
|
||||
return errors.New(errors.CodeInternalError, "套餐临期提醒用例未配置")
|
||||
}
|
||||
candidates, err := s.scanner.ReminderCandidates(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(candidates) == 0 {
|
||||
return nil
|
||||
}
|
||||
return s.publisher.Publish(ctx, candidates)
|
||||
}
|
||||
Reference in New Issue
Block a user