diff --git a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/media/BatchProduceAlignment.java b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/media/BatchProduceAlignment.java
index 4cf95ae3b3..ff7906d949 100644
--- a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/media/BatchProduceAlignment.java
+++ b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/media/BatchProduceAlignment.java
@@ -2,13 +2,11 @@ package cn.iocoder.yudao.module.tik.media;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.tik.file.service.TikOssInitService;
+import cn.iocoder.yudao.module.tik.mix.client.IceClient;
import cn.iocoder.yudao.module.tik.mix.config.IceProperties;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
-import com.aliyun.teaopenapi.models.Config;
-import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -16,301 +14,162 @@ import cn.iocoder.yudao.module.tik.mix.vo.MixTaskSaveReqVO;
import java.util.*;
-// 成功视频
-// http://oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/ice_output/46b29eb5775f4f758846171ab79bfca7.mp4
-
/**
- * 需要maven引入二方包依赖:
- *
+ * 职责:将素材列表构建为 ICE Timeline JSON,委托 {@link IceClient} 提交任务。 + *
+ * 架构原则: + *
+ * 设计原则: + *
+ * 供 {@link cn.iocoder.yudao.module.tik.media.BatchProduceAlignment} 等 + * 需要自定义 Timeline 构建逻辑的上层组件调用。 + * + * @param request 已填充 timeline 和 outputMediaConfig 的请求对象 + * @return ICE 任务 ID(jobId) */ - public String submitMediaProducingJob(String timeline, String outputMediaConfig) { + public String submitJob(SubmitMediaProducingJobRequest request) { try { - Client client = getClient(); - SubmitMediaProducingJobRequest request = new SubmitMediaProducingJobRequest(); - request.setTimeline(timeline); - request.setOutputMediaConfig(outputMediaConfig); - - SubmitMediaProducingJobResponse response = client.submitMediaProducingJob(request); + SubmitMediaProducingJobResponse response = getClient().submitMediaProducingJob(request); String jobId = response.getBody().getJobId(); - - log.info("[ICE][提交任务成功][jobId={}]", jobId); + log.info("[ICE][提交成功] jobId={}", jobId); return jobId; - } catch (Exception e) { - log.error("[ICE][提交任务失败]", e); + log.error("[ICE][提交失败]", e); throw exception0(VOICE_TTS_FAILED.getCode(), "ICE 提交任务失败: " + e.getMessage()); } } /** - * 查询媒体制作任务状态 + * 提交媒体制作任务(便捷方法,接受字符串参数) + * + * @param timeline 时间线 JSON + * @param outputMediaConfig 输出媒体配置 JSON + * @return ICE 任务 ID(jobId) */ - public String getMediaProducingJobStatus(String jobId) { + public String submitJob(String timeline, String outputMediaConfig) { + SubmitMediaProducingJobRequest request = new SubmitMediaProducingJobRequest(); + request.setTimeline(timeline); + request.setOutputMediaConfig(outputMediaConfig); + return submitJob(request); + } + + /** + * 查询媒体制作任务状态 + * + * @param jobId ICE 任务 ID + * @return 任务状态:Success / Failed / Running / Pending 等 + */ + public String getJobStatus(String jobId) { try { - Client client = getClient(); GetMediaProducingJobRequest request = new GetMediaProducingJobRequest(); request.setJobId(jobId); - GetMediaProducingJobResponse response = client.getMediaProducingJob(request); + GetMediaProducingJobResponse response = getClient().getMediaProducingJob(request); String status = response.getBody().getMediaProducingJob().getStatus(); - log.debug("[ICE][查询任务状态][jobId={}, status={}]", jobId, status); + log.debug("[ICE][状态查询] jobId={}, status={}", jobId, status); return status; } catch (Exception e) { - log.error("[ICE][查询任务状态失败][jobId={}]", jobId, e); + log.error("[ICE][状态查询失败] jobId={}", jobId, e); throw exception0(VOICE_TTS_FAILED.getCode(), "ICE 查询任务状态失败: " + e.getMessage()); } } + + /* ════════════════════════════════════════════════════════════════════════════ + * 历史兼容方法(逐步废弃) + * ════════════════════════════════════════════════════════════════════════════ */ + + /** + * @deprecated 请使用 {@link #submitJob(String, String)} + */ + @Deprecated + public String submitMediaProducingJob(String timeline, String outputMediaConfig) { + return submitJob(timeline, outputMediaConfig); + } + + /** + * @deprecated 请使用 {@link #getJobStatus(String)} + */ + @Deprecated + public String getMediaProducingJobStatus(String jobId) { + return getJobStatus(jobId); + } } diff --git a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/service/MixTaskServiceImpl.java b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/service/MixTaskServiceImpl.java index 69d2fe08c1..ff5a0cf61f 100644 --- a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/service/MixTaskServiceImpl.java +++ b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/service/MixTaskServiceImpl.java @@ -384,7 +384,7 @@ public class MixTaskServiceImpl implements MixTaskService { for (String jobId : jobIds) { try { - String status = iceClient.getMediaProducingJobStatus(jobId); + String status = iceClient.getJobStatus(jobId); log.debug("[MixTask][jobId状态] taskId={}, jobId={}, status={}", taskId, jobId, status); if ("Success".equalsIgnoreCase(status)) { successJobIds.add(jobId);