From 45c7606884037299ea54d3f256640fb61118990e Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Tue, 13 May 2025 10:32:15 +0800 Subject: [PATCH] 'commit' --- .../aiSupport/Util/KeLing/Kit/KlCommon.java | 25 ++++++- .../aiSupport/Util/KeLing/KlImg2Video.java | 72 +------------------ .../aiSupport/Util/KeLing/KlText2Video.java | 19 +---- .../{KlText2Img.java => KlTxt2Img.java} | 23 ++---- .../target/classes/SetMinioDownload.json | 18 +++++ .../target/classes/application_dev.yaml | 70 ++++++++++++++++++ .../target/classes/application_pro.yaml | 70 ++++++++++++++++++ dsAiSupport/target/classes/logback.xml | 36 ++++++++++ dsAiSupport/target/classes/logo.txt | 11 +++ .../target/classes/postman-doc.json.ftl | 37 ++++++++++ .../target/classes/undertow.properties | 34 +++++++++ 11 files changed, 307 insertions(+), 108 deletions(-) rename dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/{KlText2Img.java => KlTxt2Img.java} (90%) create mode 100644 dsAiSupport/target/classes/SetMinioDownload.json create mode 100644 dsAiSupport/target/classes/application_dev.yaml create mode 100644 dsAiSupport/target/classes/application_pro.yaml create mode 100644 dsAiSupport/target/classes/logback.xml create mode 100644 dsAiSupport/target/classes/logo.txt create mode 100644 dsAiSupport/target/classes/postman-doc.json.ftl create mode 100644 dsAiSupport/target/classes/undertow.properties diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/Kit/KlCommon.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/Kit/KlCommon.java index 78ca1441..77a85f71 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/Kit/KlCommon.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/Kit/KlCommon.java @@ -4,7 +4,12 @@ import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.dsideal.aiSupport.Plugin.YamlProp; import com.jfinal.kit.Prop; +import cn.hutool.core.io.FileUtil; +import cn.hutool.http.HttpUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -12,6 +17,7 @@ import java.util.Map; import static com.dsideal.aiSupport.AiSupportApplication.getEnvPrefix; public class KlCommon { + private static final Logger log = LoggerFactory.getLogger(KlCommon.class); // 获取项目根目录路径 protected static String projectRoot = System.getProperty("user.dir").replace("\\","/")+"/dsAiSupport"; // 拼接相对路径 @@ -47,5 +53,22 @@ public class KlCommon { return null; } } - + + /** + * 从URL下载文件到指定路径 + * + * @param fileUrl 文件URL + * @param saveFilePath 保存路径 + * @throws Exception 下载过程中的异常 + */ + public static void downloadFile(String fileUrl, String saveFilePath) throws Exception { + try { + // 使用Hutool下载文件 + long fileSize = HttpUtil.downloadFile(fileUrl, FileUtil.file(saveFilePath)); + log.info("文件下载成功,保存路径: {}, 文件大小: {}字节", saveFilePath, fileSize); + } catch (Exception e) { + log.error("文件下载失败: {}", e.getMessage(), e); + throw new Exception("文件下载失败: " + e.getMessage(), e); + } + } } diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlImg2Video.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlImg2Video.java index df9c7652..0f60e888 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlImg2Video.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlImg2Video.java @@ -3,7 +3,6 @@ package com.dsideal.aiSupport.Util.KeLing; import cn.hutool.core.io.FileUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -25,18 +24,6 @@ public class KlImg2Video extends KlCommon { private static final String GENERATION_PATH = "/v1/videos/image2video"; private static final String QUERY_PATH = "/v1/videos/image2video/"; - /** - * 生成视频(使用图片URL) - * - * @param imageUrl 图片URL - * @param modelName 模型名称,枚举值:kling-v1, kling-v1-5, kling-v1-6 - * @return 任务ID - * @throws Exception 异常信息 - */ - public static String generateVideo(String imageUrl, String modelName) throws Exception { - return generateVideo(imageUrl, modelName, null); - } - /** * 生成视频(使用图片URL) * @@ -141,63 +128,8 @@ public class KlImg2Video extends KlCommon { return responseJson; } - - /** - * 查询任务状态(通过外部任务ID) - * - * @param externalTaskId 外部任务ID - * @return 任务结果 - * @throws Exception 异常信息 - */ - public static JSONObject queryTaskStatusByExternalId(String externalTaskId) throws Exception { - // 获取JWT令牌 - String jwt = getJwt(); - - // 使用Hutool发送GET请求 - HttpResponse response = HttpRequest.get(BASE_URL + GENERATION_PATH + "?external_task_id=" + externalTaskId) - .header("Content-Type", "application/json") - .header("Authorization", "Bearer " + jwt) - .execute(); - - // 检查响应状态码 - if (response.getStatus() != 200) { - throw new Exception("请求失败,状态码:" + response.getStatus()); - } - - // 解析响应 - String responseBody = response.body(); - JSONObject responseJson = JSONUtil.parseObj(responseBody); - log.info("查询任务状态响应:{}", responseBody); - - // 检查响应状态 - int code = responseJson.getInt("code"); - if (code != 0) { - String message = responseJson.getStr("message"); - String solution = KlErrorCode.getSolutionByCode(code); - String errorMsg = String.format("查询任务状态失败:[%d] %s - %s", code, message, solution); - throw new Exception(errorMsg); - } - - return responseJson; - } - - /** - * 从URL下载文件到指定路径 - * - * @param fileUrl 文件URL - * @param saveFilePath 保存路径 - * @throws Exception 下载过程中的异常 - */ - public static void downloadFile(String fileUrl, String saveFilePath) throws Exception { - try { - // 使用Hutool下载文件 - long fileSize = HttpUtil.downloadFile(fileUrl, FileUtil.file(saveFilePath)); - log.info("文件下载成功,保存路径: {}, 文件大小: {}字节", saveFilePath, fileSize); - } catch (Exception e) { - log.error("文件下载失败: {}", e.getMessage(), e); - throw e; - } - } + + // 下载函数已移至KlCommon类 public static void main(String[] args) throws Exception { // 获取项目根目录路径 diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Video.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Video.java index 9db121f8..95d9ff8b 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Video.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Video.java @@ -1,9 +1,7 @@ package com.dsideal.aiSupport.Util.KeLing; -import cn.hutool.core.io.FileUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -130,22 +128,7 @@ public class KlText2Video extends KlCommon { return responseJson; } - /** - * 从URL下载文件到指定路径 - * - * @param fileUrl 文件URL - * @param saveFilePath 保存路径 - */ - public static void downloadFile(String fileUrl, String saveFilePath) { - try { - // 使用Hutool下载文件 - long fileSize = HttpUtil.downloadFile(fileUrl, FileUtil.file(saveFilePath)); - log.info("文件下载成功,保存路径: {}, 文件大小: {}字节", saveFilePath, fileSize); - } catch (Exception e) { - log.error("文件下载失败: {}", e.getMessage(), e); - throw e; - } - } + // 下载函数已移至KlCommon类 public static void main(String[] args) throws Exception { // 提示词和模型名称 diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Img.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlTxt2Img.java similarity index 90% rename from dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Img.java rename to dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlTxt2Img.java index 09705826..c993a170 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlText2Img.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/KeLing/KlTxt2Img.java @@ -15,8 +15,8 @@ import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; -public class KlText2Img extends KlCommon { - private static final Logger log = LoggerFactory.getLogger(KlText2Img.class); +public class KlTxt2Img extends KlCommon { + private static final Logger log = LoggerFactory.getLogger(KlTxt2Img.class); private static final String BASE_URL = "https://api.klingai.com"; private static final String GENERATION_PATH = "/v1/images/generations"; private static final String QUERY_PATH = "/v1/images/generations/"; @@ -119,22 +119,7 @@ public class KlText2Img extends KlCommon { return responseJson; } - /** - * 从URL下载文件到指定路径 - * - * @param fileUrl 文件URL - * @param saveFilePath 保存路径 - */ - public static void downloadFile(String fileUrl, String saveFilePath) { - try { - // 使用Hutool下载文件 - long fileSize = HttpUtil.downloadFile(fileUrl, FileUtil.file(saveFilePath)); - log.info("文件下载成功,保存路径: {}, 文件大小: {}字节", saveFilePath, fileSize); - } catch (Exception e) { - log.error("文件下载失败: {}", e.getMessage(), e); - throw e; - } - } + // 下载函数已移至KlCommon类 public static void main(String[] args) throws Exception { // 提示词和模型名称 @@ -149,7 +134,7 @@ public class KlText2Img extends KlCommon { String taskId = null; boolean accountIssue = false; - while (generateRetryCount < maxGenerateRetries && !accountIssue) { + while (!accountIssue) { try { taskId = generateImage(prompt, modelName); break; diff --git a/dsAiSupport/target/classes/SetMinioDownload.json b/dsAiSupport/target/classes/SetMinioDownload.json new file mode 100644 index 00000000..5955e673 --- /dev/null +++ b/dsAiSupport/target/classes/SetMinioDownload.json @@ -0,0 +1,18 @@ +{ + "Version": "2012-10-17", + "Statement": [{ + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetBucketLocation", "s3:ListBucket"], + "Resource": ["arn:aws:s3:::dsideal"] + }, { + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetObject"], + "Resource": ["arn:aws:s3:::dsideal/*"] + }] +} \ No newline at end of file diff --git a/dsAiSupport/target/classes/application_dev.yaml b/dsAiSupport/target/classes/application_dev.yaml new file mode 100644 index 00000000..0286e0a5 --- /dev/null +++ b/dsAiSupport/target/classes/application_dev.yaml @@ -0,0 +1,70 @@ +# 上传文件的临时路径 +uploadTempPath: c:/Windows/Temp +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +# 数据库信息 +mysql: + driverClassName: com.mysql.cj.jdbc.Driver + user: ylt + password: Ycharge666 + jdbcUrl: jdbc:mysql://10.10.14.210:22066/base_db?reWriteBatchedInserts=true + +# redis +redis: + ip: 10.10.14.14 + port: 18890 + +# JWT +jwt: + SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + +minio: + endpoint: http://10.10.14.210:9000 + accessKey: AOxWewe7pywwEc1NQeP6 + secretKey: EiLaKLpLW6OHmjPxvMLBD11Zu3xtV1tdZU9PFVYO + bucketName: dsideal + url: http://10.10.14.210:9000/dsideal + +# 网关配置 +gateway: + # 超时配置(毫秒) + timeout: + connect: 10000 + read: 30000 + write: 30000 + + # 连接池配置 + connection: + max: 5 + keep-alive: 300 + + # 安全配置 + security: + cors: + allowed-origins: "*" # 或者具体的域名列表,如 "http://localhost:8080,https://your-domain.com" + allowed-methods: "GET,POST,OPTIONS" + allowed-headers: "Content-Type,Authorization,Cookie" + allow-credentials: true + max-age: 3600 +# ============================================================== + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + +# 即梦 +JiMeng: + # Access Key ID + ak: AKLTZjVlOGU1NzA1YWZkNDExMzkzYzY5YTNlOTRmMTMxODg + # Secret Access Key + sk: WkdabU9UTXdNVEJpTmpWbE5HVTJZVGxtTnpWbU5XSTBaRGN5TW1NMk5tRQ== + +# 可灵 +KeLing: + # Access Key ID + ak: c992fd02624d4900a93ca3b6da03d9e9 + # Secret Access Key + sk: b37f67a00eb44f9bb57e4d530c328e1d diff --git a/dsAiSupport/target/classes/application_pro.yaml b/dsAiSupport/target/classes/application_pro.yaml new file mode 100644 index 00000000..5f29bea4 --- /dev/null +++ b/dsAiSupport/target/classes/application_pro.yaml @@ -0,0 +1,70 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +# 数据库信息 +mysql: + driverClassName: com.mysql.cj.jdbc.Driver + user: ylt + password: Ycharge666 + jdbcUrl: jdbc:mysql://10.10.14.210:22066/base_db?reWriteBatchedInserts=true + +# redis +redis: + ip: 10.10.14.14 + port: 18890 + +# JWT +jwt: + SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + +minio: + endpoint: http://10.10.14.210:9000 + accessKey: AOxWewe7pywwEc1NQeP6 + secretKey: EiLaKLpLW6OHmjPxvMLBD11Zu3xtV1tdZU9PFVYO + bucketName: dsideal + url: http://10.10.14.210:9000/dsideal + +# 网关配置 +gateway: + # 超时配置(毫秒) + timeout: + connect: 10000 + read: 30000 + write: 30000 + + # 连接池配置 + connection: + max: 5 + keep-alive: 300 + + # 安全配置 + security: + cors: + allowed-origins: "*" # 或者具体的域名列表,如 "http://localhost:8080,https://your-domain.com" + allowed-methods: "GET,POST,OPTIONS" + allowed-headers: "Content-Type,Authorization,Cookie" + allow-credentials: true + max-age: 3600 +# ============================================================== + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + +# 即梦 +JiMeng: + # Access Key ID + ak: AKLTZjVlOGU1NzA1YWZkNDExMzkzYzY5YTNlOTRmMTMxODg + # Secret Access Key + sk: WkdabU9UTXdNVEJpTmpWbE5HVTJZVGxtTnpWbU5XSTBaRGN5TW1NMk5tRQ== + +# 可灵 +KeLing: + # Access Key ID + ak: c992fd02624d4900a93ca3b6da03d9e9 + # Secret Access Key + sk: b37f67a00eb44f9bb57e4d530c328e1d \ No newline at end of file diff --git a/dsAiSupport/target/classes/logback.xml b/dsAiSupport/target/classes/logback.xml new file mode 100644 index 00000000..62595c75 --- /dev/null +++ b/dsAiSupport/target/classes/logback.xml @@ -0,0 +1,36 @@ + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + + + ${LOG_HOME}/application.log + + ${LOG_HOME}/application.%d{yyyy-MM-dd}.log + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + + + + + + + + + + \ No newline at end of file diff --git a/dsAiSupport/target/classes/logo.txt b/dsAiSupport/target/classes/logo.txt new file mode 100644 index 00000000..b48587cd --- /dev/null +++ b/dsAiSupport/target/classes/logo.txt @@ -0,0 +1,11 @@ + + $$\ $$$$$$$\ + $$ | $$ __$$\ + $$$$$$$ | $$$$$$$\ $$ | $$ | $$$$$$\ $$$$$$$\ +$$ __$$ |$$ _____|$$$$$$$ |$$ __$$\ $$ _____| +$$ / $$ |\$$$$$$\ $$ __$$< $$$$$$$$ |\$$$$$$\ +$$ | $$ | \____$$\ $$ | $$ |$$ ____| \____$$\ +\$$$$$$$ |$$$$$$$ |$$ | $$ |\$$$$$$$\ $$$$$$$ | + \_______|\_______/ \__| \__| \_______|\_______/ + +power by http://patorjk.com/software/taag/ \ No newline at end of file diff --git a/dsAiSupport/target/classes/postman-doc.json.ftl b/dsAiSupport/target/classes/postman-doc.json.ftl new file mode 100644 index 00000000..4ce6ceee --- /dev/null +++ b/dsAiSupport/target/classes/postman-doc.json.ftl @@ -0,0 +1,37 @@ +{ +"info": { +"_postman_id": "", +"name": "${projectName}", +"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" +}, +"item": [ +<#list controllerNodes as controller> + { + "name": "${controller.description}", + "item": [ + <#list controller.requestNodes as reqNode> + { + "name": "${reqNode.description}", + "request": { + "url": { + "raw": "{{domain}}${reqNode.url}", + "query": [ + <#if reqNode.paramNodes?size != 0> + <#list reqNode.paramNodes as paramNode> + { + "key": "${paramNode.name}", + "value": "", + "description": "${paramNode.description}" + }<#if paramNode_has_next>, + + + ] + } + } + }<#if reqNode_has_next>, + + ] + }<#if controller_has_next>, + +] +} \ No newline at end of file diff --git a/dsAiSupport/target/classes/undertow.properties b/dsAiSupport/target/classes/undertow.properties new file mode 100644 index 00000000..f3c54a2e --- /dev/null +++ b/dsAiSupport/target/classes/undertow.properties @@ -0,0 +1,34 @@ +# true 值支持热加载 +undertow.devMode=true +undertow.port=8002 +undertow.host=0.0.0.0 + +# 目录名称 +undertow.contextPath=/dsRes + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# 查询当前某程序的线程或进程数 +# yum install psmisc -y +# ps -e | grep java | awk '{print $1} +# pstree -p 15453 | wc -l + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=true +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + +# ssl 开启时,是否开启 http2。检测该配置是否生效在 chrome 地址栏中输入: chrome://net-internals/#http2 +#undertow.http2.enable=true + +#http://www.jfinal.com/doc/1-4