wenhongquan 3 ay önce
ebeveyn
işleme
6ef1dabcf9

+ 6 - 0
ruoyi-admin/src/main/java/org/dromara/web/config/KafkaConfig.java

@@ -6,6 +6,7 @@ import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.common.serialization.StringDeserializer;
 import org.apache.kafka.common.serialization.StringSerializer;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.kafka.annotation.EnableKafka;
@@ -34,6 +35,7 @@ public class KafkaConfig {
      * @return org.springframework.kafka.core.ProducerFactory<java.lang.String,java.lang.Object>
      */
     @Bean
+    @ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
     public ProducerFactory<String, Object> producerFactory() {
         Map<String, Object> props = new HashMap<>();
         props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);//kafka 地址
@@ -51,6 +53,7 @@ public class KafkaConfig {
      * @return org.springframework.kafka.core.KafkaTemplate<java.lang.String,java.lang.Object>
      */
     @Bean
+    @ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
     public KafkaTemplate<String, Object> kafkaTemplate() {
         return new KafkaTemplate<>(producerFactory());
     }
@@ -63,6 +66,7 @@ public class KafkaConfig {
      * @return org.springframework.kafka.core.ConsumerFactory<java.lang.String,java.lang.Object>
      */
     @Bean
+    @ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
     public ConsumerFactory<String, Object> consumerFactory() {
         Map<String, Object> props = new HashMap<>();
         props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);
@@ -83,6 +87,7 @@ public class KafkaConfig {
      * @return org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory<java.lang.String,java.lang.Object>
      */
     @Bean
+    @ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
     public ConcurrentKafkaListenerContainerFactory<String, Object> kafkaListenerContainerFactory() {
         ConcurrentKafkaListenerContainerFactory<String, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();
         factory.setConsumerFactory(consumerFactory());
@@ -95,6 +100,7 @@ public class KafkaConfig {
      * @return org.apache.kafka.clients.admin.AdminClient
      */
     @Bean
+    @ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
     public AdminClient adminClient() {
         Properties props = new Properties();
         props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);

+ 2 - 0
ruoyi-admin/src/main/java/org/dromara/web/task/SysKafkaData.java

@@ -5,12 +5,14 @@ import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.dromara.web.utils.KafkaUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.kafka.support.Acknowledgment;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
 
 @Component
+@ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
 public class SysKafkaData {
 
     @Value("${kafka.enabled}")

+ 2 - 0
ruoyi-admin/src/main/java/org/dromara/web/utils/KafkaUtils.java

@@ -2,6 +2,7 @@ package org.dromara.web.utils;
 
 import org.apache.kafka.clients.admin.AdminClient;
 import org.dromara.common.core.utils.SpringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.kafka.config.KafkaListenerEndpointRegistry;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.kafka.core.KafkaTemplate;
@@ -26,6 +27,7 @@ import java.util.Set;
  **/
 
 @Component
+@ConditionalOnProperty(name = "kafka.enabled", havingValue = "true")
 @Slf4j
 public class KafkaUtils {
 

+ 4 - 4
ruoyi-admin/src/main/resources/application.yml

@@ -22,7 +22,7 @@ server:
 
 captcha:
   # 是否启用验证码校验
-  enable: true
+  enable: false
   # 验证码类型 math 数组计算 char 字符验证
   type: MATH
   # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰
@@ -45,8 +45,8 @@ logging:
 user:
   filepath: ${filepath:./ruoyi/file}
   fileUrl: http://jtjai.xt.wenhq.top:8083/api/oss/local/upload/
-  difyUrl: http://192.168.39.17:9000/v1
-  difykey: app-UWNxgj5tXtHvUs3d1SVpuPpw
+  difyUrl: ${difiurl:http://192.168.39.17:9000/v1}
+  difykey: ${difykey:app-bam2jWvQRd16MnfFaaGWK0Lj}
   password:
     # 密码最大错误次数
     maxRetryCount: 5
@@ -54,7 +54,7 @@ user:
     lockTime: 10
 
 kafka:
-  enabled: false
+  enabled: ${KAFAKA_ENABLED:false}
   bootstrap-servers: ${KAFAKA_SERVER:kafka-server:9092}
   topics: zs_objects_r2p3
 # Spring配置

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/TblEventController.java

@@ -157,7 +157,7 @@ public class TblEventController extends BaseController {
                 if(image.toString().contains("mp4")) continue;
                 try {
                     File file = storage.getLocalEnvFile(image);
-                    String imageUrl = difyUtil.uploadFile(file.getAbsolutePath());
+                    String imageUrl = difyUtil.uploadFile(file.getAbsolutePath(),"user-12");
                     String imgid = JSONUtil.parseObj(imageUrl).getStr("id");
                     Map<String, Object> fileItem = new HashMap<>();
                     fileItem.put("transfer_method", "local_file");

+ 59 - 35
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/utils/DifyUtil.java

@@ -6,6 +6,9 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
 
+import cn.hutool.http.Header;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -28,46 +31,67 @@ public class DifyUtil {
      * @return API响应结果
      * @throws IOException IO异常
      */
-    public  String uploadFile(String filePath) throws IOException {
+    public  String uploadFile(String filePath,String userid) throws IOException {
         String endpoint = "/files/upload";
-        HttpURLConnection connection = null;
+//        HttpURLConnection connection = null;
         File file = new File(filePath);
 
-        try {
-            URL url = new URL(API_BASE_URL + endpoint);
-            connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod("POST");
-            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
-            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
-            connection.setDoOutput(true);
+        HashMap<String, Object> paramMap = new HashMap<>();
+        //文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
+        paramMap.put("file", file);
+        paramMap.put("user", userid);
 
-            try (OutputStream output = connection.getOutputStream();
-                 PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8))) {
-
-                // 添加文件部分
-                writer.append("--").append(BOUNDARY).append("\r\n");
-                writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(file.getName()).append("\"\r\n");
-                writer.append("Content-Type: application/octet-stream\r\n\r\n");
-                writer.flush();
-                try (FileInputStream fileInputStream = new FileInputStream(file)) {
-                    byte[] buffer = new byte[4096];
-                    int bytesRead;
-                    while ((bytesRead = fileInputStream.read(buffer)) != -1) {
-                        output.write(buffer, 0, bytesRead);
-                    }
-                }
-                writer.append("\r\n");
-
-                // 完成边界
-                writer.append("--").append(BOUNDARY).append("--\r\n");
-            }
 
-            return getResponseString(connection);
-        } finally {
-            if (connection != null) {
-                connection.disconnect();
-            }
-        }
+        String result2 = HttpRequest.post(API_BASE_URL + endpoint)
+            .header(Header.AUTHORIZATION,  "Bearer " + API_KEY)
+            .form(paramMap)//表单内容
+            .timeout(-1)//超时,毫秒
+            .execute().body();
+        return result2;
+
+
+//
+//        try {
+//            URL url = new URL(API_BASE_URL + endpoint);
+//            connection = (HttpURLConnection) url.openConnection();
+//            connection.setRequestMethod("POST");
+//            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
+//            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
+//            connection.setDoOutput(true);
+//
+//            try (OutputStream output = connection.getOutputStream();
+//                 PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8))) {
+//
+//                // 添加文件部分
+//                writer.append("--").append(BOUNDARY).append("\r\n");
+//                writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(file.getName()).append("\"\r\n");
+//                writer.append("Content-Type: application/octet-stream\r\n\r\n");
+//                writer.flush();
+//                try (FileInputStream fileInputStream = new FileInputStream(file)) {
+//                    byte[] buffer = new byte[4096];
+//                    int bytesRead;
+//                    while ((bytesRead = fileInputStream.read(buffer)) != -1) {
+//                        output.write(buffer, 0, bytesRead);
+//                    }
+//                }
+//                writer.append("\r\n");
+//
+//                // 添加用户参数部分
+//                writer.append("--").append(BOUNDARY).append("\r\n");
+//                writer.append("Content-Disposition: form-data; name=\"user\"\r\n\r\n");
+//                writer.append(userid).append("\r\n");
+//
+//
+//                // 完成边界
+//                writer.append("--").append(BOUNDARY).append("--\r\n");
+//            }
+//
+//            return getResponseString(connection);
+//        } finally {
+//            if (connection != null) {
+//                connection.disconnect();
+//            }
+//        }
     }
 
     /**