Browse Source

Dev 接入可灵

tsurumure 3 months ago
parent
commit
ba6608bf8b
32 changed files with 215 additions and 61 deletions
  1. 7 0
      pom.xml
  2. 1 1
      src/main/java/com/backendsys/config/HttpExchange/__HttpActuatorDTO.java
  3. 1 1
      src/main/java/com/backendsys/config/HttpExchange/__HttpActuatorService.java
  4. 2 2
      src/main/java/com/backendsys/config/Interceptor/TranslationInterceptor.java
  5. 1 1
      src/main/java/com/backendsys/config/Kaptcha/KaptchaConfig.java
  6. 1 1
      src/main/java/com/backendsys/config/Serializer/JsonConfig.java
  7. 2 2
      src/main/java/com/backendsys/config/Serializer/MyBeanSerializerModifier.java
  8. 4 4
      src/main/java/com/backendsys/exception/DuplicateKeyExceptionHandler.java
  9. 1 1
      src/main/java/com/backendsys/modules/TestController.java
  10. 1 1
      src/main/java/com/backendsys/modules/ai/media/entity/MediaTtv.java
  11. 2 2
      src/main/java/com/backendsys/modules/ai/media/service/impl/MediaTtvServiceImpl.java
  12. 1 1
      src/main/java/com/backendsys/modules/common/config/redis/RedissonConfig.java
  13. 12 12
      src/main/java/com/backendsys/modules/common/config/security/CorsConfig.java
  14. 1 1
      src/main/java/com/backendsys/modules/common/config/security/SecurityConfig.java
  15. 1 1
      src/main/java/com/backendsys/modules/common/config/security/annotations/AnonymousProperties.java
  16. 1 1
      src/main/java/com/backendsys/modules/common/config/security/handler/__CustomLogoutHandler.java
  17. 1 1
      src/main/java/com/backendsys/modules/common/config/security/service/impl/CustomUserDetailsServiceImpl.java
  18. 3 3
      src/main/java/com/backendsys/modules/common/config/security/utils/PermissionUtil.java
  19. 3 3
      src/main/java/com/backendsys/modules/sdk/baidu/bce/service/impl/BaiduBceMediaServiceImpl.java
  20. 1 1
      src/main/java/com/backendsys/modules/sdk/deepseek/controller/DeepSeekController.java
  21. 22 0
      src/main/java/com/backendsys/modules/sdk/klingai/config/KLingAiConfig.java
  22. 22 0
      src/main/java/com/backendsys/modules/sdk/klingai/controller/KLingDemoController.java
  23. 8 0
      src/main/java/com/backendsys/modules/sdk/klingai/service/KLingAiService.java
  24. 71 0
      src/main/java/com/backendsys/modules/sdk/klingai/service/impl/KLingAiServiceImpl.java
  25. 1 1
      src/main/java/com/backendsys/service/Ai/Aizn/AiznModelServiceImpl.java
  26. 5 5
      src/main/java/com/backendsys/service/SDKService/SDKBaidu/SDKBaiduAiGenerateVideoServiceImpl.java
  27. 9 9
      src/main/java/com/backendsys/service/SDKService/SDKTencent/SDKTencentCOSServiceImpl.java
  28. 1 1
      src/main/java/com/backendsys/utils/CommonUtil.java
  29. 9 1
      src/main/resources/application-dev.yml
  30. 8 0
      src/main/resources/application-local.yml
  31. 9 1
      src/main/resources/application-prod.yml
  32. 3 3
      src/main/resources/application.yml

+ 7 - 0
pom.xml

@@ -105,6 +105,13 @@
             <version>0.12.5</version>
         </dependency>
 
+        <!-- JWT (高并发版本)-->
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>4.5.0</version>
+        </dependency>
+
         <!-- Http远程访问 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 1 - 1
src/main/java/com/backendsys/config/HttpExchange/__HttpActuatorDTO.java

@@ -1,4 +1,4 @@
-//package com.backendsys.config.HttpExchange;
+//package com.backendsys.KLingAiConfig.HttpExchange;
 //
 //import jakarta.validation.constraints.NotNull;
 //import lombok.Data;

+ 1 - 1
src/main/java/com/backendsys/config/HttpExchange/__HttpActuatorService.java

@@ -1,4 +1,4 @@
-//package com.backendsys.config.HttpExchange;
+//package com.backendsys.KLingAiConfig.HttpExchange;
 //
 //import org.springframework.http.MediaType;
 //import org.springframework.web.bind.aspect.PathVariable;

+ 2 - 2
src/main/java/com/backendsys/config/Interceptor/TranslationInterceptor.java

@@ -1,6 +1,6 @@
-// package com.backendsys.config.Interceptor;
+// package com.backendsys.KLingAiConfig.Interceptor;
 
-// import com.backendsys.modules.common.config.Security.utils.TokenUtil;
+// import com.backendsys.modules.common.KLingAiConfig.Security.utils.TokenUtil;
 // import jakarta.servlet.http.Cookie;
 // import jakarta.servlet.http.HttpServletRequest;
 // import jakarta.servlet.http.HttpServletResponse;

+ 1 - 1
src/main/java/com/backendsys/config/Kaptcha/KaptchaConfig.java

@@ -76,7 +76,7 @@ public class KaptchaConfig extends HttpServlet {
         // 文字距离
         // properties.setProperty("kaptcha.textproducer.char.space","16");
         // 自定义验证码背景
-        properties.setProperty("kaptcha.background.impl", "com.backendsys.config.Kaptcha.KaptchaNoBackhround");
+        properties.setProperty("kaptcha.background.impl", "com.backendsys.KLingAiConfig.Kaptcha.KaptchaNoBackhround");
 
         Config config = new Config(properties);
         // 使用默认的图形验证码实现,当然也可以自定义实现

+ 1 - 1
src/main/java/com/backendsys/config/Serializer/JsonConfig.java

@@ -1,4 +1,4 @@
-//package com.backendsys.config.Serializer;
+//package com.backendsys.KLingAiConfig.Serializer;
 //
 //import com.fasterxml.jackson.databind.ObjectMapper;
 //import org.springframework.context.aspect.Bean;

+ 2 - 2
src/main/java/com/backendsys/config/Serializer/MyBeanSerializerModifier.java

@@ -1,4 +1,4 @@
-//package com.backendsys.config.Serializer;
+//package com.backendsys.KLingAiConfig.Serializer;
 //
 //import com.fasterxml.jackson.databind.BeanDescription;
 //import com.fasterxml.jackson.databind.JsonSerializer;
@@ -17,7 +17,7 @@
 //    private JsonSerializer _nullJsonSerializer = new MyNullJsonSerializer();
 //
 //    @Override
-//    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
+//    public List<BeanPropertyWriter> changeProperties(SerializationConfig KLingAiConfig, BeanDescription beanDesc,
 //                                                     List beanProperties) {
 //        //循环所有的beanPropertyWriter
 //        for (int i = 0; i < beanProperties.size(); i++) {

+ 4 - 4
src/main/java/com/backendsys/exception/DuplicateKeyExceptionHandler.java

@@ -27,9 +27,9 @@ public class DuplicateKeyExceptionHandler {
 
         //// [yml] 读取配置文件中的字段名和友好提示的对应关系
         //Yaml yaml = new Yaml();
-        //Map<String, Object> config = null;
+        //Map<String, Object> KLingAiConfig = null;
         //try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.yml")) {
-        //    config = yaml.load(inputStream);
+        //    KLingAiConfig = yaml.load(inputStream);
         //} catch (IOException ex) {
         //    // 处理配置文件读取错误
         //    ex.printStackTrace();
@@ -37,8 +37,8 @@ public class DuplicateKeyExceptionHandler {
 
         //// [friendlyMessage] 获得自定义友好提示 (application.yml -> fieldMappings)
         //String friendlyMessage = null;
-        //if (config != null && config.containsKey("fieldMappings")) {
-        //    Map<String, Object> fieldMappings = (Map<String, Object>) config.get("fieldMappings");
+        //if (KLingAiConfig != null && KLingAiConfig.containsKey("fieldMappings")) {
+        //    Map<String, Object> fieldMappings = (Map<String, Object>) KLingAiConfig.get("fieldMappings");
         //    for (Map.Entry<String, Object> entry : fieldMappings.entrySet()) {
         //        String fieldKey = entry.getKey();
         //        if (errorMessage.contains(fieldKey)) {

+ 1 - 1
src/main/java/com/backendsys/modules/TestController.java

@@ -642,7 +642,7 @@ public class TestController {
 //        String sk = "WlRZMk5qRTJOR1ZrTURnMk5EVmhZVGc1TmpVeE4yUTJNelkzWXpVeU1XVQ==";
 //
 //        BusinessSecurityService businessSecurityService = BusinessSecurityServiceImpl.getInstance();
-//        // call below method if you dont set ak and sk in ~/.volc/config
+//        // call below method if you dont set ak and sk in ~/.volc/KLingAiConfig
 //
 //        businessSecurityService.setAccessKey(ak);
 //        businessSecurityService.setSecretKey(sk);

+ 1 - 1
src/main/java/com/backendsys/modules/ai/media/entity/MediaTtv.java

@@ -41,7 +41,7 @@ public class MediaTtv {
     @NotEmpty(message = "source 不能为空", groups = { Generate.class })
     private List<MediaTtvSource> source;
     @TableField(exist = false)
-    @NotNull(message = "config 不能为空", groups = { Generate.class })
+    @NotNull(message = "KLingAiConfig 不能为空", groups = { Generate.class })
     private MediaTtvConfig config;
 
     private String request_params;

+ 2 - 2
src/main/java/com/backendsys/modules/ai/media/service/impl/MediaTtvServiceImpl.java

@@ -104,9 +104,9 @@ public class MediaTtvServiceImpl implements MediaTtvService {
         }
         detail.setSource(source);
 
-        // config
+        // KLingAiConfig
         MediaTtvConfig config = new MediaTtvConfig();
-        JSONObject request_params_config = JSONUtil.parseObj(request_params_json.get("config"));
+        JSONObject request_params_config = JSONUtil.parseObj(request_params_json.get("KLingAiConfig"));
         config.setTts_voice_type(Convert.toInt(request_params_config.get("ttsPer")));
         config.setResolution(Convert.toIntArray(request_params_config.get("resolution")));
         detail.setConfig(config);

+ 1 - 1
src/main/java/com/backendsys/modules/common/config/redis/RedissonConfig.java

@@ -28,7 +28,7 @@ public class RedissonConfig {
         try {
             // 创建配置 指定redis地址及节点信息
             Config config = new Config();
-            //config.useSingleServer().setAddress("XXX.XX.XX.X(redis地址):端口").setPassword("xxxxxxxxx");
+            //KLingAiConfig.useSingleServer().setAddress("XXX.XX.XX.X(redis地址):端口").setPassword("xxxxxxxxx");
             config.useSingleServer().setAddress("redis://" + redisHost + ":" + redisPort).setPassword(redisPassword);
             // 根据config创建出RedissonClient实例
             RedissonClient redissonClient = Redisson.create(config);

+ 12 - 12
src/main/java/com/backendsys/modules/common/config/security/CorsConfig.java

@@ -1,6 +1,6 @@
-//package com.backendsys.modules.common.config.security;
+//package com.backendsys.modules.common.KLingAiConfig.security;
 //
-//import com.backendsys.config.Interceptor.PreAuthorizeInterceptor;
+//import com.backendsys.KLingAiConfig.Interceptor.PreAuthorizeInterceptor;
 //import org.springframework.beans.factory.annotation.Autowired;
 //import org.springframework.beans.factory.annotation.Value;
 //import org.springframework.boot.web.servlet.FilterRegistrationBean;
@@ -10,9 +10,9 @@
 //import org.springframework.web.cors.CorsConfiguration;
 //import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 //import org.springframework.web.filter.CorsFilter;
-//import org.springframework.web.servlet.config.annotation.CorsRegistry;
-//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//import org.springframework.web.servlet.KLingAiConfig.annotation.CorsRegistry;
+//import org.springframework.web.servlet.KLingAiConfig.annotation.InterceptorRegistry;
+//import org.springframework.web.servlet.KLingAiConfig.annotation.WebMvcConfigurer;
 //
 //@Configuration
 //public class CorsConfig implements WebMvcConfigurer {
@@ -52,13 +52,13 @@
 //    @Bean
 //    public FilterRegistrationBean<CorsFilter> corsFilter() {
 //        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-//        CorsConfiguration config = new CorsConfiguration();
-//        config.addAllowedOriginPattern("*");
-//        config.addAllowedHeader("*");
-//        config.addAllowedMethod("*");
-//        config.setAllowCredentials(true);
-//        config.setMaxAge(3600L);
-//        source.registerCorsConfiguration("/**", config);
+//        CorsConfiguration KLingAiConfig = new CorsConfiguration();
+//        KLingAiConfig.addAllowedOriginPattern("*");
+//        KLingAiConfig.addAllowedHeader("*");
+//        KLingAiConfig.addAllowedMethod("*");
+//        KLingAiConfig.setAllowCredentials(true);
+//        KLingAiConfig.setMaxAge(3600L);
+//        source.registerCorsConfiguration("/**", KLingAiConfig);
 //        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
 //        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
 //        return bean;

+ 1 - 1
src/main/java/com/backendsys/modules/common/config/security/SecurityConfig.java

@@ -1,7 +1,7 @@
 package com.backendsys.modules.common.config.security;
 
 import cn.hutool.core.util.ArrayUtil;
-//import com.backendsys.modules.common.config.security.filter.AnonymousFilter;
+//import com.backendsys.modules.common.KLingAiConfig.security.filter.AnonymousFilter;
 import com.backendsys.modules.common.config.security.annotations.AnonymousProperties;
 import com.backendsys.modules.common.config.security.filter.CaptchaVerficationFilter;
 import com.backendsys.modules.common.config.security.filter.JwtAuthenticationFilter;

+ 1 - 1
src/main/java/com/backendsys/modules/common/config/security/annotations/AnonymousProperties.java

@@ -23,7 +23,7 @@ import java.util.regex.Pattern;
 import cn.hutool.core.util.ReUtil;
 
 // 编辑注释权限
-// src/main/java/com/backendsys/modules/common/config/security/filter/JwtAuthenticationFilter.java
+// src/main/java/com/backendsys/modules/common/KLingAiConfig/security/filter/JwtAuthenticationFilter.java
 @Configuration
 public class AnonymousProperties implements InitializingBean, ApplicationContextAware {
 

+ 1 - 1
src/main/java/com/backendsys/modules/common/config/security/handler/__CustomLogoutHandler.java

@@ -1,4 +1,4 @@
-//package com.backendsys.modules.common.config.Security.handler;
+//package com.backendsys.modules.common.KLingAiConfig.Security.handler;
 //
 //import jakarta.servlet.http.HttpServletRequest;
 //import jakarta.servlet.http.HttpServletResponse;

+ 1 - 1
src/main/java/com/backendsys/modules/common/config/security/service/impl/CustomUserDetailsServiceImpl.java

@@ -1,4 +1,4 @@
-//package com.backendsys.modules.common.config.Security;
+//package com.backendsys.modules.common.KLingAiConfig.Security;
 //
 //import org.springframework.beans.factory.aspect.Autowired;
 //import org.springframework.security.core.authority.AuthorityUtils;

+ 3 - 3
src/main/java/com/backendsys/modules/common/config/security/utils/PermissionUtil.java

@@ -1,8 +1,8 @@
-//package com.backendsys.modules.common.config.security.utils;
+//package com.backendsys.modules.common.KLingAiConfig.security.utils;
 //
 //import com.backendsys.exception.CustException;
-//import com.backendsys.modules.common.config.redis.utils.RedisUtil;
-//import com.backendsys.modules.common.config.security.entity.SecurityUserInfo;
+//import com.backendsys.modules.common.KLingAiConfig.redis.utils.RedisUtil;
+//import com.backendsys.modules.common.KLingAiConfig.security.entity.SecurityUserInfo;
 //import com.backendsys.utils.response.ResultEnum;
 //import org.springframework.beans.factory.annotation.Autowired;
 //import org.springframework.beans.factory.annotation.Value;

+ 3 - 3
src/main/java/com/backendsys/modules/sdk/baidu/bce/service/impl/BaiduBceMediaServiceImpl.java

@@ -66,7 +66,7 @@ public class BaiduBceMediaServiceImpl implements BaiduBceMediaService {
                     { "type": "text", "content": "云渺修仙历经千年,实力超凡,却因身世之谜未解,毅然成为摆渡人。" },
                     { "type": "image", "content": "http://43.138.151.228:3001/2cut_compress.png" }
                 ],
-                "config": {
+                "KLingAiConfig": {
                     "tts_voice_type": 4144,
                     "resolution": [1024, 576]
                 }
@@ -83,7 +83,7 @@ public class BaiduBceMediaServiceImpl implements BaiduBceMediaService {
 
 //        String source = mediaTtv.getSource();
 
-//        // config: 视频生产配置
+//        // KLingAiConfig: 视频生产配置
 //        Integer ttsPer = 4144;                // 支持基础音库、甄选音库,默认4144:度姗姗-女;【基础音库】0:度小美-女、1:度小宇-男、3:度小云-男、4:度小丫-女童、5:度小娇-女、103:度小朵-女童、106:度小博-男、110:度小童-男童、111:度小萌-女、5003:度小遥-男、5118:度小婷-女、4003:度小耀-男、4100:度小雯-女、4103:度小米-男童、4105:度小灵-女、4106:度小文-男、4115:度小贤-男、4117:度小乔-女、4119:度小鹿-女;【甄选音库】4144:度姗姗-女、4140:度小新-女、4143:度清风-男、4129:度小彦-男、4278:度小贝-女、4254:度小清-女、4149:度星河-男
 //        String resolution = "[1024,576]";     // 分辨率,横屏支持[1920,1080]、[1280,720]、[1024,576]、竖屏支持[1080,1920]、[720,1280]、[576,1024]
 
@@ -136,7 +136,7 @@ public class BaiduBceMediaServiceImpl implements BaiduBceMediaService {
 
         String params = "{" +
             "\"source\":{\"structs\":" + structs + "}," +
-            "\"config\":{" +
+            "\"KLingAiConfig\":{" +
                 "\"productType\":\"video\"," +
                 "\"ttsPer\":" + ttsPer + "," +
                 "\"resolution\":[" + resolution[0] + "," + resolution[1] + "]" +

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/deepseek/controller/DeepSeekController.java

@@ -4,7 +4,7 @@
 //import com.backendsys.modules.sdk.deepseek.service.DeepSeekClient;
 //import com.backendsys.modules.sdk.deepseek.service.impl.DeepSeekClientImpl;
 //import com.backendsys.modules.sdk.deepseek.utils.OllamaUtil;
-//import com.backendsys.modules.common.config.security.utils.SecurityUtil;
+//import com.backendsys.modules.common.KLingAiConfig.security.utils.SecurityUtil;
 //import com.backendsys.modules.common.utils.Result;
 //import io.swagger.v3.oas.annotations.Operation;
 //import io.swagger.v3.oas.annotations.tags.Tag;

+ 22 - 0
src/main/java/com/backendsys/modules/sdk/klingai/config/KLingAiConfig.java

@@ -0,0 +1,22 @@
+package com.backendsys.modules.sdk.klingai.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 「可灵AI」新系统 API 接口文档
+ * https://docs.qingque.cn/d/home/eZQAyImcbaS0fz-8ANjXvU5ed?identityId=1oEG9JKKMFv
+ */
+@Component
+public class KLingAiConfig {
+
+    @Value("${klingai.url}")
+    public String URL;
+    @Value("${klingai.access-key}")
+    public String ACCESS_KEY;
+    @Value("${klingai.secret-key}")
+    public String SECRET_KEY;
+    @Value("${klingai.token-duration-time}")
+    public String TOKEN_DURATION_TIME;
+
+}

+ 22 - 0
src/main/java/com/backendsys/modules/sdk/klingai/controller/KLingDemoController.java

@@ -0,0 +1,22 @@
+package com.backendsys.modules.sdk.klingai.controller;
+
+import com.backendsys.modules.common.config.security.annotations.Anonymous;
+import com.backendsys.modules.common.utils.Result;
+import com.backendsys.modules.sdk.klingai.service.KLingAiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class KLingDemoController {
+
+    @Autowired
+    private KLingAiService klingAiService;
+
+    @Anonymous
+    @GetMapping("/api/klingai/getToken")
+    public String getToken() {
+        return klingAiService.getToken();
+    }
+
+}

+ 8 - 0
src/main/java/com/backendsys/modules/sdk/klingai/service/KLingAiService.java

@@ -0,0 +1,8 @@
+package com.backendsys.modules.sdk.klingai.service;
+
+public interface KLingAiService {
+
+    // 获取接口鉴权 Token
+    public String getToken();
+
+}

+ 71 - 0
src/main/java/com/backendsys/modules/sdk/klingai/service/impl/KLingAiServiceImpl.java

@@ -0,0 +1,71 @@
+package com.backendsys.modules.sdk.klingai.service.impl;
+
+import cn.hutool.core.convert.Convert;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.backendsys.modules.common.config.redis.utils.RedisUtil;
+import com.backendsys.modules.sdk.klingai.config.KLingAiConfig;
+import com.backendsys.modules.sdk.klingai.service.KLingAiService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class KLingAiServiceImpl implements KLingAiService {
+
+    @Autowired
+    private KLingAiConfig config;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    /**
+     * 接口鉴权
+     */
+    public String sign() {
+        try {
+            Date expiredAt = new Date(System.currentTimeMillis() + 1800*1000); // 有效时间,此处示例代表当前时间+1800s(30min)
+            Date notBefore = new Date(System.currentTimeMillis() - 5*1000); //开始生效的时间,此处示例代表当前时间-5秒
+            Algorithm algo = Algorithm.HMAC256(config.SECRET_KEY);
+            Map<String, Object> header = new HashMap<>();
+            header.put("alg", "HS256");
+            return JWT.create()
+                .withIssuer(config.ACCESS_KEY)
+                .withHeader(header)
+                .withExpiresAt(expiredAt)
+                .withNotBefore(notBefore)
+                .sign(algo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 获取接口鉴权 Token (增加缓存:10秒)
+     */
+    @Override
+    public String getToken() {
+        String token = "";
+        String cacheKey = "klingai:token";
+        String cacheValue = redisUtil.getCacheObject(cacheKey);
+        if (cacheValue == null) {
+            token = sign();
+            if (token != null) {
+                Integer timeout = Convert.toInt(config.TOKEN_DURATION_TIME);
+                redisUtil.setCacheObject(cacheKey, token, timeout, TimeUnit.MILLISECONDS);
+            }
+        } else {
+            token = cacheValue;
+        }
+        return token;
+    }
+
+
+
+}

+ 1 - 1
src/main/java/com/backendsys/service/Ai/Aizn/AiznModelServiceImpl.java

@@ -5,7 +5,7 @@
 //import cn.hutool.json.JSONUtil;
 //import com.backendsys.aspect.HttpRequestAspect;
 //import com.backendsys.exception.CustException;
-//import com.backendsys.modules.common.config.redis.utils.RedisUtil;
+//import com.backendsys.modules.common.KLingAiConfig.redis.utils.RedisUtil;
 //import com.backendsys.entity.Ai.Aizn.AiznImageStyleDTO;
 //import com.backendsys.entity.Ai.Aizn.AiznIntelligentClipTaskDTO;
 //import com.backendsys.entity.Ai.Aizn.AiznImageTaskVO;

+ 5 - 5
src/main/java/com/backendsys/service/SDKService/SDKBaidu/SDKBaiduAiGenerateVideoServiceImpl.java

@@ -122,12 +122,12 @@ public class SDKBaiduAiGenerateVideoServiceImpl implements SDKBaiduAiGenerateVid
         customDTO.setSource(sourceDTO);
         // -------------------------------------------------------------------------
 
-        // -- config ---------------------------------------------------------------
+        // -- KLingAiConfig ---------------------------------------------------------------
         configDTO.setResolution(aiGenerateVideoDTO.getResolution());
         configDTO.setProductType(aiGenerateVideoDTO.getProduct_type());
         configDTO.setTtsPer(aiGenerateVideoDTO.getTts_per());
         // -------------------------------------------------------------------------
-        // -- config.bgMusic.mediaSource (背景图) -----------------------------------
+        // -- KLingAiConfig.bgMusic.mediaSource (背景图) -----------------------------------
         String bg_music_url = aiGenerateVideoDTO.getBg_music_url();
         if (StrUtil.isNotBlank(bg_music_url)) {
             ConfigBgMusicDTO bgMusicDTO = new ConfigBgMusicDTO();
@@ -140,7 +140,7 @@ public class SDKBaiduAiGenerateVideoServiceImpl implements SDKBaiduAiGenerateVid
             configDTO.setBgMusic(bgMusicDTO);
         }
         // -------------------------------------------------------------------------
-        // -- config.videoBegin.mediaSource (片头) ----------------------------------
+        // -- KLingAiConfig.videoBegin.mediaSource (片头) ----------------------------------
         String video_begin_url = aiGenerateVideoDTO.getVideo_begin_url();
         if (StrUtil.isNotBlank(video_begin_url)) {
             ConfigVideoBeginDTO videoBeginDTO = new ConfigVideoBeginDTO();
@@ -153,7 +153,7 @@ public class SDKBaiduAiGenerateVideoServiceImpl implements SDKBaiduAiGenerateVid
             configDTO.setVideoBegin(videoBeginDTO);
         }
         // -------------------------------------------------------------------------
-        // -- config.videoEnd.mediaSource (片尾) ------------------------------------
+        // -- KLingAiConfig.videoEnd.mediaSource (片尾) ------------------------------------
         String video_end_url = aiGenerateVideoDTO.getVideo_end_url();
         if (StrUtil.isNotBlank(video_end_url)) {
             ConfigVideoEndDTO videoEndDTO = new ConfigVideoEndDTO();
@@ -166,7 +166,7 @@ public class SDKBaiduAiGenerateVideoServiceImpl implements SDKBaiduAiGenerateVid
             configDTO.setVideoEnd(videoEndDTO);
         }
         // -------------------------------------------------------------------------
-        // -- config.videoLogo (LOGO) ----------------------------------------------
+        // -- KLingAiConfig.videoLogo (LOGO) ----------------------------------------------
         String video_logo_url = aiGenerateVideoDTO.getVideo_logo_url();
         if (StrUtil.isNotBlank(video_logo_url)) {
             ConfigVideoLogoDTO videoLogoDTO = new ConfigVideoLogoDTO();

+ 9 - 9
src/main/java/com/backendsys/service/SDKService/SDKTencent/SDKTencentCOSServiceImpl.java

@@ -118,18 +118,18 @@ public class SDKTencentCOSServiceImpl implements SDKTencentCOSService {
 //    @Override
 //    public TempCredentialsDTO getTempCredentials(String allowPrefix) {
 //
-//        TreeMap<String, Object> config = new TreeMap<String, Object>();
+//        TreeMap<String, Object> KLingAiConfig = new TreeMap<String, Object>();
 //        try {
 //
 //            // 密钥,使用子账号密钥,授权遵循最小权限指引
-//            config.put("secretId", secretId);
-//            config.put("secretKey", secretKey);
+//            KLingAiConfig.put("secretId", secretId);
+//            KLingAiConfig.put("secretKey", secretKey);
 //
 //            // 临时密钥有效时长,单位是秒,默认 120 秒,目前主账号最长 2 小时(即 7200 秒),子账号最长 36 小时(即 129600)秒
 //            Integer durationSeconds = 120;
-//            config.put("durationSeconds", durationSeconds);
-//            config.put("bucket", bucketName);
-//            config.put("region", region);
+//            KLingAiConfig.put("durationSeconds", durationSeconds);
+//            KLingAiConfig.put("bucket", bucketName);
+//            KLingAiConfig.put("region", region);
 //
 //            // 获取当前时间戳(毫秒)
 //            long nowDateTime = System.currentTimeMillis() / 1000L;
@@ -138,7 +138,7 @@ public class SDKTencentCOSServiceImpl implements SDKTencentCOSService {
 //
 //            // 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子:a.jpg 或者 a/* 或者 * 。
 //            // 如果填写了“*”,将允许用户访问所有资源;除非业务需要,否则请按照最小权限原则授予用户相应的访问权限范围。
-//            config.put("allowPrefix", allowPrefix);
+//            KLingAiConfig.put("allowPrefix", allowPrefix);
 //
 //            // 密钥的权限列表。简单上传、表单上传和分片上传需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
 //            String[] allowActions = new String[] {
@@ -161,7 +161,7 @@ public class SDKTencentCOSServiceImpl implements SDKTencentCOSService {
 //            };
 //            // "name/cos:*"
 //
-//            config.put("allowActions", allowActions);
+//            KLingAiConfig.put("allowActions", allowActions);
 //
 //            // -- 在后台 存储桶->设置策略 -------------------------------------------------------------
 //
@@ -171,7 +171,7 @@ public class SDKTencentCOSServiceImpl implements SDKTencentCOSService {
 //
 //
 //
-//            Response response = CosStsClient.getCredential(config);
+//            Response response = CosStsClient.getCredential(KLingAiConfig);
 //
 //            TempCredentialsDTO dto = new TempCredentialsDTO();
 //            dto.setRegion(region);

+ 1 - 1
src/main/java/com/backendsys/utils/CommonUtil.java

@@ -22,7 +22,7 @@ public class CommonUtil {
     //private static TokenUtil tokenService;
 
     // 以上引用会报错:
-    // Cannot invoke \"com.backendsys.modules.common.config.Security.utils.TokenUtil.getTokenInfo(jakarta.servlet.http.HttpServletRequest)\" because \"com.backendsys.utils.CommonUtil.tokenService\" is null
+    // Cannot invoke \"com.backendsys.modules.common.KLingAiConfig.Security.utils.TokenUtil.getTokenInfo(jakarta.servlet.http.HttpServletRequest)\" because \"com.backendsys.utils.CommonUtil.tokenService\" is null
     // 工具类无法直接用,得写 set 方法,如下:
 
     //private static TokenUtil tokenService;

+ 9 - 1
src/main/resources/application-dev.yml

@@ -179,4 +179,12 @@ wechat:
 #     appid: wx159b7ad079a34fa1
 #     app-secret: 7671bcb556dd8a48052f1f669d70b643
     appid: wx3c789d9920a0f98f
-    app-secret: c713a96ac6df5abb9b7edb80fdc41e8b
+    app-secret: c713a96ac6df5abb9b7edb80fdc41e8b
+
+# 可灵AI (测试密钥)
+# https://app.klingai.com/cn/dev/api-key
+klingai:
+  url: https://api-beijing.klingai.com
+  access-key: AtCGNbbFpkAF8GECBfMD8ebfNHAgfn3G
+  secret-key: TGthayRmgATNgnpmhH8npLEeLHby8hAH
+  token-duration-time: 10000

+ 8 - 0
src/main/resources/application-local.yml

@@ -193,3 +193,11 @@ wechat:
 #     app-secret: 7671bcb556dd8a48052f1f669d70b643
      appid: wx3c789d9920a0f98f
      app-secret: c713a96ac6df5abb9b7edb80fdc41e8b
+
+# 可灵AI (测试密钥)
+# https://app.klingai.com/cn/dev/api-key
+klingai:
+  url: https://api-beijing.klingai.com
+  access-key: AtCGNbbFpkAF8GECBfMD8ebfNHAgfn3G
+  secret-key: TGthayRmgATNgnpmhH8npLEeLHby8hAH
+  token-duration-time: 10000

+ 9 - 1
src/main/resources/application-prod.yml

@@ -180,4 +180,12 @@ wechat:
 #     appid: wx159b7ad079a34fa1
 #     app-secret: 7671bcb556dd8a48052f1f669d70b643
     appid: wx3c789d9920a0f98f
-    app-secret: c713a96ac6df5abb9b7edb80fdc41e8b
+    app-secret: c713a96ac6df5abb9b7edb80fdc41e8b
+
+# 可灵AI (测试密钥)
+# https://app.klingai.com/cn/dev/api-key
+klingai:
+  url: https://api-beijing.klingai.com
+  access-key: AtCGNbbFpkAF8GECBfMD8ebfNHAgfn3G
+  secret-key: TGthayRmgATNgnpmhH8npLEeLHby8hAH
+  token-duration-time: 10000

+ 3 - 3
src/main/resources/application.yml

@@ -97,7 +97,7 @@ pagehelper:
 
 # 日志
 logging:
-  #  config: classpath:log4j2.xml
+  #  KLingAiConfig: classpath:log4j2.xml
   level:
     root: INFO # WARN
   pattern:
@@ -116,8 +116,8 @@ logging:
 # %n:平台的换行符
 
 # 接口/路径白名单 (JWT/OAuth2)
-# com/backendsys/config/Security/filter/JwtAuthenticationFilter.java
-# com/backendsys/config/Security/SecurityConfig.java
+# com/backendsys/KLingAiConfig/Security/filter/JwtAuthenticationFilter.java
+# com/backendsys/KLingAiConfig/Security/SecurityConfig.java
 whitelist:
   static:
     /,