From f97d74f9f851ef70048fab599d7bc54d7932afc7 Mon Sep 17 00:00:00 2001
From: Administrator <1144154118@qq.com>
Date: 星期三, 23 八月 2023 17:29:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java                             |   33 +
 ruoyi-common/src/main/java/com/ruoyi/common/utils/ConfigUtils.java                        |   55 ++
 ruoyi-admin/src/main/resources/application-prod-druid.yml                                 |   58 +++
 ard-work/src/main/resources/templates/test.html                                           |    2 
 ruoyi-system/src/main/java/com/ruoyi/authorize/common/AuthorizeUtil.java                  |   12 
 ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java                     |   35 +
 ard-work/src/main/java/com/ruoyi/utils/tools/Point.java                                   |   10 
 ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java                             |   62 +-
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java          |    2 
 ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java                      |  158 ++++---
 ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java                    |   22 
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java                    |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java                |    2 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java                           |    7 
 ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java    |    5 
 ruoyi-admin/src/main/resources/application-dev-druid.yml                                  |   58 +++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysConfig.java             |    2 
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java |    8 
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java |    2 
 ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml                      |    1 
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java                 |   48 +-
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java                     |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java        |    3 
 ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java                                 |   18 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java        |    2 
 ruoyi-admin/src/main/resources/application.yml                                            |  129 ++----
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java                 |    2 
 ruoyi-admin/src/main/resources/banner.txt                                                 |   12 
 /dev/null                                                                                 |   61 ---
 ruoyi-admin/src/main/resources/application-prod.yml                                       |  101 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java                   |    2 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java     |   25 
 ruoyi-admin/src/main/resources/logback.xml                                                |   60 --
 ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java                    |    4 
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java    |   26 -
 ruoyi-admin/src/main/resources/application-dev.yml                                        |  101 +++++
 36 files changed, 709 insertions(+), 425 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
index c594b93..6c2d3a8 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -46,7 +46,8 @@
     private IArdAppPositionService ardAppPositionService;
     @Autowired
     private ISysUserService sysUserService;
-
+    @Autowired
+    private MinioUtils minioUtil;
 
     /**
      * 鏌ヨapp浣嶇疆鍒楄〃
@@ -200,7 +201,7 @@
     @ApiOperation("涓婁紶鏂囦欢")
     public AjaxResult uploadFile(MultipartFile file,String type)
     {
-        String url = MinioUtils.putObjectAndGetUrl("app",type, file);
+        String url = minioUtil.putObjectAndGetUrl("app",type, file);
         return AjaxResult.success(url);
     }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
index 3a88178..bd751a8 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -146,9 +146,10 @@
             SysUser user = new SysUser();
             user.setDeptId(deptId);
             List<SysUser> appUserList = iSysUserService.selectAllAppUserList(user);
-            //杩囨护鍦ㄧ嚎
+            //杩囨护鍦ㄧ嚎鍜屽崟鍏电
             List<SysUser> onLineList = appUserList.stream()
                     .filter(sysUser -> (sysUser.getAppOnlineState().equals("1")))
+                    .filter(sysUser -> (sysUser.getAppUserType().equals("1")))
                     .collect(Collectors.toList());
             //杩囨护鑼冨洿
             for (SysUser sysUser : onLineList) {
@@ -192,6 +193,7 @@
             //杩囨护鍦ㄧ嚎
             List<SysUser> onLineList = appUserList.stream()
                     .filter(sysUser -> (sysUser.getAppOnlineState().equals("1")))
+                    .filter(sysUser -> (sysUser.getAppUserType().equals("1")))
                     .collect(Collectors.toList());
             //杩囨护鑼冨洿
             for (SysUser sysUser : onLineList) {
@@ -202,9 +204,7 @@
                     if (lon == null || lat == null) {
                         continue;
                     }
-                    Point point2D=new Point();
-                    point2D.setLongitude(lon);
-                    point2D.setLatitude(lat);
+                    Point point2D=new Point(lon,lat);
                     boolean inPolygon = GisTool.isInPolygon(point2D, partitionLocation);
                     if (inPolygon) {
                         Map<String, Object> params = new HashMap<>();
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 6e25a85..245b74e 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -1,7 +1,5 @@
 package com.ruoyi.device.camera.service.impl;
 
-import java.awt.geom.Point2D;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -14,11 +12,7 @@
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.channel.domain.ArdChannel;
 import com.ruoyi.device.channel.mapper.ArdChannelMapper;
-import com.ruoyi.device.channel.service.IArdChannelService;
-import com.ruoyi.device.hiksdk.common.GlobalVariable;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.scheduling.domian.SchedulingParam;
-import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.utils.tools.ArdTool;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
@@ -27,7 +21,6 @@
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.utils.tools.GisTool;
 import com.ruoyi.utils.tools.Point;
-import com.sun.org.apache.bcel.internal.generic.NEW;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -120,20 +113,7 @@
         ardCameras.setCreateTime(DateUtils.getNowDate());
         ardCameras.setUserId(SecurityUtils.getUserId());
         redisCache.setCacheObject(getCacheKey(ardCameras.getId()), ardCameras);
-        int i = ardCamerasMapper.insertArdCameras(ardCameras);
-        if (i > 0) {
-//            //鍒犻櫎褰撳墠鐩告満鐨勬墍鏈夐�氶亾
-//            ardChannelMapper.deleteArdChannelByDeviceId(ardCameras.getId());
-//            //鑾峰彇鐩告満閫氶亾
-//            List<ArdChannel> ipChannelList = hikClientService.getCameraChannelList(ardCameras);
-//            if (ipChannelList.size() > 0) {
-//                for (ArdChannel channel : ipChannelList) {
-//                    channel.setId(IdUtils.simpleUUID());
-//                    ardChannelMapper.insertArdChannel(channel);
-//                }
-//            }
-        }
-        return i;
+        return ardCamerasMapper.insertArdCameras(ardCameras);
     }
 
     /**
@@ -375,9 +355,7 @@
                     continue;
                 }
                 /*鍒ゆ柇鍧愭爣鏄惁鍦ㄥ杈瑰舰鑼冨洿鍐�*/
-                Point camPosition=new Point();
-                camPosition.setLongitude(camera.getLongitude());
-                camPosition.setLatitude(camera.getLatitude());
+                Point camPosition=new Point(camera.getLongitude(),camera.getLatitude());
                 boolean inPolygon = GisTool.isInPolygon(camPosition, partitionLocation);
                 if (inPolygon) {
                     /*鑾峰彇閫氶亾鍒楄〃*/
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java
deleted file mode 100644
index 7433fed..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.ruoyi.device.hiksdk.config;
-
-import io.minio.MinioClient;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * @Description:
- * @ClassName: MinioClientSingleton
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�05鏈�18鏃�9:32
- * @Version: 1.0
- **/
-
-@Slf4j(topic = "minio")
-@Component
-public class MinioClientSingleton {
-
-    public static String domainUrl;
-    private static String accessKey;
-    private static String secretKey;
-
-    private volatile static MinioClient minioClient;
-
-    static {
-        domainUrl = getYmlNew("minio.endpoint");
-        accessKey = getYmlNew("minio.accessKey");
-        secretKey = getYmlNew("minio.secretKey");
-        log.debug("minio淇℃伅锛�" + domainUrl + "(" + accessKey + "/" + secretKey + ")");
-    }
-
-    /**
-     * 鑾峰彇minio瀹㈡埛绔疄渚�
-     *
-     * @return {@link MinioClient}
-     */
-    public static MinioClient getMinioClient() {
-        if (minioClient == null) {
-            synchronized (MinioClientSingleton.class) {
-                if (minioClient == null) {
-                    minioClient = MinioClient.builder()
-                            .endpoint(domainUrl)
-                            .credentials(accessKey, secretKey)
-                            .build();
-                }
-            }
-        }
-        return minioClient;
-    }
-
-    /*yml閰嶇疆淇℃伅鑾峰彇*/
-    public static String getYmlNew(String key) {
-        Resource resource = new ClassPathResource("application-ard.yml");
-        Properties properties = null;
-        try {
-            YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
-            yamlFactory.setResources(resource);
-            properties = yamlFactory.getObject();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        return properties.get(key).toString();
-    }
-
-}
-
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 5c35e6d..771c21f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -1,15 +1,13 @@
 package com.ruoyi.device.hiksdk.service.impl;
 
-import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.utils.file.FileUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.device.channel.domain.ArdChannel;
-import com.ruoyi.device.channel.service.IArdChannelService;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
 import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
@@ -21,7 +19,7 @@
 import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.Base64;
@@ -32,7 +30,6 @@
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 import static com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK.*;
 
@@ -47,8 +44,12 @@
 @Service
 public class HikClientServiceImpl implements IHikClientService {
 
+    @Value("${minio.endpoint}")
+    private static String endpoint;
     @Resource
-    IArdCamerasService ardCamerasService;
+    private IArdCamerasService ardCamerasService;
+    @Resource
+    private MinioUtils minioUtil;
 
     private static HCNetSDK hCNetSDK;
 
@@ -1149,16 +1150,14 @@
             byte[] array = jpegBuffer.array();
             //瀛樺偍鍒癿inio
             String BucketName = "pic";
-            String uuid = UUID.randomUUID().toString().replace("-", "");
-            String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-            String ObjectName = time + "/" + uuid + ".jpeg";
+            String ObjectName = "capture/" + IdUtils.simpleUUID() + ".jpeg";
             String ContentType = "image/JPEG";
             InputStream input = new ByteArrayInputStream(array);
             String url = "";
             try {
-                boolean b = MinioUtils.uploadObject(BucketName, ObjectName, input, input.available(), ContentType);
+                boolean b = minioUtil.uploadObject(BucketName, ObjectName, input, input.available(), ContentType);
                 if (b) {
-                    url = MinioUtils.getBucketObjectUrl(BucketName, ObjectName);
+                    url = minioUtil.getBucketObjectUrl(BucketName, ObjectName);
                     log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
                 }
             } catch (IOException ex) {
@@ -1342,9 +1341,9 @@
             FileInputStream stream = new FileInputStream(path);
             String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
             String recordName = cameraId + "/" + time + "/" + ObjectName + ".mp4";
-            boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType);
+            boolean b = minioUtil.uploadObject(BucketName, recordName, stream, stream.available(), ContentType);
             if (b) {
-                url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName;
+                url = endpoint + "/" + BucketName + "/" + recordName;
                 log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
             }
             return url;
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 5644b88..0e09344 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -31,7 +31,7 @@
  * @date 2023-05-30
  */
 @Service
-@Slf4j(topic = "PatrolInspectionTask")
+@Slf4j(topic = "patrolInspectionTask")
 public class ArdVideoInspectTaskServiceImpl implements IArdVideoInspectTaskService {
     @Resource
     private ArdVideoInspectTaskMapper ardVideoInspectTaskMapper;
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
index 65b4e5e..62bd764 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
@@ -12,7 +12,7 @@
  * @Date: 2023骞�06鏈�01鏃�8:57
  * @Version: 1.0
  **/
-@Slf4j(topic = "PatrolInspectionTask")
+@Slf4j(topic = "patrolInspectionTask")
 class InspectionTask implements Runnable {
 
     private String taskId;
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
index d440ac7..bf0ff9d 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
@@ -22,7 +22,7 @@
  **/
 
 @Component
-@Slf4j(topic = "PatrolInspectionTask")
+@Slf4j(topic = "patrolInspectionTask")
 public class InspectionTaskManager {
 
     @Resource
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
index e8b45ba..36eede2 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
@@ -47,8 +47,8 @@
                 // 鍚姩鍚庡彴杩涚▼
                 CmdUtils.commandStart(processName, cmd, null);
                 // 鍚姩cmd绐楀彛
-//            String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"};
-//            CmdUtils.commandStart(command);
+//                String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"};
+//                CmdUtils.commandStart(command);
             }
         }
     }
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java
new file mode 100644
index 0000000..28b2235
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java
@@ -0,0 +1,35 @@
+package com.ruoyi.storage.minio.utils;
+
+import io.minio.MinioClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @ClassName: MinioClientSingleton
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�05鏈�18鏃�9:32
+ * @Version: 1.0
+ **/
+@Slf4j(topic = "minio")
+@Component
+public class MinioConfig {
+    @Value("${minio.endpoint}")
+    private String endpoint;
+    @Value("${minio.accessKey}")
+    private String accessKey;
+    @Value("${minio.secretKey}")
+    private String secretKey;
+
+    @Bean
+    public MinioClient getMinioClient() {
+        return MinioClient.builder()
+                .endpoint(endpoint)
+                .credentials(accessKey, secretKey)
+                .build();
+    }
+
+}
+
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
index c063b73..7cbcec6 100644
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
@@ -2,13 +2,14 @@
 
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import io.minio.*;
 import io.minio.http.Method;
 import io.minio.messages.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -22,19 +23,23 @@
  **/
 @SuppressWarnings("ALL")
 @Slf4j(topic = "minio")
+@Component
 public class MinioUtils {
+
+    @Resource
+    MinioClient minioClient;
 
     /**
      * 鍒ゆ柇妗舵槸鍚﹀瓨鍦�
      */
-    public static boolean exitsBucket(String bucketName) {
+    public boolean exitsBucket(String bucketName) {
         boolean found = false;
         try {
             if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
-            found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs);
+            found = minioClient.bucketExists(bucketExistsArgs);
 
         } catch (Exception ex) {
             log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage());
@@ -45,14 +50,14 @@
     /**
      * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏�
      */
-    public static boolean createBucket(String bucketName) {
+    public boolean createBucket(String bucketName) {
         try {
             if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             /*鍒涘缓妗�*/
             MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build();
-            MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs);
+            minioClient.makeBucket(makeBucketArgs);
             /*璁剧疆绛栫暐*/
             String sb = "{\"Version\":\"2012-10-17\"," +
                     "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
@@ -72,7 +77,7 @@
             queueConfiguration.setQueue("arn:minio:sqs::_:mqtt");
 
             //璁剧疆浜嬩欢
-            List<EventType> events=new ArrayList<>();
+            List<EventType> events = new ArrayList<>();
             events.add(EventType.OBJECT_REMOVED_ANY);
             events.add(EventType.OBJECT_CREATED_ANY);
             queueConfiguration.setEvents(events);
@@ -82,8 +87,8 @@
             SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder()
                     .bucket(bucketName)
                     .config(config).build();
-            MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs);
-            MinioClientSingleton.getMinioClient().setBucketNotification(setBucketNotificationArgs);
+            minioClient.setBucketPolicy(setBucketPolicyArgs);
+            minioClient.setBucketNotification(setBucketNotificationArgs);
 
             return true;
         } catch (Exception ex) {
@@ -97,11 +102,11 @@
      *
      * @param bucket 妗跺悕绉�
      */
-    public static boolean removeBucket(String bucket) {
+    public boolean removeBucket(String bucket) {
         try {
             boolean found = exitsBucket(bucket);
             if (found) {
-                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build());
+                Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucket).build());
                 for (Result<Item> result : myObjects) {
                     Item item = result.get();
                     //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐�
@@ -110,7 +115,7 @@
                     }
                 }
                 // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴��
-                MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
+                minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
                 found = exitsBucket(bucket);
                 return !found;
             }
@@ -125,9 +130,9 @@
      *
      * @return
      */
-    public static List<Bucket> getListBuckets() {
+    public List<Bucket> getListBuckets() {
         try {
-            return MinioClientSingleton.getMinioClient().listBuckets();
+            return minioClient.listBuckets();
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -143,7 +148,7 @@
      * @param expires    澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ
      * @return
      */
-    public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
+    public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) {
         String url = "";
         if (exitsBucket(bucketName)) {
             try {
@@ -153,7 +158,7 @@
                         .object(objectName)
                         .expiry(expires, timeUnit)
                         .build();
-                url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+                url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             } catch (Exception ex) {
                 log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
             }
@@ -171,7 +176,7 @@
      * @鍒涘缓鏃堕棿 2023/5/18 12:16
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static String putObjectAndGetUrl(String bucketName, MultipartFile file) {
+    public String putObjectAndGetUrl(String bucketName, MultipartFile file) {
         if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
@@ -200,7 +205,7 @@
                     .stream(inputStream, file.getSize(), -1)
                     .contentType(file.getContentType())
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             inputStream.close();
             /*鑾峰彇url*/
             GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -209,7 +214,7 @@
                     .object(fileName)
                     .method(Method.GET)
                     .build();
-            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
             return ObjectUrl;
         } catch (Exception ex) {
@@ -226,7 +231,7 @@
      * @鍒涘缓鏃堕棿 2023/5/18 12:16
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
+    public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
         if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
@@ -255,7 +260,7 @@
                     .stream(inputStream, file.getSize(), -1)
                     .contentType(file.getContentType())
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             inputStream.close();
             /*鑾峰彇url*/
             GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -264,7 +269,7 @@
                     .object(fileName)
                     .method(Method.GET)
                     .build();
-            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
             String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
             return ObjectUrl;
         } catch (Exception ex) {
@@ -280,12 +285,12 @@
      * @param objectName 瀵硅薄鍚嶇О
      * @return boolean
      */
-    public static boolean removeObject(String bucket, String objectName) {
+    public boolean removeObject(String bucket, String objectName) {
         try {
             boolean exsit = exitsBucket(bucket);
             if (exsit) {
                 RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build();
-                MinioClientSingleton.getMinioClient().removeObject(removeObjectArgs);
+                minioClient.removeObject(removeObjectArgs);
                 return true;
             }
         } catch (Exception e) {
@@ -300,7 +305,7 @@
      * @param objectNames 瀵硅薄鍚嶇О
      * @return boolean
      */
-    public static boolean removeObjects(String bucket, List<String> objectNames) {
+    public boolean removeObjects(String bucket, List<String> objectNames) {
         if (exitsBucket(bucket)) {
             try {
                 List<DeleteObject> objects = new LinkedList<>();
@@ -308,7 +313,7 @@
                     objects.add(new DeleteObject(str));
                 }
                 RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build();
-                Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs);
+                Iterable<Result<DeleteError>> results = minioClient.removeObjects(removeObjectsArgs);
                 /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/
                 for (Result<DeleteError> result : results) {
                     DeleteError error = result.get();
@@ -329,13 +334,38 @@
      * @param bucket 妗跺悕绉�
      * @return {@link List}<{@link String}>
      */
-    public static List<String> getBucketObjectName(String bucket) {
+    public List<String> getBucketObjectName(String bucket) {
         boolean exsit = exitsBucket(bucket);
         if (exsit) {
             List<String> listObjetcName = new ArrayList<>();
             try {
                 ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().bucket(bucket).build();
-                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs);
+                Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs);
+                for (Result<Item> result : myObjects) {
+                    Item item = result.get();
+                    listObjetcName.add(item.objectName());
+                }
+                return listObjetcName;
+            } catch (Exception ex) {
+                log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage());
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉�
+     *
+     * @param [bucket,prefix]
+     * @return {@link List}<{@link String}>
+     */
+    public List<String> getBucketObjectName(String bucket, String prefix) {
+        boolean exsit = exitsBucket(bucket);
+        if (exsit) {
+            List<String> listObjetcName = new ArrayList<>();
+            try {
+                ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix(prefix).bucket(bucket).build();
+                Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs);
                 for (Result<Item> result : myObjects) {
                     Item item = result.get();
                     listObjetcName.add(item.objectName());
@@ -355,7 +385,7 @@
      * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�)
      * @return
      */
-    public static String getBucketObjectUrl(String bucketName, String objectName) {
+    public String getBucketObjectUrl(String bucketName, String objectName) {
         try {
             if (!exitsBucket(bucketName)) {
                 return "";
@@ -366,7 +396,9 @@
                     .object(objectName)
                     .method(Method.GET)
                     .build();
-            return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
+            return ObjectUrl;
         } catch (Exception ex) {
             log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage());
         }
@@ -382,7 +414,7 @@
      * @param size        饧も缉
      * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -393,7 +425,7 @@
                     .stream(stream, size, -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage());
@@ -409,7 +441,7 @@
      * @param file        饨備欢
      * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -421,7 +453,7 @@
                     .stream(fileInputStream, file.length(), -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -437,7 +469,7 @@
      * @param MultipartFile 饨備欢
      * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -449,7 +481,7 @@
                     .stream(inputStream, multipartFile.getSize(), -1)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -465,7 +497,7 @@
      * @param MultipartFile 饨備欢
      * @param contextType   绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞�
      */
-    public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
+    public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -482,7 +514,7 @@
                     .stream(inputStream, multipartFile.getSize(), -1)
                     .contentType(contextType)
                     .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            minioClient.putObject(putObjectArgs);
             return true;
         } catch (Exception ex) {
             log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage());
@@ -498,7 +530,7 @@
      * @param localFilePathName
      * @return
      */
-    public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
+    public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
         try {
             if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
@@ -514,7 +546,7 @@
                     .filename(localFilePathName)
                     .contentType(contextType)
                     .build();
-            ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs);
+            ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(uploadObjectArgs);
             return true;
         } catch (Exception e) {
             log.error("minio upload object file error " + e.getMessage());
@@ -530,42 +562,28 @@
      * @鍒涘缓鏃堕棿 2023/2/6 10:32
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
-        Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder()
+    public Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
+        Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
                 .bucket(bucketName)
                 .recursive(true)
                 .build());
         return listObjects;
     }
 
-    public static void main(String[] args) {
-        //        /*鍒犻櫎妗�*/
-        //        boolean b = removeBucket("lsy");
-        //        log.info(String.valueOf(b));
-        //        /*鍒涘缓妗�*/
-        //        boolean lsy = createBucket("lsy");
-        //        log.info(String.valueOf(lsy));
-        //        /*鍒ゆ柇妗舵槸鍚﹀瓨鍦�*/
-        //        boolean pic = exitsBucket("lsy");
-        //        log.info(String.valueOf(pic));
-        /*鏌ヨ鎵�鏈夋《*/
-        //        List<Bucket> listBuckets = getListBuckets();
-        //        for (Bucket bucket : listBuckets) {
-        //            log.info(bucket.name());
-        //        }
-        String bucket = "lsy";
-        String filename = UUID.randomUUID().toString().replace("-", "") + "pic.jpeg";
-        String fileFullPath = "C:\\Users\\Administrator\\Desktop\\寰俊鎴浘_20230518102605.png";
-        //        uploadObject(bucket, filename, fileFullPath, "Image/jpeg");
-        //        String url = getObjectWithExpired(bucket, filename, 10, SECONDS);
-        //        System.out.println(url);
-        boolean b = removeBucket(bucket);
-        System.out.println(b);
-        //        boolean b = uploadObjectBylocalPath(bucket, filename, fileFullPath);
-        //        System.out.println(b);
-        //String url = getObjectWithExpired(bucket, filename, 10000);
-        //
-        //String url = getBucketObject(bucket, filename);
-        //      System.out.println(url); package com.example.minio;
+    /**
+     * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
+     * @鍙傛暟 [bucketName, prefix]
+     * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>>
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/6 10:32
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) {
+        Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()
+                .bucket(bucketName)
+                .prefix(prefix)
+                .recursive(true)
+                .build());
+        return listObjects;
     }
 }
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
index 3ecae28..ad6a795 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -13,7 +13,7 @@
 import com.ruoyi.sy.gps31.PushClientImplAlarm;
 import com.ruoyi.sy.gps31.PushClientImplPosition;
 import com.ruoyi.sy.service.IArdSyUserService;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysUserService;
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index 4cf89fa..788a2b2 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -1,6 +1,5 @@
 package com.ruoyi.sy.service.impl;
 
-import java.awt.geom.Point2D;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.ParseException;
@@ -24,19 +23,16 @@
 import com.ruoyi.sy.mapper.ArdSyCarDayMapper;
 import com.ruoyi.utils.tools.GisTool;
 import com.ruoyi.utils.websocket.util.WebSocketUtils;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import com.ruoyi.storage.minio.utils.MinioUtils;
 import com.ruoyi.sy.domain.ArdSyUser;
 import com.ruoyi.sy.gps31.PositionContainer;
 import com.ruoyi.sy.mapper.ArdSyUserMapper;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.utils.forest.SYClient;
 import com.ruoyi.utils.result.Results;
 import io.minio.GetPresignedObjectUrlArgs;
-import io.minio.ListObjectsArgs;
-import io.minio.PutObjectArgs;
 import io.minio.Result;
 import io.minio.http.Method;
 import io.minio.messages.Item;
@@ -83,7 +79,8 @@
     RedisCache redisCache;
     @Resource
     private ArdSyCarDayMapper ardSyCarDayMapper;
-
+    @Resource
+    private MinioUtils minioUtil;
     private Map<Integer, Map<String, String>> logInMap = new HashMap();
 
     private Map<String, Timer> userCarTimerMap = new HashMap();
@@ -147,7 +144,7 @@
                 objectNames.add(ardSyCar.getCarPicture().split("/sycar/")[1]);
             }
         }
-        MinioUtils.removeObjects("sycar", objectNames);
+        minioUtil.removeObjects("sycar", objectNames);
         return ardSyCarMapper.deleteArdSyCarByIds(ids);
     }
 
@@ -264,12 +261,12 @@
 
     @Override
     public List<Map<String, String>> getAllCarModel() {
-        boolean exsit = MinioUtils.exitsBucket("sycar");
+        boolean exsit = minioUtil.exitsBucket("sycar");
         if (exsit) {
             List<Map<String, String>> listObjetcName = new ArrayList<>();
             try {
-                ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build();
-                Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs);
+               // ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build();
+                Iterable<Result<Item>> myObjects = minioUtil.getObjectsByBucket("sycar","carmodel");
                 for (Result<Item> result : myObjects) {
                     Item item = result.get();
                     Map<String, String> map = new HashMap();
@@ -332,16 +329,16 @@
             if (ardSyCarr.getCarPicture() != null || !ardSyCarr.getCarPicture().equals("")) {
                 String objectName = ardSyCarr.getCarPicture().split("/sycar/")[1];
                 objectNames.add(objectName);
-                MinioUtils.removeObjects("sycar", objectNames);
+                minioUtil.removeObjects("sycar", objectNames);
             }
         }
         //鍒ゆ柇鏂囦欢鏄惁涓虹┖
         if (null == carPicture || 0 == carPicture.getSize()) {
             return "";
         }
-        boolean exsit = MinioUtils.exitsBucket("sycar");
+        boolean exsit = minioUtil.exitsBucket("sycar");
         if (!exsit) {
-            boolean bucket = MinioUtils.createBucket("sycar");
+            boolean bucket = minioUtil.createBucket("sycar");
         }
         //鏂囦欢鍚�
         String originalFilename = carPicture.getOriginalFilename();
@@ -350,14 +347,15 @@
         try {
             InputStream inputStream = carPicture.getInputStream();
             /*涓婁紶瀵硅薄*/
-            PutObjectArgs putObjectArgs = PutObjectArgs
-                    .builder()
-                    .bucket("sycar")
-                    .object(fileName)
-                    .stream(inputStream, carPicture.getSize(), -1)
-                    .contentType(carPicture.getContentType())
-                    .build();
-            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+//            PutObjectArgs putObjectArgs = PutObjectArgs
+//                    .builder()
+//                    .bucket("sycar")
+//                    .object(fileName)
+//                    .stream(inputStream, carPicture.getSize(), -1)
+//                    .contentType(carPicture.getContentType())
+//                    .build();
+//            MinioConfig.getMinioClient().putObject(putObjectArgs);
+            minioUtil.uploadObject("sycar",fileName,inputStream,carPicture.getSize(),carPicture.getContentType());
             inputStream.close();
             /*鑾峰彇url*/
             GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
@@ -366,8 +364,8 @@
                     .object(fileName)
                     .method(Method.GET)
                     .build();
-            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
-            String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
+            //String presignedObjectUrl = MinioConfig.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String ObjectUrl = minioUtil.getBucketObjectUrl("sycar", fileName);
             if (id != null && !id.equals("")) {//id涓洪潪蹇呰
                 ArdSyCar ardSyCar = new ArdSyCar();
                 ardSyCar.setId(id);
@@ -1143,9 +1141,7 @@
                 List<Map<String, Object>> carGPSMap = (List<Map<String, Object>>) carGPSTrack.get("list");
                 Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng"));
                 Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat"));
-                Point point = new Point();
-                point.setLongitude(lng);
-                point.setLatitude(lat);
+                Point point = new Point(lng,lat);
                 boolean inPolygon = GisTool.isInPolygon(point, partitionLocation);
                 if (inPolygon) {
                     carMap.put("longitude", lng);
diff --git a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java
index 7a69f81..2d48af9 100644
--- a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java
+++ b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java
@@ -8,32 +8,34 @@
  * @Version: 1.0
  **/
 
-import com.ruoyi.app.position.domain.ArdAppPosition;
-import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import com.ruoyi.common.utils.ConfigUtils;
+import com.ruoyi.common.utils.DictUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
+import javax.annotation.PostConstruct;
 import java.sql.*;
-import java.util.*;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 @Slf4j
+@Component
 public class ReadAccessDatabase {
 
     public static void main(String[] args) {
-//        // 澶氫釜鏁版嵁搴撴枃浠惰矾寰�
-//        String[] dbPaths = {
-//                "D:\\mdb\\閬撹矾涓績绾�.mdb",
-//                "D:\\mdb\\闃查鏋�-鐏屾湪.mdb",
-//                // 娣诲姞鏇村鐨勬暟鎹簱鏂囦欢璺緞
-//        };
-//
-//        // 閬嶅巻姣忎釜鏁版嵁搴撴枃浠�
-//        for (String dbPath : dbPaths) {
-//            readDataFromAccessDatabase(dbPath);
-//        }
+        // 澶氫釜鏁版嵁搴撴枃浠惰矾寰�
+        String[] dbPaths = {
+                "D:\\Workspaces\\ard\\瀹夌憺杈惧伐浣滆祫鏂橽\mdb\\閬撹矾涓績绾�.mdb"
+//                "D:\\Workspaces\\ard\\瀹夌憺杈惧伐浣滆祫鏂橽\mdb\\闃查鏋�-鐏屾湪.mdb",
+                // 娣诲姞鏇村鐨勬暟鎹簱鏂囦欢璺緞
+        };
+
+        // 閬嶅巻姣忎釜鏁版嵁搴撴枃浠�
+        for (String dbPath : dbPaths) {
+            readDataFromAccessDatabase(dbPath);
+        }
     }
 
     public static void readDataFromAccessDatabase(String dbPath) {
@@ -54,16 +56,16 @@
                 if (!tableName.equals("閬撹矾涓績绾�")) {
                     continue;
                 }
-                System.out.println("琛ㄥ悕: " + tableName);
+                log.info("琛ㄥ悕: " + tableName);
 
                 // 鑾峰彇琛ㄧ殑瀛楁鍏冩暟鎹�
- //               ResultSet column = metaData.getColumns(null, null, tableName, null);
+                ResultSet column = metaData.getColumns(null, null, tableName, null);
                 // 閬嶅巻瀛楁
-//                while (column.next()) {
-//                    String columnName = column.getString("COLUMN_NAME");
-//                    System.out.println("瀛楁鍚�: " + columnName);
-//                }
-//                column.close();
+                while (column.next()) {
+                    String columnName = column.getString("COLUMN_NAME");
+                    log.info("瀛楁鍚�: " + columnName);
+                }
+                column.close();
                 // 鎵ц鏌ヨ鎿嶄綔
                 String sql = "SELECT * FROM " + tableName; // 鏇挎崲涓轰綘瑕佹煡璇㈢殑琛ㄥ悕
                 Statement statement = connection.createStatement();
@@ -72,12 +74,12 @@
                 while (resultSet.next()) {
                     // 璇诲彇姣忎竴琛屾暟鎹�
                     String id = resultSet.getString(1); // 鏍规嵁琛ㄤ腑鐨勫垪鍚嶈幏鍙栨暟鎹�
-                    String name = resultSet.getString("缂栧彿");
-
+                    String no = resultSet.getString("缂栧彿");
+                    String name = resultSet.getString("閬撹矾鍚嶇О");
                     // 鍙互鏍规嵁鍏蜂綋鐨勮〃缁撴瀯缁х画鑾峰彇鍏朵粬瀛楁鐨勬暟鎹�
 
                     // 鍦ㄨ繖閲屽鐞嗚幏鍙栧埌鐨勬暟鎹紝渚嬪杈撳嚭鍒版帶鍒跺彴鎴栦繚瀛樺埌闆嗗悎涓�
-                    System.out.println("ID: " + id + ", Name: " + name);
+                    log.info("ID: " + id + ", No: " + no+ ", Name: " + name);
                 }
                 // 鍏抽棴杩炴帴
                 resultSet.close();
@@ -89,5 +91,7 @@
             e.printStackTrace();
         }
     }
+
+
 }
 
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
index 37a4a18..00f5496 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java
@@ -3,6 +3,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.*;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Component;
@@ -18,12 +19,30 @@
 @Slf4j(topic = "mqtt")
 public class MqttConsumer implements ApplicationRunner {
 
+    @Value("${mqtt.enabled}")
+    private Boolean MQTT_ENABLED;
+    @Value("${mqtt.topic}")
+    private String MQTT_TOPIC;
+    @Value("${mqtt.host}")
+    private String MQTT_HOST;
+    @Value("${mqtt.clientId}")
+    private String MQTT_CLIENT_ID;
+    @Value("${mqtt.username}")
+    private String MQTT_USER_NAME;
+    @Value("${mqtt.password}")
+    private String MQTT_PASSWORD;
+    @Value("${mqtt.timeout}")
+    private int MQTT_TIMEOUT;
+    @Value("${mqtt.keepalive}")
+    private int MQTT_KEEP_ALIVE;
+
     private static MqttClient client;
+
 
     @Override
     public void run(ApplicationArguments args) {
         log.debug("鍒濆鍖栧苟鍚姩mqtt......");
-        if(PropertiesUtil.MQTT_ENABLED)
+        if(MQTT_ENABLED)
         {
             this.connect();
         }
@@ -38,7 +57,7 @@
             getClient();
             // 2 璁剧疆閰嶇疆
             MqttConnectOptions options = getOptions();
-            String[] topic = PropertiesUtil.MQTT_TOPIC.split(",");
+            String[] topic = MQTT_TOPIC.split(",");
             // 3 娑堟伅鍙戝竷璐ㄩ噺
             int[] qos = getQos(topic.length);
             // 4 鏈�鍚庤缃�
@@ -54,7 +73,7 @@
     public void getClient() {
         try {
             if (null == client) {
-                client = new MqttClient(PropertiesUtil.MQTT_HOST, PropertiesUtil.MQTT_CLIENT_ID, new MemoryPersistence());
+                client = new MqttClient(MQTT_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
             }
             log.debug("--鍒涘缓mqtt瀹㈡埛绔�");
         } catch (Exception e) {
@@ -68,12 +87,12 @@
     public MqttConnectOptions getOptions() {
         MqttConnectOptions options = new MqttConnectOptions();
         //璁剧疆鐢ㄦ埛鍚嶅瘑鐮�
-        options.setUserName(PropertiesUtil.MQTT_USER_NAME);
-        options.setPassword(PropertiesUtil.MQTT_PASSWORD.toCharArray());
+        options.setUserName(MQTT_USER_NAME);
+        options.setPassword(MQTT_PASSWORD.toCharArray());
         // 璁剧疆瓒呮椂鏃堕棿
-        options.setConnectionTimeout(PropertiesUtil.MQTT_TIMEOUT);
+        options.setConnectionTimeout(MQTT_TIMEOUT);
         // 璁剧疆浼氳瘽蹇冭烦鏃堕棿
-        options.setKeepAliveInterval(PropertiesUtil.MQTT_KEEP_ALIVE);
+        options.setKeepAliveInterval(MQTT_KEEP_ALIVE);
         // 鏄惁娓呴櫎session
         options.setCleanSession(true);
         log.debug("--鐢熸垚mqtt閰嶇疆瀵硅薄");
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
index 09fa6c9..8504a14 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -92,10 +92,10 @@
             if (null != topic && null != qos) {
                 if (client.isConnected()) {
                     client.subscribe(topic, qos);
-                    log.info("mqtt杩炴帴鎴愬姛锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID);
+                    log.info("mqtt杩炴帴鎴愬姛" );
                     log.info("--璁㈤槄涓婚:锛�" + Arrays.toString(topic));
                 } else {
-                    log.info("mqtt杩炴帴澶辫触锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID);
+                    log.info("mqtt杩炴帴澶辫触");
                 }
             }
         } catch (Exception e) {
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java
deleted file mode 100644
index 0d9b555..0000000
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ruoyi.utils.mqtt;
-
-import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.stereotype.Component;
-
-import java.util.Objects;
-import java.util.Properties;
-
-/**
- * @Description: 鑾峰彇閰嶇疆淇℃伅
- * @ClassName: PropertiesUtil
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�06鏈�06鏃�9:40
- * @Version: 1.0
- **/
-@Component
-public class PropertiesUtil {
-
-    public static String MQTT_HOST;
-    public static String MQTT_CLIENT_ID;
-    public static String MQTT_USER_NAME;
-    public static String MQTT_PASSWORD;
-    public static String MQTT_TOPIC;
-    public static Integer MQTT_TIMEOUT;
-    public static Integer MQTT_KEEP_ALIVE;
-    public static Boolean MQTT_ENABLED;
-    static {
-        MQTT_HOST = getYmlNew("mqtt.host");
-        MQTT_CLIENT_ID = getYmlNew("mqtt.clientId");
-        MQTT_USER_NAME = getYmlNew("mqtt.username");
-        MQTT_PASSWORD = getYmlNew("mqtt.password");
-        MQTT_TOPIC = getYmlNew("mqtt.topic");
-        MQTT_TIMEOUT = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.timeout")));
-        MQTT_KEEP_ALIVE = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.keepalive")));
-        MQTT_ENABLED = Boolean.valueOf(getYmlNew("mqtt.enabled"));
-    }
-
-    public static String getYmlNew(String key) {
-        Resource resource = new ClassPathResource("application-ard.yml");
-        Properties properties;
-        try {
-            YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
-            yamlFactory.setResources(resource);
-            properties = yamlFactory.getObject();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        assert properties != null;
-        return properties.get(key).toString();
-    }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
index 48c156f..4682ff7 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
@@ -35,15 +35,15 @@
     }
 
     public static void main(String[] args) {
-//        // 琚娴嬬殑缁忕含搴︾偣
-//        Point point= new Point(126.649261,45.687377);
-//        // 鍟嗕笟鍖哄煙锛堢櫨搴﹀杈瑰舰鍖哄煙缁忕含搴﹂泦鍚堬級
-//        List<Point> partitionLocation = new ArrayList<>();
-//        partitionLocation.add(new Point(126.64459,45.688548));
-//        partitionLocation.add(new Point(126.653376,45.68938));
-//        partitionLocation.add(new Point(126.645776,45.685048));
-//        partitionLocation.add(new Point(126.654184,45.685778));
-//        System.out.println(isInPolygon(point,partitionLocation));
+        // 琚娴嬬殑缁忕含搴︾偣
+        Point point= new Point(126.649261,45.687377);
+        // 鍟嗕笟鍖哄煙锛堢櫨搴﹀杈瑰舰鍖哄煙缁忕含搴﹂泦鍚堬級
+        List<Point> partitionLocation = new ArrayList<>();
+        partitionLocation.add(new Point(126.64459,45.688548));
+        partitionLocation.add(new Point(126.653376,45.68938));
+        partitionLocation.add(new Point(126.645776,45.685048));
+        partitionLocation.add(new Point(126.654184,45.685778));
+        System.out.println(isInPolygon(point,partitionLocation));
     }
 
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java b/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
index eb1daf8..80d9235 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
@@ -1,7 +1,10 @@
 package com.ruoyi.utils.tools;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @Description:
@@ -11,8 +14,15 @@
  * @Version: 1.0
  **/
 @Data
+@NoArgsConstructor
 public class Point{
     private static final long serialVersionUID = 1L;
     private Double longitude;
     private Double latitude;
+
+    @JsonCreator
+    public Point(@JsonProperty("longitude") Double longitude,@JsonProperty("latitude")Double latitude) {
+        this.longitude = longitude;
+        this.latitude = latitude;
+    }
 }
diff --git a/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml b/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml
index 9a6d13b..0fdbcad 100644
--- a/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml
+++ b/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml
@@ -28,6 +28,7 @@
             <if test="eventType != null  and eventType != ''"> and event_type = #{eventType}</if>
             <if test="host != null  and host != ''"> and host = #{host}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectStorageMinioEventById" parameterType="String" resultMap="StorageMinioEventResult">
diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html
index a9acd06..15e9981 100644
--- a/ard-work/src/main/resources/templates/test.html
+++ b/ard-work/src/main/resources/templates/test.html
@@ -162,7 +162,7 @@
             }
         })
 
-        opt = {"username": "liusuyi", "password": "5959932"};
+        opt = {"username": "admin", "password": "admin123"};
         $.ajax({
             headers: {
                 'Accept': 'application/json',
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
index 588480f..78f0cac 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
@@ -23,7 +23,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
 
 /**
diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml
deleted file mode 100644
index 1c15525..0000000
--- a/ruoyi-admin/src/main/resources/application-ard.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-# webrtc-streamer閰嶇疆
-webrtc:
-  enabled: false
-  host: 127.0.0.1:8000
-# minio閰嶇疆
-minio:
-  enabled: false
-  endpoint: http://192.168.1.227:9000
-  accessKey: admin
-  secretKey: xzx12345
-  path: G:/DATA
-# forest閰嶇疆
-forest:
-  backend: okhttp3             # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛�
-  max-connections: 1000        # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
-  max-route-connections: 500   # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
-  max-request-queue-size: 100  # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏�
-  max-async-thread-size: 300   # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟
-  max-async-queue-size: 16     # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬
-  timeout: 3000                # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛�
-  connect-timeout: 3000        # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
-  read-timeout: 3000           # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
-  max-retry-count: 0           # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛�
-  ssl-protocol: TLS            # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛�
-  log-enabled: true            # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛�
-  log-request: true            # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛�
-  log-response-status: true    # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛�
-  log-response-content: true   # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛�
-  async-mode: platform         # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛�
-#娴佸獟浣撹浆鐮佹湇鍔″櫒
-mediamtx:
-  enabled: false
-  host: 127.0.0.1
-#mqtt
-mqtt:
-  host: tcp://192.168.1.15:1883
-  clientId: m3
-  username: admin
-  password: xzx12345
-  topic: apponekey,radar
-  timeout: 100
-  keepalive: 60
-  enabled: true
-
-#寮傛绾跨▼姹犻厤缃�
-ThreadPoolTask:
-  corePoolSize: 20
-  maxPoolSize: 40
-  keepAliveSeconds: 300
-  queueCapacity: 50
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev-druid.yml b/ruoyi-admin/src/main/resources/application-dev-druid.yml
new file mode 100644
index 0000000..9f8f361
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-dev-druid.yml
@@ -0,0 +1,58 @@
+# 鏁版嵁婧愰厤缃�
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        driverClassName: org.postgresql.Driver
+        url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified
+        username: postgres
+        password: postgres
+        # 浠庡簱鏁版嵁婧�
+      slave:
+      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+      # enabled: true
+      # driverClassName: org.postgresql.Driver
+      # url: jdbc:postgresql://112.98.126.2:35432/ard732
+      # username: postgres
+      # password: Yykj.2017
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 10000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..961213b
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -0,0 +1,101 @@
+# 寮�鍙戠幆澧冮厤缃�
+server:
+  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+  port: 8080
+  servlet:
+    # 搴旂敤鐨勮闂矾寰�
+    context-path: /
+  tomcat:
+    # tomcat鐨刄RI缂栫爜
+    uri-encoding: UTF-8
+    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+    accept-count: 1000
+    threads:
+      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+      max: 800
+      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+      min-spare: 100
+# Spring閰嶇疆
+spring:
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+    host: 192.168.1.15
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+    password:
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
+# 鏃ュ織閰嶇疆
+logging:
+  level:
+    authorize: info
+    minio: info
+    hikSdk: info
+    stealAlarm: info
+    websocket: info
+    patrolInspectionTask: info
+    mqtt: info
+    guideQueue: info
+    rongCloud: info
+    cmd: info
+    uav: info
+    sy: info
+
+
+# webrtc-streamer閰嶇疆
+webrtc:
+  enabled: true
+  host: 127.0.0.1:8000
+# minio閰嶇疆
+minio:
+  enabled: false
+  endpoint: http://192.168.1.15:9001
+  accessKey: admin
+  secretKey: xzx12345
+  path: G:/DATA
+# forest閰嶇疆
+forest:
+  backend: okhttp3             # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛�
+  max-connections: 1000        # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
+  max-route-connections: 500   # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
+  max-request-queue-size: 100  # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏�
+  max-async-thread-size: 300   # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟
+  max-async-queue-size: 16     # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬
+  timeout: 3000                # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛�
+  connect-timeout: 3000        # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
+  read-timeout: 3000           # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
+  max-retry-count: 0           # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛�
+  ssl-protocol: TLS            # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛�
+  log-enabled: true            # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛�
+  log-request: true            # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛�
+  log-response-status: true    # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛�
+  log-response-content: true   # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛�
+  async-mode: platform         # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛�
+#娴佸獟浣撹浆鐮佹湇鍔″櫒
+mediamtx:
+  enabled: true
+  host: 127.0.0.1
+#mqtt
+mqtt:
+  host: tcp://192.168.1.15:1883
+  clientId: m227
+  username: admin
+  password: xzx12345
+  topic: minioEvent
+  timeout: 100
+  keepalive: 60
+  enabled: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
deleted file mode 100644
index 031a481..0000000
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# 鏁版嵁婧愰厤缃�
-spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        druid:
-            # 涓诲簱鏁版嵁婧�
-            master:
-                driverClassName: org.postgresql.Driver
-                url: jdbc:postgresql://111.40.46.199:15432/ry-vue?stringtype=unspecified
-                username: postgres
-                password: Yykj.2021
-#                url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified
-#                username: postgres
-#                password: postgres
-            # 浠庡簱鏁版嵁婧�
-            slave:
-                # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
-#                enabled: true
-#                driverClassName: org.postgresql.Driver
-#                url: jdbc:postgresql://112.98.126.2:35432/ard732
-#                username: postgres
-#                password: Yykj.2017
-            # 鍒濆杩炴帴鏁�
-            initialSize: 5
-            # 鏈�灏忚繛鎺ユ睜鏁伴噺
-            minIdle: 10
-            # 鏈�澶ц繛鎺ユ睜鏁伴噺
-            maxActive: 20
-            # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
-            maxWait: 60000
-            # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
-            timeBetweenEvictionRunsMillis: 60000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            minEvictableIdleTimeMillis: 300000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            maxEvictableIdleTimeMillis: 900000
-            # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
-            validationQuery: SELECT 1
-            testWhileIdle: true
-            testOnBorrow: false
-            testOnReturn: false
-            webStatFilter:
-                enabled: true
-            statViewServlet:
-                enabled: true
-                # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
-                allow:
-                url-pattern: /druid/*
-                # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
-                login-username: ruoyi
-                login-password: 123456
-            filter:
-                stat:
-                    enabled: true
-                    # 鎱QL璁板綍
-                    log-slow-sql: true
-                    slow-sql-millis: 1000
-                    merge-sql: true
-                wall:
-                    config:
-                        multi-statement-allow: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-prod-druid.yml b/ruoyi-admin/src/main/resources/application-prod-druid.yml
new file mode 100644
index 0000000..ede32e6
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-prod-druid.yml
@@ -0,0 +1,58 @@
+# 鏁版嵁婧愰厤缃�
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        driverClassName: org.postgresql.Driver
+        url: jdbc:postgresql://112.98.126.2:35432/ry-vue?stringtype=unspecified
+        username: postgres
+        password: Yykj.2017
+        # 浠庡簱鏁版嵁婧�
+      slave:
+      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+      # enabled: true
+      # driverClassName: org.postgresql.Driver
+      # url: jdbc:postgresql://112.98.126.2:35432/ard732
+      # username: postgres
+      # password: Yykj.2017
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 10000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..67cc120
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -0,0 +1,101 @@
+# 鐢熶骇鐜閰嶇疆
+server:
+  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+  port: 8080
+  servlet:
+    # 搴旂敤鐨勮闂矾寰�
+    context-path: /
+  tomcat:
+    # tomcat鐨刄RI缂栫爜
+    uri-encoding: UTF-8
+    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+    accept-count: 1000
+    threads:
+      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+      max: 800
+      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+      min-spare: 100
+# Spring閰嶇疆
+spring:
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+    host: 192.168.5.229
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+    password:
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
+# 鏃ュ織閰嶇疆
+logging:
+  level:
+    authorize: info
+    minio: info
+    hikSdk: info
+    stealAlarm: info
+    websocket: info
+    patrolInspectionTask: info
+    mqtt: info
+    guideQueue: info
+    rongCloud: info
+    cmd: info
+    uav: info
+    sy: info
+
+# webrtc-streamer閰嶇疆
+webrtc:
+  enabled: false
+  host: 192.168.5.229:8000
+
+# minio閰嶇疆
+minio:
+  enabled: false
+  endpoint: http://192.168.5.229:9001
+  accessKey: admin
+  secretKey: xzx12345
+  path: F:/DATA
+# forest閰嶇疆
+forest:
+  backend: okhttp3             # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛�
+  max-connections: 1000        # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
+  max-route-connections: 500   # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛�
+  max-request-queue-size: 100  # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏�
+  max-async-thread-size: 300   # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟
+  max-async-queue-size: 16     # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬
+  timeout: 3000                # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛�
+  connect-timeout: 3000        # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
+  read-timeout: 3000           # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛�
+  max-retry-count: 0           # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛�
+  ssl-protocol: TLS            # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛�
+  log-enabled: true            # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛�
+  log-request: true            # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛�
+  log-response-status: true    # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛�
+  log-response-content: true   # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛�
+  async-mode: platform         # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛�
+#娴佸獟浣撹浆鐮佹湇鍔″櫒
+mediamtx:
+  enabled: true
+  host: 192.168.5.229
+#mqtt
+mqtt:
+  host: tcp://192.168.5.229:1883
+  clientId: server229
+  username: admin
+  password: xzx12345
+  topic: minioEvent,apponekey,camera,external
+  timeout: 100
+  keepalive: 60
+  enabled: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 6903577..d97225f 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -14,33 +14,6 @@
   addressEnabled: false
   # 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃楠岃瘉
   captchaType: char
-
-# 寮�鍙戠幆澧冮厤缃�
-server:
-  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
-  port: 8080
-  servlet:
-    # 搴旂敤鐨勮闂矾寰�
-    context-path: /
-  tomcat:
-    # tomcat鐨刄RI缂栫爜
-    uri-encoding: UTF-8
-    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
-    accept-count: 1000
-    threads:
-      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
-      max: 800
-      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
-      min-spare: 100
-
-# 鏃ュ織閰嶇疆
-logging:
-  level:
-    com.ruoyi.utils.tube: debug
-    com.ruoyi.inspect: info
-    org.springframework: warn
-    com.example.mapper: debug
-
 # 鐢ㄦ埛閰嶇疆
 user:
   password:
@@ -48,60 +21,14 @@
     maxRetryCount: 5
     # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
     lockTime: 10
-
-# Spring閰嶇疆
-spring:
-  # 璧勬簮淇℃伅
-  messages:
-    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
-    basename: i18n/messages
-  profiles: 
-    active: druid,ard
-  # 鏂囦欢涓婁紶
-  servlet:
-     multipart:
-       # 鍗曚釜鏂囦欢澶у皬
-       max-file-size:  10MB
-       # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
-       max-request-size:  20MB
-  # 鏈嶅姟妯″潡
-  devtools:
-    restart:
-      # 鐑儴缃插紑鍏�
-      enabled: false
-  # redis 閰嶇疆
-  redis:
-    # 鍦板潃
-    host: 192.168.1.15
-    # 绔彛锛岄粯璁や负6379
-    port: 6379
-    # 鏁版嵁搴撶储寮�
-    database: 0
-    # 瀵嗙爜
-    password:
-    # 杩炴帴瓒呮椂鏃堕棿
-    timeout: 10s
-    lettuce:
-      pool:
-        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
-        min-idle: 0
-        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
-        max-idle: 8
-        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
-        max-active: 8
-        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
-        max-wait: -1ms
-  thymeleaf:
-    cache: false
 # token閰嶇疆
 token:
-    # 浠ょ墝鑷畾涔夋爣璇�
-    header: Authorization
-    # 浠ょ墝瀵嗛挜
-    secret: abcdefghijklmnopqrstuvwxyz
-    # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
-    expireTime: 30
-  
+  # 浠ょ墝鑷畾涔夋爣璇�
+  header: Authorization
+  # 浠ょ墝瀵嗛挜
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+  expireTime: 30
 # MyBatis閰嶇疆
 #mybatis:
 #    # 鎼滅储鎸囧畾鍖呭埆鍚�
@@ -114,6 +41,10 @@
   type-Aliases-Package: com.ruoyi.**.domain
   mapper-Locations: classpath*:mapper/**/*Mapper.xml
   config-Location: classpath:mybatis/mybatis-config.xml
+  global-config:
+    banner: off # 鍏抽棴mybatisplus鍚姩鍥炬爣
+    db-config: #涓婚敭涓嶇敤MyBatis plus鐨勯洩鑺辩畻娉�,鐢ㄦ暟鎹簱鐨勪富閿嚜澧�
+      id-type: auto
 #  configuration:
 #    # 鏄惁寮�鍚嚜鍔ㄩ┘宄板懡鍚嶈鍒欐槧灏�:浠庢暟鎹簱鍒楀悕鍒癑ava灞炴�ч┘宄板懡鍚嶇殑绫讳技鏄犲皠
 #    map-underscore-to-camel-case: true
@@ -121,30 +52,54 @@
 #    call-setters-on-nulls: true
 #    # 杩欎釜閰嶇疆浼氬皢鎵ц鐨剆ql鎵撳嵃鍑烘潵锛屽湪寮�鍙戞垨娴嬭瘯鐨勬椂鍊欏彲浠ョ敤
 #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-
 # PageHelper鍒嗛〉鎻掍欢
-pagehelper: 
+pagehelper:
   helperDialect: postgresql
   supportMethodsArguments: true
-  params: count=countSql 
-
+  params: count=countSql
 # Swagger閰嶇疆
 swagger:
   # 鏄惁寮�鍚痵wagger
   enabled: true
   # 璇锋眰鍓嶇紑
   pathMapping: /
-
 # knife4j澧炲己鍔熻兘
 knife4j:
   enable: true
-
 # 闃叉XSS鏀诲嚮
-xss: 
+xss:
   # 杩囨护寮�鍏�
   enabled: true
   # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
   excludes: /system/notice
   # 鍖归厤閾炬帴
   urlPatterns: /system/*,/monitor/*,/tool/*
+#寮傛绾跨▼姹犻厤缃�
+ThreadPoolTask:
+  corePoolSize: 20
+  maxPoolSize: 40
+  keepAliveSeconds: 300
+  queueCapacity: 50
+# Spring閰嶇疆
+spring:
+  # 璧勬簮淇℃伅
+  messages:
+    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+    basename: i18n/messages
+  # 鏂囦欢涓婁紶
+  servlet:
+    multipart:
+      # 鍗曚釜鏂囦欢澶у皬
+      max-file-size: 10MB
+      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+      max-request-size: 20MB
+  # 鏈嶅姟妯″潡
+  devtools:
+    restart:
+      # 鐑儴缃插紑鍏�
+      enabled: false
+  thymeleaf:
+    cache: false
+  profiles:
+    active: prod-druid,prod
+
diff --git a/ruoyi-admin/src/main/resources/banner.txt b/ruoyi-admin/src/main/resources/banner.txt
index 53d0f3d..4a3834f 100644
--- a/ruoyi-admin/src/main/resources/banner.txt
+++ b/ruoyi-admin/src/main/resources/banner.txt
@@ -1,13 +1,3 @@
 Application Version: ${ard.version}
 Spring Boot Version: ${spring-boot.version}
-      ___         ___         ___
-     /\  \       /\  \       /\  \
-    /::\  \     /::\  \     /::\  \
-   /:/\:\  \   /:/\:\  \   /:/\:\  \
-  /::\~\:\  \ /::\~\:\  \ /:/  \:\__\
- /:/\:\ \:\__/:/\:\ \:\__/:/__/ \:|__|
- \/__\:\/:/  \/_|::\/:/  \:\  \ /:/  /
-      \::/  /   |:|::/  / \:\  /:/  /
-      /:/  /    |:|\/__/   \:\/:/  /
-     /:/  /     |:|  |      \::/__/
-     \/__/       \|__|       ~~
+瀹夌憺杈�4.0骞冲彴寮�濮嬪惎鍔�
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml
index dfa352c..6cef4b9 100644
--- a/ruoyi-admin/src/main/resources/logback.xml
+++ b/ruoyi-admin/src/main/resources/logback.xml
@@ -69,11 +69,11 @@
         </encoder>
     </appender>
     <!-- Authorize鏃ュ織杈撳嚭  -->
-    <appender name="Authorize" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/Authorize.log</file>
+    <appender name="authorize" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/authorize.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 鎸夊ぉ鍥炴粴 daily -->
-            <fileNamePattern>${log.path}/Authorize.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <fileNamePattern>${log.path}/authorize.%d{yyyy-MM-dd}.log</fileNamePattern>
             <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
             <maxHistory>60</maxHistory>
         </rollingPolicy>
@@ -160,11 +160,11 @@
         </encoder>
     </appender>
     <!--PatrolInspectionTask鏃ュ織杈撳嚭-->
-    <appender name="PatrolInspectionTask" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/PatrolInspectionTask.log</file>
+    <appender name="patrolInspectionTask" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/patrolInspectionTask.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!--鎸夊ぉ鍥炴粴daily-->
-            <fileNamePattern>${log.path}/PatrolInspectionTask.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <fileNamePattern>${log.path}/patrolInspectionTask.%d{yyyy-MM-dd}.log</fileNamePattern>
             <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
             <maxHistory>60</maxHistory>
         </rollingPolicy>
@@ -241,53 +241,5 @@
     <!--绯荤粺鐢ㄦ埛鎿嶄綔鏃ュ織-->
     <logger name="sys-user" level="INFO">
         <appender-ref ref="sys-user"/>
-    </logger>
-    <!--Authorize鏃ュ織-->
-    <logger name="Authorize" level="INFO">
-        <appender-ref ref="Authorize"/>
-    </logger>
-    <!--minio鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="minio" level="INFO">
-        <appender-ref ref="minio"/>
-    </logger>
-    <!--hiksdk鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="hikSdk" level="debug">
-        <appender-ref ref="hikSdk"/>
-    </logger>
-    <!--鐩楃數鎶ヨ鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="stealAlarm" level="INFO">
-        <appender-ref ref="stealAlarm"/>
-    </logger>
-    <!--websocket鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="websocket" level="INFO">
-        <appender-ref ref="websocket"/>
-    </logger>
-    <!--鍏夌數宸℃鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="PatrolInspectionTask" level="INFO">
-        <appender-ref ref="PatrolInspectionTask"/>
-    </logger>
-    <!--mqtt鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="mqtt" level="debug">
-        <appender-ref ref="mqtt"/>
-    </logger>
-    <!--guideQueue鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="guideQueue" level="INFO">
-        <appender-ref ref="guideQueue"/>
-    </logger>
-    <!--rongCloud鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="rongCloud" level="INFO">
-        <appender-ref ref="rongCloud"/>
-    </logger>
-    <!--cmd鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="cmd" level="INFO">
-        <appender-ref ref="cmd"/>
-    </logger>
-    <!--鏃犱汉鏈烘棩蹇楁墦鍗扮瓑绾�-->
-    <logger name="uav" level="INFO">
-        <appender-ref ref="uav"/>
-    </logger>
-    <!--涓変竴杞﹁締鏃ュ織鎵撳嵃绛夌骇-->
-    <logger name="sy" level="INFO">
-        <appender-ref ref="sy"/>
     </logger>
 </configuration> 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysConfig.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
rename to ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysConfig.java
index c54678c..79e16ab 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysConfig.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.common.core.domain.entity;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
index 1098fd8..e035b3c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
@@ -1,10 +1,6 @@
 package com.ruoyi.common.core.redis;
 
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -249,8 +245,22 @@
      * 鏍规嵁鍓嶇紑鑾峰彇鎵�鏈夌殑key* 渚嬪锛歱ro_
      */
     public List<Object> getListKey(String prefix) {
-        Set<Object> keys = redisTemplate.keys(prefix+"*");
+        Set<Object> keys = redisTemplate.keys(prefix + "*");
         List<Object> values = redisTemplate.opsForValue().multiGet(keys);
         return values;
     }
+
+    /**
+     * 鏍规嵁鍓嶇紑鑾峰彇鎵�鏈夌殑key* 渚嬪锛歱ro_
+     */
+    public HashMap<String, Object> getMapKey(String prefix) {
+        HashMap<String, Object> map = new HashMap<>();
+        Set<String> keys = redisTemplate.keys(prefix + "*");
+        for (String key : keys) {
+            Object value = redisTemplate.opsForValue().get(key);
+            String nKey = key.replace(prefix, "");
+            map.put(nKey, value);
+        }
+        return map;
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ConfigUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ConfigUtils.java
new file mode 100644
index 0000000..1df7a75
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ConfigUtils.java
@@ -0,0 +1,55 @@
+package com.ruoyi.common.utils;
+
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.spring.SpringUtils;
+
+import java.util.Map;
+
+
+/**
+ * @Description: 閰嶇疆宸ュ叿绫�
+ * @ClassName: ConfigUtils
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�08鏈�23鏃�16:12:09
+ * @Version: 1.0
+ **/
+public class ConfigUtils {
+    /**
+     * 鏍规嵁閰嶇疆key鑾峰彇閰嶇疆value鍊�
+     *
+     * @param key 閰嶇疆key
+     * @return configValue 閰嶇疆value鍊�
+     */
+    public static String getConfigValue(String key) {
+        String configValue = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
+        if (StringUtils.isNotNull(configValue)) {
+            return configValue;
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夐厤缃俊鎭�
+     *
+     * @return configMap 閰嶇疆淇℃伅map
+     */
+    public static Map<String, Object> getConfigMap() {
+        Map<String, Object> configMap = SpringUtils.getBean(RedisCache.class).getMapKey(CacheConstants.SYS_CONFIG_KEY);
+        if (StringUtils.isNotNull(configMap)) {
+            return configMap;
+        }
+        return null;
+    }
+
+    /**
+     * 璁剧疆cache key
+     *
+     * @param configKey 鍙傛暟閿�
+     * @return 缂撳瓨閿甼ey
+     */
+    public static String getCacheKey(String configKey) {
+        return CacheConstants.SYS_CONFIG_KEY + configKey;
+    }
+
+}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
index 3ca0f65..69ea287 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java
@@ -6,6 +6,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -21,6 +22,8 @@
 @Component("MinioTask")
 @Slf4j(topic = "minio")
 public class MinioTask {
+    @Resource
+    MinioUtils minioUtil;
 
     public void delHistoryTask(Integer saveDays) {
         log.debug("鎵ц鍘嗗彶鏁版嵁鍒犻櫎");
@@ -30,7 +33,7 @@
             buckets.add("pic");
             buckets.add("record");
             for (String name : buckets) {
-                Iterable<Result<Item>> listObjectsPic = MinioUtils.getObjectsByBucket(name);
+                Iterable<Result<Item>> listObjectsPic = minioUtil.getObjectsByBucket(name);
                 for (Result<Item> result : listObjectsPic) {
                     Item item = result.get();
                     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
@@ -48,7 +51,7 @@
                         log.debug("objectTime : " + objectTime);
                         log.debug("expireTime : " + expireTime);
                         log.debug("objectTime 鏃堕棿鍦� expireTime 涔嬪墠,鎵ц鍒犻櫎");
-                        boolean b = MinioUtils.removeObject(name, item.objectName());
+                        boolean b = minioUtil.removeObject(name, item.objectName());
                         if (b) {
                             log.debug("鎴愬姛鍒犻櫎杩囨湡鏁版嵁锛�" + item.objectName() + "---" + item.lastModified());
                         }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/authorize/common/AuthorizeUtil.java b/ruoyi-system/src/main/java/com/ruoyi/authorize/common/AuthorizeUtil.java
index be030c1..ba7446a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/authorize/common/AuthorizeUtil.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/authorize/common/AuthorizeUtil.java
@@ -19,7 +19,7 @@
 import javax.crypto.spec.SecretKeySpec;
 import javax.xml.bind.DatatypeConverter;
 
-@Slf4j(topic="Authorize")
+@Slf4j(topic="authorize")
 public class AuthorizeUtil {
 
     public static String MachineCode="";
@@ -36,9 +36,9 @@
     public static void main(String[] args) {
 
         AuthorizeUtil ss = new AuthorizeUtil();
-        System.out.println("sysStr " + ss.parsLicense());
-        System.out.println("MachineCode " + ss.getMachineCode());
-        System.out.println("CPUCode     " + ss.getCPUCode());
+        log.debug("sysStr " + ss.parsLicense());
+        log.debug("MachineCode " + ss.getMachineCode());
+        log.debug("CPUCode     " + ss.getCPUCode());
         //String codeString=ss.parsLicense("b1db709f19d9769e536e2e29888e38b2");
         //System.out.println(codeString);
         //ss.makeTempLicense();
@@ -103,7 +103,9 @@
         } catch (Exception e) {
             log.error("鑾峰彇鏈哄櫒鐮佸紓甯革細"+e.getMessage());
         }
-        return Md5Utils.hash(sb.toString().toUpperCase());
+        String code = Md5Utils.hash(sb.toString().toUpperCase());
+        log.debug("鏈哄櫒鐮�:"+code);
+        return code;
     }
 
     public static String getCPUCode() {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
index 6bf1ca5..6918853 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.mapper;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 
 /**
  * 鍙傛暟閰嶇疆 鏁版嵁灞�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
index 50cdf83..6aebca6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.service;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 
 /**
  * 鍙傛暟閰嶇疆 鏈嶅姟灞�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
index dd79ede..3a42b75 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -5,7 +5,6 @@
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.constant.CacheConstants;
@@ -15,7 +14,7 @@
 import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.common.core.domain.entity.SysConfig;
 import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.system.service.ISysConfigService;
 

--
Gitblit v1.9.3