From 270fea0c5dc736a5733611d27f4a4a8783ddfe67 Mon Sep 17 00:00:00 2001
From: xiaoxin <718949661@qq.com>
Date: Tue, 18 Mar 2025 14:41:06 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E3=80=90=E8=A7=A3=E5=86=B3=20TODO=20?=
=?UTF-8?q?=E3=80=91AI=20PPT=EF=BC=9A=E8=A7=A3=E5=86=B3=E4=B8=80=E4=BA=9B?=
=?UTF-8?q?=20TODO?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../{WddPptApi.java => WenDuoDuoPptApi.java} | 59 ++++++++-----------
.../{XunfeiPptApi.java => XunFeiPptApi.java} | 52 +++++++++-------
...piTests.java => WenDuoDuoPptApiTests.java} | 32 +++++-----
...ptApiTests.java => XunFeiPptApiTests.java} | 40 ++++++-------
4 files changed, 89 insertions(+), 94 deletions(-)
rename yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/{WddPptApi.java => WenDuoDuoPptApi.java} (88%)
rename yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/{XunfeiPptApi.java => XunFeiPptApi.java} (96%)
rename yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/{WddPptApiTests.java => WenDuoDuoPptApiTests.java} (91%)
rename yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/xunfei/{XunfeiPptApiTests.java => XunFeiPptApiTests.java} (90%)
diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WddPptApi.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WenDuoDuoPptApi.java
similarity index 88%
rename from yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WddPptApi.java
rename to yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WenDuoDuoPptApi.java
index c3757a73c0..b86fb53e93 100644
--- a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WddPptApi.java
+++ b/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WenDuoDuoPptApi.java
@@ -24,16 +24,15 @@ import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
-// TODO @新:要不改成 WenDuoDuoPptApi
+
/**
* 文多多 API
*
- * @see PPT 生成 API
- *
* @author xiaoxin
+ * @see PPT 生成 API
*/
@Slf4j
-public class WddPptApi {
+public class WenDuoDuoPptApi {
public static final String BASE_URL = "https://docmee.cn";
@@ -50,7 +49,7 @@ public class WddPptApi {
});
// TODO @新:是不是不用 baseUrl 哈
- public WddPptApi(String baseUrl) {
+ public WenDuoDuoPptApi(String baseUrl) {
this.webClient = WebClient.builder()
.baseUrl(baseUrl)
// TODO @新:建议,token 作为 defaultHeader
@@ -82,35 +81,14 @@ public class WddPptApi {
.block();
}
- // TODO @xin:是不是给个 API 连接,这样 type、content、files 都不用写注释太细了
/**
* 创建任务
*
* @param type 类型
- * 1.智能生成(主题、要求)
- * 2.上传文件生成
- * 3.上传思维导图生成
- * 4.通过word精准转ppt
- * 5.通过网页链接生成
- * 6.粘贴文本内容生成
- * 7.Markdown大纲生成
* @param content 内容
- * type=1 用户输入主题或要求(不超过1000字符)
- * type=2、4 不传
- * type=3 幕布等分享链接
- * type=5 网页链接地址(http/https)
- * type=6 粘贴文本内容(不超过20000字符)
- * type=7 大纲内容(markdown)
* @param files 文件列表
- * 文件列表(文件数不超过5个,总大小不超过50M):
- * type=1 上传参考文件(非必传,支持多个)
- * type=2 上传文件(支持多个)
- * type=3 上传思维导图(xmind/mm/md)(仅支持一个)
- * type=4 上传word文件(仅支持一个)
- * type=5、6、7 不传
- *
- * 支持格式:doc/docx/pdf/ppt/pptx/txt/md/xls/xlsx/csv/html/epub/mobi/xmind/mm
* @return 任务ID
+ * @see 创建任务
*/
public ApiResponse createTask(String token, Integer type, String content, List files) {
MultiValueMap formData = new LinkedMultiValueMap<>();
@@ -258,7 +236,8 @@ public class WddPptApi {
Integer code,
String message,
Map data
- ) { }
+ ) {
+ }
/**
* 创建任务
@@ -268,7 +247,8 @@ public class WddPptApi {
Integer type,
String content,
List files
- ) { }
+ ) {
+ }
/**
* 生成大纲内容请求
@@ -281,7 +261,8 @@ public class WddPptApi {
String audience,
String lang,
String prompt
- ) { }
+ ) {
+ }
/**
* 修改大纲内容请求
@@ -291,7 +272,8 @@ public class WddPptApi {
String id,
String markdown,
String question
- ) { }
+ ) {
+ }
/**
* 生成 PPT 请求
@@ -302,7 +284,8 @@ public class WddPptApi {
String id,
String templateId,
String markdown
- ) { }
+ ) {
+ }
// TODO @新:要不写下类注释
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@@ -323,7 +306,8 @@ public class WddPptApi {
LocalDateTime createTime,
String createUser,
String updateUser
- ) { }
+ ) {
+ }
// TODO @新:要不写下类注释
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@@ -339,7 +323,8 @@ public class WddPptApi {
String category,
String style,
String themeColor
- ) { }
+ ) {
+ }
}
@@ -348,7 +333,8 @@ public class WddPptApi {
public record PagePptTemplateInfo(
List data,
String total
- ) {}
+ ) {
+ }
// TODO @新:要不写下类注释
@@ -380,6 +366,7 @@ public class WddPptApi {
LocalDateTime createTime,
String createUser,
String updateUser
- ) { }
+ ) {
+ }
}
\ No newline at end of file
diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunfeiPptApi.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunFeiPptApi.java
similarity index 96%
rename from yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunfeiPptApi.java
rename to yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunFeiPptApi.java
index c3320ef21c..60ce4335a2 100644
--- a/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunfeiPptApi.java
+++ b/yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/xinghuo/api/XunFeiPptApi.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.framework.ai.core.model.xinghuo.api;
+import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.extern.slf4j.Slf4j;
@@ -28,16 +29,16 @@ import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;
-// TODO @新:要不改成 XunFeiPptApi
+
+
/**
* 讯飞智能 PPT 生成 API
*
- * @see 智能 PPT 生成 API
- *
* @author xiaoxin
+ * @see 智能 PPT 生成 API
*/
@Slf4j
-public class XunfeiPptApi {
+public class XunFeiPptApi {
public static final String BASE_URL = "https://zwapi.xfyun.cn/api/ppt/v2";
@@ -54,7 +55,7 @@ public class XunfeiPptApi {
});
// TODO @新:是不是不用 baseUrl 哈
- public XunfeiPptApi(String baseUrl, String appId, String apiSecret) {
+ public XunFeiPptApi(String baseUrl, String appId, String apiSecret) {
// TODO @新:建议,增加 defaultheaders,例如说 appid 之类的;或者每个请求,通过 headers customer 处理。
this.webClient = WebClient.builder()
.baseUrl(baseUrl)
@@ -134,8 +135,7 @@ public class XunfeiPptApi {
SignatureInfo signInfo = getSignature();
Map requestBody = new HashMap<>();
requestBody.put("style", style);
- // TODO @新:可以使用 ObjUtil.defaultIfNull
- requestBody.put("pageSize", pageSize != null ? pageSize : 10);
+ requestBody.put("pageSize", ObjUtil.defaultIfNull(pageSize, 20));
return this.webClient.post()
.uri("/template/list")
.header("appId", signInfo.appId)
@@ -288,7 +288,8 @@ public class XunfeiPptApi {
String appId,
String timestamp,
String signature
- ) { }
+ ) {
+ }
/**
* 模板列表响应
@@ -300,7 +301,8 @@ public class XunfeiPptApi {
String desc,
Integer count,
TemplatePageData data
- ) { }
+ ) {
+ }
/**
* 模板列表数据
@@ -310,7 +312,8 @@ public class XunfeiPptApi {
String total,
List records,
Integer pageNum
- ) { }
+ ) {
+ }
/**
* 模板信息
@@ -324,7 +327,8 @@ public class XunfeiPptApi {
String industry,
String style,
String detailImage
- ) { }
+ ) {
+ }
/**
* 创建响应
@@ -336,7 +340,8 @@ public class XunfeiPptApi {
String desc,
Integer count,
CreateResponseData data
- ) { }
+ ) {
+ }
/**
* 创建响应数据
@@ -348,7 +353,8 @@ public class XunfeiPptApi {
String title,
String subTitle,
OutlineData outline
- ) { }
+ ) {
+ }
/**
* 大纲数据结构
@@ -375,7 +381,8 @@ public class XunfeiPptApi {
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public record ChapterContent(
String chapterTitle
- ) { }
+ ) {
+ }
}
@@ -397,7 +404,8 @@ public class XunfeiPptApi {
int code,
String desc,
ProgressResponseData data
- ) { }
+ ) {
+ }
/**
* 进度响应数据
@@ -407,13 +415,12 @@ public class XunfeiPptApi {
int process,
String pptId,
String pptUrl,
- // TODO @新:字段注释,去掉
- String pptStatus, // PPT构建状态:building(构建中),done(已完成),build_failed(生成失败)
- String aiImageStatus, // ai配图状态:building(构建中),done(已完成)
- String cardNoteStatus, // 演讲备注状态:building(构建中),done(已完成)
- String errMsg, // 生成PPT的失败信息
- Integer totalPages, // 生成PPT的总页数
- Integer donePages // 生成PPT的完成页数
+ String pptStatus,
+ String aiImageStatus,
+ String cardNoteStatus,
+ String errMsg,
+ Integer totalPages,
+ Integer donePages
) {
/**
@@ -480,6 +487,7 @@ public class XunfeiPptApi {
}
// TODO @新:这个可以用 lombok 简化么?
+
/**
* 构建器类
*/
diff --git a/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WddPptApiTests.java b/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WenDuoDuoPptApiTests.java
similarity index 91%
rename from yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WddPptApiTests.java
rename to yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WenDuoDuoPptApiTests.java
index 3bb9898ad8..15ba7840bd 100644
--- a/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WddPptApiTests.java
+++ b/yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WenDuoDuoPptApiTests.java
@@ -1,6 +1,6 @@
package cn.iocoder.yudao.framework.ai.ppt.wdd;
-import cn.iocoder.yudao.framework.ai.core.model.wenduoduo.api.WddPptApi;
+import cn.iocoder.yudao.framework.ai.core.model.wenduoduo.api.WenDuoDuoPptApi;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -10,13 +10,13 @@ import java.util.Map;
import java.util.Objects;
/**
- * {@link WddPptApi} 集成测试
+ * {@link WenDuoDuoPptApi} 集成测试
*
* @author xiaoxin
*/
-public class WddPptApiTests {
+public class WenDuoDuoPptApiTests {
- private final WddPptApi wddPptApi = new WddPptApi("https://docmee.cn");
+ private final WenDuoDuoPptApi wenDuoDuoPptApi = new WenDuoDuoPptApi("https://docmee.cn");
private final String token = ""; // API Token
@@ -25,9 +25,9 @@ public class WddPptApiTests {
public void testCreateApiToken() {
// 准备参数
String apiKey = "";
- WddPptApi.CreateTokenRequest request = new WddPptApi.CreateTokenRequest(apiKey);
+ WenDuoDuoPptApi.CreateTokenRequest request = new WenDuoDuoPptApi.CreateTokenRequest(apiKey);
// 调用方法
- String token = wddPptApi.createApiToken(request);
+ String token = wenDuoDuoPptApi.createApiToken(request);
// 打印结果
System.out.println(token);
}
@@ -38,7 +38,7 @@ public class WddPptApiTests {
@Test
@Disabled
public void testCreateTask() {
- WddPptApi.ApiResponse apiResponse = wddPptApi.createTask(token, 1, "dify 介绍", null);
+ WenDuoDuoPptApi.ApiResponse apiResponse = wenDuoDuoPptApi.createTask(token, 1, "dify 介绍", null);
System.out.println(apiResponse);
}
@@ -46,10 +46,10 @@ public class WddPptApiTests {
@Test // 创建大纲
@Disabled
public void testGenerateOutlineRequest() {
- WddPptApi.CreateOutlineRequest request = new WddPptApi.CreateOutlineRequest(
+ WenDuoDuoPptApi.CreateOutlineRequest request = new WenDuoDuoPptApi.CreateOutlineRequest(
"1901539019628613632", "medium", null, null, null, null);
// 调用
- Flux