fix
This commit is contained in:
@@ -291,12 +291,27 @@ func (s *ArticleApplicationServiceImpl) PublishArticleByID(ctx context.Context,
|
||||
return fmt.Errorf("文章不存在: %w", err)
|
||||
}
|
||||
|
||||
// 2. 发布文章
|
||||
// 2. 检查是否已取消定时发布
|
||||
if !article.IsScheduled() {
|
||||
s.logger.Info("文章定时发布已取消,跳过执行",
|
||||
zap.String("id", articleID),
|
||||
zap.String("status", string(article.Status)))
|
||||
return nil // 静默返回,不报错
|
||||
}
|
||||
|
||||
// 3. 检查定时发布时间是否匹配
|
||||
if article.ScheduledAt == nil {
|
||||
s.logger.Info("文章没有定时发布时间,跳过执行",
|
||||
zap.String("id", articleID))
|
||||
return nil
|
||||
}
|
||||
|
||||
// 4. 发布文章
|
||||
if err := article.Publish(); err != nil {
|
||||
return fmt.Errorf("发布文章失败: %w", err)
|
||||
}
|
||||
|
||||
// 3. 保存更新
|
||||
// 5. 保存更新
|
||||
if err := s.articleRepo.Update(ctx, article); err != nil {
|
||||
s.logger.Error("更新文章失败", zap.String("id", article.ID), zap.Error(err))
|
||||
return fmt.Errorf("发布文章失败: %w", err)
|
||||
@@ -740,6 +755,52 @@ func (s *ArticleApplicationServiceImpl) ListTags(ctx context.Context) (*response
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// UpdateSchedulePublishArticle 修改定时发布时间
|
||||
func (s *ArticleApplicationServiceImpl) UpdateSchedulePublishArticle(ctx context.Context, cmd *commands.SchedulePublishCommand) error {
|
||||
// 1. 解析定时发布时间
|
||||
scheduledTime, err := cmd.GetScheduledTime()
|
||||
if err != nil {
|
||||
s.logger.Error("解析定时发布时间失败", zap.String("scheduled_time", cmd.ScheduledTime), zap.Error(err))
|
||||
return fmt.Errorf("定时发布时间格式错误: %w", err)
|
||||
}
|
||||
|
||||
// 2. 获取文章
|
||||
article, err := s.articleRepo.GetByID(ctx, cmd.ID)
|
||||
if err != nil {
|
||||
s.logger.Error("获取文章失败", zap.String("id", cmd.ID), zap.Error(err))
|
||||
return fmt.Errorf("文章不存在: %w", err)
|
||||
}
|
||||
|
||||
// 3. 检查是否已设置定时发布
|
||||
if !article.IsScheduled() {
|
||||
return fmt.Errorf("文章未设置定时发布,无法修改时间")
|
||||
}
|
||||
|
||||
// 4. 重新调度定时发布任务
|
||||
newTaskID, err := s.asynqClient.RescheduleArticlePublish(ctx, cmd.ID, article.TaskID, scheduledTime)
|
||||
if err != nil {
|
||||
s.logger.Error("重新调度定时发布任务失败", zap.String("id", cmd.ID), zap.Error(err))
|
||||
return fmt.Errorf("修改定时发布时间失败: %w", err)
|
||||
}
|
||||
|
||||
// 5. 更新定时发布
|
||||
if err := article.UpdateSchedulePublish(scheduledTime, newTaskID); err != nil {
|
||||
return fmt.Errorf("更新定时发布失败: %w", err)
|
||||
}
|
||||
|
||||
// 6. 保存更新
|
||||
if err := s.articleRepo.Update(ctx, article); err != nil {
|
||||
s.logger.Error("更新文章失败", zap.String("id", article.ID), zap.Error(err))
|
||||
return fmt.Errorf("修改定时发布时间失败: %w", err)
|
||||
}
|
||||
|
||||
s.logger.Info("修改定时发布时间成功",
|
||||
zap.String("id", article.ID),
|
||||
zap.Time("new_scheduled_time", scheduledTime),
|
||||
zap.String("new_task_id", newTaskID))
|
||||
return nil
|
||||
}
|
||||
|
||||
// ==================== 验证方法 ====================
|
||||
|
||||
// validateCreateCategory 验证创建分类参数
|
||||
|
||||
Reference in New Issue
Block a user