From e2ba762da8b42698d9477f7af93a2d3f8c7be373 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 05 八月 2023 16:44:23 +0800
Subject: [PATCH] 增加存储模块,将minio工具类迁移到存储包 增加minio的通知功能,通过mqtt将通知入库 修复配置文件自定义字段标黄的问题

---
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Records.java                   |   31 +
 ard-work/src/main/java/com/ruoyi/storage/minio/service/IStorageMinioEventService.java         |   68 +++
 ard-work/src/main/java/com/ruoyi/storage/minio/controller/StorageMinioEventController.java    |  104 +++++
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mObject.java                   |   20 +
 ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java |  136 +++++++
 ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java                          |   59 +-
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Bucket.java                    |   18 +
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Owneridentity.java             |   17 
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/JsonsRootBean.java             |   21 +
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Usermetadata.java              |   14 
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java                                     |    2 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java                               |    2 
 ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java        |   13 
 ard-work/src/main/java/com/ruoyi/storage/minio/mapper/StorageMinioEventMapper.java            |   61 +++
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/ResponseElements.java          |   22 +
 ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml                          |   95 +++++
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java                     |    2 
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java                         |   10 
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/userIdentity.java              |   14 
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/StorageMinioEvent.java                  |  167 +++++++++
 ruoyi-admin/src/main/resources/META-INF/spring-configuration-metadata.json                    |  108 ++++++
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mSource.java                   |   18 +
 ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java                |    4 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java         |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java           |    1 
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/S3.java                        |   21 +
 ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Requestparameters.java         |   21 +
 27 files changed, 1,003 insertions(+), 48 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 69a7747..03b7a05 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
@@ -1,28 +1,19 @@
 package com.ruoyi.app.position.controller;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.app.position.domain.ArdAppPosition;
 import com.ruoyi.app.position.service.IArdAppPositionService;
-import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
+import com.ruoyi.storage.minio.utils.MinioUtils;
 import com.ruoyi.rongcloud.service.RongCloudService;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserOnlineService;
 import com.ruoyi.system.service.ISysUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -210,7 +201,7 @@
     @ApiOperation("涓婁紶鏂囦欢")
     public AjaxResult uploadFile(MultipartFile file,String type)
     {
-        String url = MinioUtils.putObjectAndGetUrl("app",type, file);
+        String url = MinioUtils.putObjectAndGetUrl("app1",type, file);
         return AjaxResult.success(url);
     }
 }
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 82a6c73..cfc76bf 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
@@ -11,7 +11,7 @@
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
+import com.ruoyi.storage.minio.utils.MinioUtils;
 import com.sun.jna.Native;
 import com.sun.jna.Platform;
 import com.sun.jna.Pointer;
diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java
index fd62a92..56c08fb 100644
--- a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java
+++ b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java
@@ -2,14 +2,10 @@
 
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
 import com.ruoyi.rongcloud.service.RongCloudService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.List;
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/controller/StorageMinioEventController.java b/ard-work/src/main/java/com/ruoyi/storage/minio/controller/StorageMinioEventController.java
new file mode 100644
index 0000000..a6ea2a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/controller/StorageMinioEventController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.storage.minio.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.storage.minio.domain.StorageMinioEvent;
+import com.ruoyi.storage.minio.service.IStorageMinioEventService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 瀛樺偍浜嬩欢Controller
+ * 
+ * @author ard
+ * @date 2023-08-05
+ */
+@RestController
+@RequestMapping("/minio/event")
+public class StorageMinioEventController extends BaseController
+{
+    @Autowired
+    private IStorageMinioEventService storageMinioEventService;
+
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(StorageMinioEvent storageMinioEvent)
+    {
+        startPage();
+        List<StorageMinioEvent> list = storageMinioEventService.selectStorageMinioEventList(storageMinioEvent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭瀛樺偍浜嬩欢鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:export')")
+    @Log(title = "瀛樺偍浜嬩欢", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, StorageMinioEvent storageMinioEvent)
+    {
+        List<StorageMinioEvent> list = storageMinioEventService.selectStorageMinioEventList(storageMinioEvent);
+        ExcelUtil<StorageMinioEvent> util = new ExcelUtil<StorageMinioEvent>(StorageMinioEvent.class);
+        util.exportExcel(response, list, "瀛樺偍浜嬩欢鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇瀛樺偍浜嬩欢璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(storageMinioEventService.selectStorageMinioEventById(id));
+    }
+
+    /**
+     * 鏂板瀛樺偍浜嬩欢
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:add')")
+    @Log(title = "瀛樺偍浜嬩欢", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody StorageMinioEvent storageMinioEvent)
+    {
+        return toAjax(storageMinioEventService.insertStorageMinioEvent(storageMinioEvent));
+    }
+
+    /**
+     * 淇敼瀛樺偍浜嬩欢
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:edit')")
+    @Log(title = "瀛樺偍浜嬩欢", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody StorageMinioEvent storageMinioEvent)
+    {
+        return toAjax(storageMinioEventService.updateStorageMinioEvent(storageMinioEvent));
+    }
+
+    /**
+     * 鍒犻櫎瀛樺偍浜嬩欢
+     */
+    @PreAuthorize("@ss.hasPermi('minio:event:remove')")
+    @Log(title = "瀛樺偍浜嬩欢", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(storageMinioEventService.deleteStorageMinioEventByIds(ids));
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/StorageMinioEvent.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/StorageMinioEvent.java
new file mode 100644
index 0000000..0e28641
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/StorageMinioEvent.java
@@ -0,0 +1,167 @@
+package com.ruoyi.storage.minio.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 瀛樺偍浜嬩欢瀵硅薄 storage_minio_event
+ * 
+ * @author ard
+ * @date 2023-08-05
+ */
+public class StorageMinioEvent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private String id;
+
+    /** 浜嬩欢绫诲瀷 */
+    @Excel(name = "浜嬩欢绫诲瀷")
+    private String eventType;
+
+    /** 妗跺悕绉� */
+    @Excel(name = "妗跺悕绉�")
+    private String bucketName;
+
+    /** 浜嬩欢鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "浜嬩欢鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date eventTime;
+
+    /** 璇锋眰涓绘満 */
+    @Excel(name = "璇锋眰涓绘満")
+    private String host;
+
+    /** 璇锋眰鐢ㄦ埛 */
+    @Excel(name = "璇锋眰鐢ㄦ埛")
+    private String userName;
+
+    /** 璇锋眰鍦板潃 */
+    @Excel(name = "璇锋眰鍦板潃")
+    private String endpoint;
+
+    /** 瀵硅薄鍚嶇О */
+    @Excel(name = "瀵硅薄鍚嶇О")
+    private String objectName;
+
+    /** 瀵硅薄绫诲瀷 */
+    @Excel(name = "瀵硅薄绫诲瀷")
+    private String objectType;
+
+    /** 瀵硅薄澶у皬 */
+    @Excel(name = "瀵硅薄澶у皬")
+    private int objectSize;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setEventType(String eventType) 
+    {
+        this.eventType = eventType;
+    }
+
+    public String getEventType() 
+    {
+        return eventType;
+    }
+    public void setBucketName(String bucketName) 
+    {
+        this.bucketName = bucketName;
+    }
+
+    public String getBucketName() 
+    {
+        return bucketName;
+    }
+    public void setEventTime(Date eventTime) 
+    {
+        this.eventTime = eventTime;
+    }
+
+    public Date getEventTime() 
+    {
+        return eventTime;
+    }
+    public void setHost(String host) 
+    {
+        this.host = host;
+    }
+
+    public String getHost() 
+    {
+        return host;
+    }
+    public void setUserName(String userName) 
+    {
+        this.userName = userName;
+    }
+
+    public String getUserName() 
+    {
+        return userName;
+    }
+    public void setEndpoint(String endpoint) 
+    {
+        this.endpoint = endpoint;
+    }
+
+    public String getEndpoint() 
+    {
+        return endpoint;
+    }
+    public void setObjectName(String objectName) 
+    {
+        this.objectName = objectName;
+    }
+
+    public String getObjectName() 
+    {
+        return objectName;
+    }
+    public void setObjectType(String objectType) 
+    {
+        this.objectType = objectType;
+    }
+
+    public String getObjectType() 
+    {
+        return objectType;
+    }
+    public void setObjectSize(int objectSize)
+    {
+        this.objectSize = objectSize;
+    }
+
+    public int getObjectSize()
+    {
+        return objectSize;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("eventType", getEventType())
+            .append("bucketName", getBucketName())
+            .append("eventTime", getEventTime())
+            .append("host", getHost())
+            .append("userName", getUserName())
+            .append("endpoint", getEndpoint())
+            .append("objectName", getObjectName())
+            .append("objectType", getObjectType())
+            .append("objectSize", getObjectSize())
+            .append("createTime", getCreateTime())
+            .toString();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Bucket.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Bucket.java
new file mode 100644
index 0000000..834cae2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Bucket.java
@@ -0,0 +1,18 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn
+ * @website http://www.jsons.cn/json2java/
+ */
+@Data
+public class Bucket {
+    private String name;
+    @JsonProperty("ownerIdentity")
+    private Owneridentity owneridentity;
+    private String arn;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/JsonsRootBean.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/JsonsRootBean.java
new file mode 100644
index 0000000..c847fbd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/JsonsRootBean.java
@@ -0,0 +1,21 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class JsonsRootBean {
+
+    @JsonProperty("EventName")
+    private String eventname;
+    @JsonProperty("Key")
+    private String key;
+    @JsonProperty("Records")
+    private List<Records> records;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Owneridentity.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Owneridentity.java
new file mode 100644
index 0000000..0e0afeb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Owneridentity.java
@@ -0,0 +1,17 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class Owneridentity {
+
+    @JsonProperty("principalId")
+    private String principalid;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Records.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Records.java
new file mode 100644
index 0000000..2c47b45
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Records.java
@@ -0,0 +1,31 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import java.util.Date;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn
+ * @website http://www.jsons.cn/json2java/
+ */
+@Data
+public class Records {
+
+    //    private String eventVersion;
+//    private String eventSource;
+//    private String awsRegion;
+
+    private Date eventTime;
+    private String eventName;
+    //    private com.ruoyi.storage.minio.domain.jsonbean.userIdentity userIdentity;
+    private Requestparameters requestParameters;
+    private ResponseElements responseElements;
+    private S3 s3;
+    @JsonProperty("source")
+    private mSource source;
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Requestparameters.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Requestparameters.java
new file mode 100644
index 0000000..674a99b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Requestparameters.java
@@ -0,0 +1,21 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class Requestparameters {
+
+    @JsonProperty("principalId")
+    private String principalid;
+    private String region;
+    @JsonProperty("sourceIPAddress")
+    private String sourceipaddress;
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/ResponseElements.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/ResponseElements.java
new file mode 100644
index 0000000..2a3ed15
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/ResponseElements.java
@@ -0,0 +1,22 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class ResponseElements {
+
+    private String contentLength;
+    private String xAmzId2;
+    private String xAmzRequestId;
+    private String xMinioDeploymentId;
+    @JsonProperty("x-minio-origin-endpoint")
+    private String xMinioOriginEndpoint;
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/S3.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/S3.java
new file mode 100644
index 0000000..8f1537b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/S3.java
@@ -0,0 +1,21 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class S3 {
+
+//    @JsonProperty("s3SchemaVersion")
+//    private String s3schemaversion;
+//    @JsonProperty("configurationId")
+//    private String configurationid;
+    private Bucket bucket;
+    @JsonProperty("object")
+    private mObject mObject;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Usermetadata.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Usermetadata.java
new file mode 100644
index 0000000..aa01696
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/Usermetadata.java
@@ -0,0 +1,14 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class Usermetadata {
+    private String contentType;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mObject.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mObject.java
new file mode 100644
index 0000000..4bf4f1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mObject.java
@@ -0,0 +1,20 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class mObject {
+
+    private String key;
+    private int size;
+    private String eTag;
+    private String contentType;
+    private Usermetadata userMetadata;
+    private String sequencer;
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mSource.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mSource.java
new file mode 100644
index 0000000..c4feaef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/mSource.java
@@ -0,0 +1,18 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class mSource {
+    private String host;
+//    private String port;
+//    @JsonProperty("userAgent")
+//    private Date useragent;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/userIdentity.java b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/userIdentity.java
new file mode 100644
index 0000000..e550123
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/domain/jsonbean/userIdentity.java
@@ -0,0 +1,14 @@
+package com.ruoyi.storage.minio.domain.jsonbean;
+import lombok.Data;
+
+/**
+ * Auto-generated: 2023-08-05 11:37:3
+ *
+ * @author www.jsons.cn 
+ * @website http://www.jsons.cn/json2java/ 
+ */
+@Data
+public class userIdentity {
+
+    private String principalId;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/mapper/StorageMinioEventMapper.java b/ard-work/src/main/java/com/ruoyi/storage/minio/mapper/StorageMinioEventMapper.java
new file mode 100644
index 0000000..ffcaf24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/mapper/StorageMinioEventMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.storage.minio.mapper;
+
+import java.util.List;
+import com.ruoyi.storage.minio.domain.StorageMinioEvent;
+
+/**
+ * 瀛樺偍浜嬩欢Mapper鎺ュ彛
+ * 
+ * @author ard
+ * @date 2023-08-05
+ */
+public interface StorageMinioEventMapper 
+{
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢
+     * 
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 瀛樺偍浜嬩欢
+     */
+    public StorageMinioEvent selectStorageMinioEventById(String id);
+
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢鍒楄〃
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 瀛樺偍浜嬩欢闆嗗悎
+     */
+    public List<StorageMinioEvent> selectStorageMinioEventList(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 鏂板瀛樺偍浜嬩欢
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    public int insertStorageMinioEvent(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 淇敼瀛樺偍浜嬩欢
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    public int updateStorageMinioEvent(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 鍒犻櫎瀛樺偍浜嬩欢
+     * 
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteStorageMinioEventById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛樺偍浜嬩欢
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteStorageMinioEventByIds(String[] ids);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/service/IStorageMinioEventService.java b/ard-work/src/main/java/com/ruoyi/storage/minio/service/IStorageMinioEventService.java
new file mode 100644
index 0000000..79075a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/service/IStorageMinioEventService.java
@@ -0,0 +1,68 @@
+package com.ruoyi.storage.minio.service;
+
+import java.util.List;
+import com.ruoyi.storage.minio.domain.StorageMinioEvent;
+
+/**
+ * 瀛樺偍浜嬩欢Service鎺ュ彛
+ * 
+ * @author ard
+ * @date 2023-08-05
+ */
+public interface IStorageMinioEventService 
+{
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢
+     * 
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 瀛樺偍浜嬩欢
+     */
+    public StorageMinioEvent selectStorageMinioEventById(String id);
+
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢鍒楄〃
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 瀛樺偍浜嬩欢闆嗗悎
+     */
+    public List<StorageMinioEvent> selectStorageMinioEventList(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 鏂板瀛樺偍浜嬩欢
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    public int insertStorageMinioEvent(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 淇敼瀛樺偍浜嬩欢
+     * 
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    public int updateStorageMinioEvent(StorageMinioEvent storageMinioEvent);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛樺偍浜嬩欢
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑瀛樺偍浜嬩欢涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteStorageMinioEventByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎瀛樺偍浜嬩欢淇℃伅
+     * 
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteStorageMinioEventById(String id);
+    /**
+     * 瑙f瀽minio浜嬩欢
+     *
+     * @param message 瀛樺偍浜嬩欢娑堟伅
+     * @return 缁撴灉
+     */
+    public void parseStorageMinioEvent(String message);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
new file mode 100644
index 0000000..ce70fdf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
@@ -0,0 +1,136 @@
+package com.ruoyi.storage.minio.service.impl;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.storage.minio.domain.jsonbean.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import com.ruoyi.storage.minio.mapper.StorageMinioEventMapper;
+import com.ruoyi.storage.minio.domain.StorageMinioEvent;
+import com.ruoyi.storage.minio.service.IStorageMinioEventService;
+
+import javax.annotation.Resource;
+
+/**
+ * 瀛樺偍浜嬩欢Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2023-08-05
+ */
+@Service
+@Slf4j(topic = "minio")
+public class StorageMinioEventServiceImpl implements IStorageMinioEventService {
+    @Resource
+    private StorageMinioEventMapper storageMinioEventMapper;
+
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢
+     *
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 瀛樺偍浜嬩欢
+     */
+    @Override
+    public StorageMinioEvent selectStorageMinioEventById(String id) {
+        return storageMinioEventMapper.selectStorageMinioEventById(id);
+    }
+
+    /**
+     * 鏌ヨ瀛樺偍浜嬩欢鍒楄〃
+     *
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 瀛樺偍浜嬩欢
+     */
+    @Override
+    public List<StorageMinioEvent> selectStorageMinioEventList(StorageMinioEvent storageMinioEvent) {
+        return storageMinioEventMapper.selectStorageMinioEventList(storageMinioEvent);
+    }
+
+    /**
+     * 鏂板瀛樺偍浜嬩欢
+     *
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertStorageMinioEvent(StorageMinioEvent storageMinioEvent) {
+        storageMinioEvent.setId(IdUtils.simpleUUID());
+        storageMinioEvent.setCreateTime(DateUtils.getNowDate());
+        return storageMinioEventMapper.insertStorageMinioEvent(storageMinioEvent);
+    }
+
+    /**
+     * 淇敼瀛樺偍浜嬩欢
+     *
+     * @param storageMinioEvent 瀛樺偍浜嬩欢
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateStorageMinioEvent(StorageMinioEvent storageMinioEvent) {
+        return storageMinioEventMapper.updateStorageMinioEvent(storageMinioEvent);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瀛樺偍浜嬩欢
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑瀛樺偍浜嬩欢涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteStorageMinioEventByIds(String[] ids) {
+        return storageMinioEventMapper.deleteStorageMinioEventByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎瀛樺偍浜嬩欢淇℃伅
+     *
+     * @param id 瀛樺偍浜嬩欢涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteStorageMinioEventById(String id) {
+        return storageMinioEventMapper.deleteStorageMinioEventById(id);
+    }
+
+    @Async
+    @Override
+    public void parseStorageMinioEvent(String message) {
+        JsonsRootBean jsonsRootBean = JSONObject.parseObject(message, JsonsRootBean.class);
+        if (jsonsRootBean != null) {
+            Records records = jsonsRootBean.getRecords().get(0);
+            StorageMinioEvent storageMinioEvent = new StorageMinioEvent();
+            storageMinioEvent.setEventTime(records.getEventTime());
+            storageMinioEvent.setEventType(records.getEventName());
+            storageMinioEvent.setBucketName(records.getS3().getBucket().getName());
+            String encode = null;
+            try {
+                encode = URLDecoder.decode(records.getS3().getMObject().getKey(), "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            storageMinioEvent.setObjectName(encode);
+            storageMinioEvent.setObjectSize(records.getS3().getMObject().getSize());
+            storageMinioEvent.setObjectType(records.getS3().getMObject().getContentType());
+            storageMinioEvent.setHost(records.getSource().getHost());
+            storageMinioEvent.setEndpoint(records.getResponseElements().getXMinioOriginEndpoint());
+            storageMinioEvent.setUserName(records.getRequestParameters().getPrincipalid());
+
+            int i = insertStorageMinioEvent(storageMinioEvent);
+            if(i>0)
+            {
+                log.debug("minio鎿嶄綔鏃ュ織鍏ュ簱鎴愬姛!銆�"+storageMinioEvent.getEventType()+"銆�");
+            }
+        }
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
similarity index 93%
rename from ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
rename to ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
index 46a3ded..c063b73 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java
@@ -1,14 +1,11 @@
-package com.ruoyi.device.hiksdk.util.minio;
+package com.ruoyi.storage.minio.utils;
 
 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.Bucket;
-import io.minio.messages.DeleteError;
-import io.minio.messages.DeleteObject;
-import io.minio.messages.Item;
+import io.minio.messages.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -33,12 +30,12 @@
     public static boolean exitsBucket(String bucketName) {
         boolean found = false;
         try {
-            if(StringUtils.isEmpty(bucketName))
-            {
+            if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
             found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs);
+
         } catch (Exception ex) {
             log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage());
         }
@@ -50,8 +47,7 @@
      */
     public static boolean createBucket(String bucketName) {
         try {
-            if(StringUtils.isEmpty(bucketName))
-            {
+            if (StringUtils.isEmpty(bucketName)) {
                 return false;
             }
             /*鍒涘缓妗�*/
@@ -68,7 +64,27 @@
                     .bucket(bucketName)
                     .config(sb)
                     .build();
+            /*璁剧疆閫氱煡mqtt*/
+            //璁剧疆mqtt涓婚
+            NotificationConfiguration config = new NotificationConfiguration();
+            List<QueueConfiguration> queueConfigurations = new ArrayList<>();
+            QueueConfiguration queueConfiguration = new QueueConfiguration();
+            queueConfiguration.setQueue("arn:minio:sqs::_:mqtt");
+
+            //璁剧疆浜嬩欢
+            List<EventType> events=new ArrayList<>();
+            events.add(EventType.OBJECT_REMOVED_ANY);
+            events.add(EventType.OBJECT_CREATED_ANY);
+            queueConfiguration.setEvents(events);
+
+            queueConfigurations.add(queueConfiguration);
+            config.setQueueConfigurationList(queueConfigurations);
+            SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder()
+                    .bucket(bucketName)
+                    .config(config).build();
             MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs);
+            MinioClientSingleton.getMinioClient().setBucketNotification(setBucketNotificationArgs);
+
             return true;
         } catch (Exception ex) {
             log.error("minio鍒涘缓妗跺紓甯革細", ex.getMessage());
@@ -141,9 +157,7 @@
             } catch (Exception ex) {
                 log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
             }
-        }
-        else
-        {
+        } else {
             createBucket(bucketName);
         }
         return url;
@@ -158,8 +172,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public static String putObjectAndGetUrl(String bucketName, MultipartFile file) {
-         if(!exitsBucket(bucketName))
-        {
+        if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
         //鍒ゆ柇鏂囦欢鏄惁涓虹┖
@@ -214,8 +227,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
-        if(!exitsBucket(bucketName))
-        {
+        if (!exitsBucket(bucketName)) {
             createBucket(bucketName);
         }
         //鍒ゆ柇鏂囦欢鏄惁涓虹┖
@@ -372,8 +384,7 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
         try {
-            if(!exitsBucket(bucketName))
-            {
+            if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
             }
             PutObjectArgs putObjectArgs = PutObjectArgs.builder()
@@ -400,8 +411,7 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
         try {
-            if(!exitsBucket(bucketName))
-            {
+            if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
             }
             FileInputStream fileInputStream = new FileInputStream(file);
@@ -429,8 +439,7 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
         try {
-            if(!exitsBucket(bucketName))
-            {
+            if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
             }
             InputStream inputStream = multipartFile.getInputStream();
@@ -458,8 +467,7 @@
      */
     public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
         try {
-            if(!exitsBucket(bucketName))
-            {
+            if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
             }
             if (multipartFile == null) {
@@ -492,8 +500,7 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
         try {
-            if(!exitsBucket(bucketName))
-            {
+            if (!exitsBucket(bucketName)) {
                 createBucket(bucketName);
             }
             File file = new File(localFilePathName);
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 efec4be..1e332cc 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
@@ -11,7 +11,7 @@
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.utils.websocket.util.WebSocketUtils;
 import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
+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;
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 d6e12c1..d968436 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
@@ -2,6 +2,7 @@
 
 import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.storage.minio.service.IStorageMinioEventService;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.*;
 
@@ -68,12 +69,17 @@
     public void messageArrived(String topic, MqttMessage message) {
         try {
             // subscribe鍚庡緱鍒扮殑娑堟伅浼氭墽琛屽埌杩欓噷闈�
-            log.info("鎺ユ敹娑堟伅 銆愪富棰樸��:" + topic + " 銆愬唴瀹广��:" + new String(message.getPayload()));
+            log.debug("鎺ユ敹娑堟伅 銆愪富棰樸��:" + topic + " 銆愬唴瀹广��:" + new String(message.getPayload()));
             //杩涜涓氬姟澶勭悊(鎺ユ敹鎶ヨ鏁版嵁)
             GlobalAlarmServiceImpl globalAlarmService = SpringUtils.getBean(GlobalAlarmServiceImpl.class);
             globalAlarmService.receiveAlarm(topic, new String(message.getPayload(), StandardCharsets.UTF_8));
+            if (topic.equals("minioEvent"))
+            {
+                IStorageMinioEventService storageMinioEventService = SpringUtils.getBean(IStorageMinioEventService.class);
+                storageMinioEventService.parseStorageMinioEvent(new String(message.getPayload(), StandardCharsets.UTF_8));
+            }
         } catch (Exception e) {
-            log.info("澶勭悊mqtt娑堟伅寮傚父:" + e);
+            log.debug("澶勭悊mqtt娑堟伅寮傚父:" + e);
         }
     }
 
diff --git a/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml b/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml
new file mode 100644
index 0000000..9a6d13b
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/minio/StorageMinioEventMapper.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.storage.minio.mapper.StorageMinioEventMapper">
+    
+    <resultMap type="StorageMinioEvent" id="StorageMinioEventResult">
+        <result property="id"    column="id"    />
+        <result property="eventType"    column="event_type"    />
+        <result property="bucketName"    column="bucket_name"    />
+        <result property="eventTime"    column="event_time"    />
+        <result property="host"    column="host"    />
+        <result property="userName"    column="user_name"    />
+        <result property="endpoint"    column="endpoint"    />
+        <result property="objectName"    column="object_name"    />
+        <result property="objectType"    column="object_type"    />
+        <result property="objectSize"    column="object_size"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectStorageMinioEventVo">
+        select id, event_type, bucket_name, event_time, host, user_name, endpoint, object_name, object_type, object_size, create_time from storage_minio_event
+    </sql>
+
+    <select id="selectStorageMinioEventList" parameterType="StorageMinioEvent" resultMap="StorageMinioEventResult">
+        <include refid="selectStorageMinioEventVo"/>
+        <where>  
+            <if test="eventType != null  and eventType != ''"> and event_type = #{eventType}</if>
+            <if test="host != null  and host != ''"> and host = #{host}</if>
+        </where>
+    </select>
+    
+    <select id="selectStorageMinioEventById" parameterType="String" resultMap="StorageMinioEventResult">
+        <include refid="selectStorageMinioEventVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertStorageMinioEvent" parameterType="StorageMinioEvent">
+        insert into storage_minio_event
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="eventType != null">event_type,</if>
+            <if test="bucketName != null">bucket_name,</if>
+            <if test="eventTime != null">event_time,</if>
+            <if test="host != null">host,</if>
+            <if test="userName != null">user_name,</if>
+            <if test="endpoint != null">endpoint,</if>
+            <if test="objectName != null">object_name,</if>
+            <if test="objectType != null">object_type,</if>
+            <if test="objectSize != null">object_size,</if>
+            <if test="createTime != null">create_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="eventType != null">#{eventType},</if>
+            <if test="bucketName != null">#{bucketName},</if>
+            <if test="eventTime != null">#{eventTime},</if>
+            <if test="host != null">#{host},</if>
+            <if test="userName != null">#{userName},</if>
+            <if test="endpoint != null">#{endpoint},</if>
+            <if test="objectName != null">#{objectName},</if>
+            <if test="objectType != null">#{objectType},</if>
+            <if test="objectSize != null">#{objectSize},</if>
+            <if test="createTime != null">#{createTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateStorageMinioEvent" parameterType="StorageMinioEvent">
+        update storage_minio_event
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="eventType != null">event_type = #{eventType},</if>
+            <if test="bucketName != null">bucket_name = #{bucketName},</if>
+            <if test="eventTime != null">event_time = #{eventTime},</if>
+            <if test="host != null">host = #{host},</if>
+            <if test="userName != null">user_name = #{userName},</if>
+            <if test="endpoint != null">endpoint = #{endpoint},</if>
+            <if test="objectName != null">object_name = #{objectName},</if>
+            <if test="objectType != null">object_type = #{objectType},</if>
+            <if test="objectSize != null">object_size = #{objectSize},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteStorageMinioEventById" parameterType="String">
+        delete from storage_minio_event where id = #{id}
+    </delete>
+
+    <delete id="deleteStorageMinioEventByIds" parameterType="String">
+        delete from storage_minio_event where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 1dd95b9..f48d4ea 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -19,7 +19,7 @@
 {
     public static void main(String[] args)
     {
-        System.setProperty("spring.devtools.restart.enabled", "false");//鍏抽棴鐑儴缃�
+        //System.setProperty("spring.devtools.restart.enabled", "false");//鍏抽棴鐑儴缃�
         SpringApplication.run(RuoYiApplication.class, args);
         System.out.println("(鈾モ棤鈥库棤)锞夛緸  瀹夌憺杈�4.0骞冲彴鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
                 "      ___           ___                               \n" +
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
index a1cff53..d302322 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
diff --git a/ruoyi-admin/src/main/resources/META-INF/spring-configuration-metadata.json b/ruoyi-admin/src/main/resources/META-INF/spring-configuration-metadata.json
new file mode 100644
index 0000000..c074bd6
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -0,0 +1,108 @@
+{
+  "properties": [
+    {
+      "name": "webrtc.enabled",
+      "type": "java.lang.String",
+      "description": "Description for webrtc.enabled."
+  },
+    {
+      "name": "webrtc.host",
+      "type": "java.lang.String",
+      "description": "Description for webrtc.host."
+    },
+    {
+      "name": "minio.enabled",
+      "type": "java.lang.String",
+      "description": "Description for minio.enabled."
+    },
+    {
+      "name": "minio.endpoint",
+      "type": "java.lang.String",
+      "description": "Description for minio.endpoint."
+    },
+    {
+      "name": "minio.accessKey",
+      "type": "java.lang.String",
+      "description": "Description for minio.accessKey."
+    },
+    {
+      "name": "minio.secretKey",
+      "type": "java.lang.String",
+      "description": "Description for minio.secretKey."
+    },
+    {
+      "name": "minio.path",
+      "type": "java.lang.String",
+      "description": "Description for minio.path."
+    },
+    {
+      "name": "mediamtx.enabled",
+      "type": "java.lang.String",
+      "description": "Description for mediamtx.enabled."
+    },
+    {
+      "name": "mediamtx.host",
+      "type": "java.lang.String",
+      "description": "Description for mediamtx.host."
+    },
+    {
+      "name": "mqtt.host",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.host."
+    },
+    {
+      "name": "mqtt.clientId",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.clientId."
+    },
+    {
+      "name": "mqtt.username",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.username."
+    },
+    {
+      "name": "mqtt.password",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.password."
+    },
+    {
+      "name": "mqtt.topic",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.topic."
+    },
+    {
+      "name": "mqtt.timeout",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.timeout."
+    },
+    {
+      "name": "mqtt.keepalive",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.keepalive."
+    },
+    {
+      "name": "mqtt.enabled",
+      "type": "java.lang.String",
+      "description": "Description for mqtt.enabled."
+    },
+    {
+      "name": "ThreadPoolTask.corePoolSize",
+      "type": "java.lang.String",
+      "description": "Description for ThreadPoolTask.corePoolSize."
+    },
+    {
+      "name": "ThreadPoolTask.maxPoolSize",
+      "type": "java.lang.String",
+      "description": "Description for ThreadPoolTask.maxPoolSize."
+    },
+    {
+      "name": "ThreadPoolTask.keepAliveSeconds",
+      "type": "java.lang.String",
+      "description": "Description for ThreadPoolTask.keepAliveSeconds."
+    },
+    {
+      "name": "ThreadPoolTask.queueCapacity",
+      "type": "java.lang.String",
+      "description": "Description for ThreadPoolTask.queueCapacity."
+    }
+] }
\ No newline at end of file
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 de78377..e2cb0f7 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
@@ -1,6 +1,6 @@
 package com.ruoyi.quartz.task;
 
-import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
+import com.ruoyi.storage.minio.utils.MinioUtils;
 import io.minio.Result;
 import io.minio.messages.Item;
 import lombok.extern.slf4j.Slf4j;

--
Gitblit v1.9.3