You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
package free_trial
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"cls/internal/domain/article"
|
|
|
|
|
"cls/internal/domain/free_trial"
|
|
|
|
|
"cls/pkg/logger"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// FreeTrialService 免费试读服务
|
|
|
|
|
type FreeTrialService struct {
|
|
|
|
|
repo free_trial.FreeTrialRepository
|
|
|
|
|
articleService article.ArticleRepository
|
|
|
|
|
log logger.Logger
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NewFreeTrialService 创建免费试读服务
|
|
|
|
|
func NewFreeTrialService(repo free_trial.FreeTrialRepository, articleService article.ArticleRepository, log logger.New) *FreeTrialService {
|
|
|
|
|
return &FreeTrialService{
|
|
|
|
|
repo: repo,
|
|
|
|
|
articleService: articleService,
|
|
|
|
|
log: log("cls:service:free_trial"),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *FreeTrialService) SaveFreeTrial(dto *FreeTrialDto) error {
|
|
|
|
|
articleData, err := f.articleService.GetArticleById(dto.Fid)
|
|
|
|
|
if err != nil {
|
|
|
|
|
f.log.Error(err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t := time.Unix(articleData.Ctime, 0) // 秒数和纳秒数,0 表示没有纳秒部分
|
|
|
|
|
err = f.repo.Save(&free_trial.FreeTrial{
|
|
|
|
|
ArticleID: articleData.Id,
|
|
|
|
|
AdminID: dto.Adid,
|
|
|
|
|
Ctime: t,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
f.log.Error(err)
|
|
|
|
|
}
|
|
|
|
|
return err
|
|
|
|
|
}
|