diff --git a/fastbee-admin/src/main/java/com/fastbee/web/task/LogCleanTask.java b/fastbee-admin/src/main/java/com/fastbee/web/task/LogCleanTask.java
new file mode 100644
index 00000000..a742b693
--- /dev/null
+++ b/fastbee-admin/src/main/java/com/fastbee/web/task/LogCleanTask.java
@@ -0,0 +1,88 @@
+package com.fastbee.web.task;
+
+import com.fastbee.iot.service.IAlertLogService;
+import com.fastbee.iot.service.IEventLogService;
+import com.fastbee.notify.service.INotifyLogService;
+import com.fastbee.quartz.service.ISysJobLogService;
+import com.fastbee.system.service.ISysLogininforService;
+import com.fastbee.system.service.ISysOperLogService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 日志清理定时任务
+ *
+ * @author fastbee
+ */
+@Component("logCleanTask")
+public class LogCleanTask {
+ private static final Logger log = LoggerFactory.getLogger(LogCleanTask.class);
+
+ @Autowired
+ private IEventLogService eventLogService;
+
+ @Autowired
+ private ISysOperLogService operLogService;
+
+ @Autowired
+ private ISysLogininforService logininforService;
+
+ @Autowired
+ private IAlertLogService alertLogService;
+
+ @Autowired
+ private ISysJobLogService jobLogService;
+
+ @Autowired
+ private INotifyLogService notifyLogService;
+
+ // 之后还有清理的表往下写
+
+ /**
+ * 清理日志(默认清理15天前)
+ */
+ public void cleanLogs() {
+ cleanLogs(15);
+ }
+
+ /**
+ * 清理日志
+ *
+ * @param days 保留天数
+ */
+ public void cleanLogs(int days) {
+ log.info("========== 开始清理日志数据,保留最近 {} 天的记录 ==========", days);
+ try {
+ // 清理 IoT 事件日志
+ eventLogService.cleanEventLog(days);
+ //log.info("已清理 iot_event_log 表 {} 天前的数据", days);
+
+ // 清理系统操作日志
+ operLogService.cleanOperLog(days);
+ //log.info("已清理 sys_oper_log 表 {} 天前的数据", days);
+
+ // 清理登录日志
+ logininforService.cleanLogininfor(days);
+ //log.info("已清理 sys_logininfor 表 {} 天前的数据", days);
+
+ // 清理设备告警日志
+ alertLogService.cleanAlertLog(days);
+ //log.info("已清理 iot_alert_log 表 {} 天前的数据", days);
+
+ // 清理定时任务日志
+ jobLogService.cleanJobLog(days);
+ //log.info("已清理 sys_job_log 表 {} 天前的数据", days);
+
+ // 清理通知日志
+ notifyLogService.cleanNotifyLog(days);
+ //log.info("已清理 notify_log 表 {} 天前的数据", days);
+
+ log.info("========== 日志清理任务执行完成 ==========");
+ } catch (Exception e) {
+ log.error("日志清理任务执行失败", e);
+ throw e;
+ }
+ }
+}
\ No newline at end of file
diff --git a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/mapper/NotifyLogMapper.java b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/mapper/NotifyLogMapper.java
index 70d5b288..ea14c5cb 100644
--- a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/mapper/NotifyLogMapper.java
+++ b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/mapper/NotifyLogMapper.java
@@ -58,4 +58,12 @@ public interface NotifyLogMapper {
* @return 结果
*/
public int deleteNotifyLogByIds(Long[] ids);
+
+ /**
+ * 删除指定天数前的通知日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ public int deleteNotifyLogBeforeDays(int days);
}
diff --git a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/INotifyLogService.java b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/INotifyLogService.java
index c1e9205c..63821556 100644
--- a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/INotifyLogService.java
+++ b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/INotifyLogService.java
@@ -58,4 +58,11 @@ public interface INotifyLogService {
* @return 结果
*/
public int deleteNotifyLogById(Long id);
+
+ /**
+ * 清理通知日志
+ *
+ * @param days 保留天数
+ */
+ public void cleanNotifyLog(int days);
}
diff --git a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/impl/NotifyLogServiceImpl.java b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/impl/NotifyLogServiceImpl.java
index 8df01608..08ed7090 100644
--- a/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/impl/NotifyLogServiceImpl.java
+++ b/fastbee-notify/fastbee-notify-web/src/main/java/com/fastbee/notify/service/impl/NotifyLogServiceImpl.java
@@ -132,4 +132,14 @@ public class NotifyLogServiceImpl implements INotifyLogService {
public int deleteNotifyLogById(Long id) {
return notifyLogMapper.deleteNotifyLogById(id);
}
+
+ /**
+ * 清理通知日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanNotifyLog(int days) {
+ notifyLogMapper.deleteNotifyLogBeforeDays(days);
+ }
}
diff --git a/fastbee-notify/fastbee-notify-web/src/main/resources/mapper/NotifyLogMapper.xml b/fastbee-notify/fastbee-notify-web/src/main/resources/mapper/NotifyLogMapper.xml
index 24ca6bc4..7ec3c353 100644
--- a/fastbee-notify/fastbee-notify-web/src/main/resources/mapper/NotifyLogMapper.xml
+++ b/fastbee-notify/fastbee-notify-web/src/main/resources/mapper/NotifyLogMapper.xml
@@ -138,4 +138,9 @@
#{id}
+
+
+ DELETE FROM notify_log
+ WHERE create_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
diff --git a/fastbee-open-api/src/main/java/com/fastbee/controller/system/LogCleanController.java b/fastbee-open-api/src/main/java/com/fastbee/controller/system/LogCleanController.java
new file mode 100644
index 00000000..5d66c39c
--- /dev/null
+++ b/fastbee-open-api/src/main/java/com/fastbee/controller/system/LogCleanController.java
@@ -0,0 +1,96 @@
+package com.fastbee.controller.system;
+
+import com.fastbee.common.annotation.Log;
+import com.fastbee.common.core.controller.BaseController;
+import com.fastbee.common.core.domain.AjaxResult;
+import com.fastbee.common.enums.BusinessType;
+import com.fastbee.iot.service.IAlertLogService;
+import com.fastbee.iot.service.IEventLogService;
+import com.fastbee.notify.service.INotifyLogService;
+import com.fastbee.quartz.service.ISysJobLogService;
+import com.fastbee.system.service.ISysLogininforService;
+import com.fastbee.system.service.ISysOperLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 日志清理Controller
+ *
+ * @author fastbee
+ */
+@Api(tags = "系统管理:日志清理")
+@RestController
+@RequestMapping("/system/log")
+public class LogCleanController extends BaseController {
+
+ @Autowired
+ private IEventLogService eventLogService;
+
+ @Autowired
+ private ISysOperLogService operLogService;
+
+ @Autowired
+ private ISysLogininforService logininforService;
+
+ @Autowired
+ private IAlertLogService alertLogService;
+
+ @Autowired
+ private ISysJobLogService jobLogService;
+
+ @Autowired
+ private INotifyLogService notifyLogService;
+
+ /**
+ * 清理日志数据
+ *
+ * @param days 保留天数,默认15天
+ * @return 清理结果
+ */
+ @ApiOperation("清理日志数据")
+ @PreAuthorize("@ss.hasRole('admin')")
+ @Log(title = "日志清理", businessType = BusinessType.CLEAN)
+ @PostMapping("/clean")
+ public AjaxResult cleanLogs(
+ @ApiParam("保留天数,默认15天")
+ @RequestParam(value = "days", defaultValue = "15") Integer days) {
+ try {
+ logger.info("手动触发日志清理,保留最近 {} 天的记录", days);
+
+ if (days < 1) {
+ return error("保留天数必须大于等于1天");
+ }
+
+ // 清理 IoT 事件日志
+ eventLogService.cleanEventLog(days);
+
+ // 清理系统操作日志
+ operLogService.cleanOperLog(days);
+
+ // 清理登录日志
+ logininforService.cleanLogininfor(days);
+
+ // 清理设备告警日志
+ alertLogService.cleanAlertLog(days);
+
+ // 清理定时任务日志
+ jobLogService.cleanJobLog(days);
+
+ // 清理通知日志
+ notifyLogService.cleanNotifyLog(days);
+
+ logger.info("日志清理完成,保留最近 {} 天的记录", days);
+ return success(String.format("日志清理完成,已删除 %d 天前的历史数据", days));
+ } catch (Exception e) {
+ logger.error("日志清理失败", e);
+ return error("日志清理失败:" + e.getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/mapper/SysJobLogMapper.java b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/mapper/SysJobLogMapper.java
index 8b35eefe..cf40842d 100644
--- a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/mapper/SysJobLogMapper.java
+++ b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/mapper/SysJobLogMapper.java
@@ -61,4 +61,12 @@ public interface SysJobLogMapper {
* 清空任务日志
*/
public void cleanJobLog();
+
+ /**
+ * 删除指定天数前的任务日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ public int deleteJobLogBeforeDays(int days);
}
diff --git a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/ISysJobLogService.java b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/ISysJobLogService.java
index 50893074..a0bea432 100644
--- a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/ISysJobLogService.java
+++ b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/ISysJobLogService.java
@@ -53,4 +53,11 @@ public interface ISysJobLogService {
* 清空任务日志
*/
public void cleanJobLog();
+
+ /**
+ * 清理指定天数前的任务日志
+ *
+ * @param days 保留天数
+ */
+ public void cleanJobLog(int days);
}
diff --git a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/impl/SysJobLogServiceImpl.java b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/impl/SysJobLogServiceImpl.java
index a5dfbe5e..8ba0f9dc 100644
--- a/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/impl/SysJobLogServiceImpl.java
+++ b/fastbee-plugs/fastbee-quartz/src/main/java/com/fastbee/quartz/service/impl/SysJobLogServiceImpl.java
@@ -78,4 +78,14 @@ public class SysJobLogServiceImpl implements ISysJobLogService {
public void cleanJobLog() {
jobLogMapper.cleanJobLog();
}
+
+ /**
+ * 清理指定天数前的任务日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanJobLog(int days) {
+ jobLogMapper.deleteJobLogBeforeDays(days);
+ }
}
diff --git a/fastbee-plugs/fastbee-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml b/fastbee-plugs/fastbee-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
index 1a3e279e..9aafb989 100644
--- a/fastbee-plugs/fastbee-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
+++ b/fastbee-plugs/fastbee-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
@@ -77,6 +77,11 @@
truncate table sys_job_log
+
+ DELETE FROM sys_job_log
+ WHERE create_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
+
insert into sys_job_log(
job_log_id,
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/AlertLogMapper.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/AlertLogMapper.java
index 93ad999b..7a840871 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/AlertLogMapper.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/AlertLogMapper.java
@@ -115,4 +115,12 @@ public interface AlertLogMapper {
* @return com.fastbee.iot.model.AlertCountVO
*/
List countAlertLevel(DataCenterParam dataCenterParam);
+
+ /**
+ * 删除指定天数前的告警日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ int deleteAlertLogBeforeDays(@Param("days") int days);
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/EventLogMapper.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/EventLogMapper.java
index b89ad082..6c3b5ea3 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/EventLogMapper.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/mapper/EventLogMapper.java
@@ -25,4 +25,12 @@ public interface EventLogMapper extends BaseMapperX {
Long selectEventLogCount(@Param("userId") Long userId);
+ /**
+ * 删除指定天数前的日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ int deleteEventLogBeforeDays(@Param("days") int days);
+
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IAlertLogService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IAlertLogService.java
index 2aa708ca..311277e6 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IAlertLogService.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IAlertLogService.java
@@ -107,4 +107,11 @@ public interface IAlertLogService {
* @return com.fastbee.iot.model.AlertCountVO
*/
List countAlertLevel(DataCenterParam dataCenterParam);
+
+ /**
+ * 清理告警日志
+ *
+ * @param days 保留天数
+ */
+ void cleanAlertLog(int days);
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IEventLogService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IEventLogService.java
index 5807e9db..0f94f59d 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IEventLogService.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IEventLogService.java
@@ -37,4 +37,11 @@ public interface IEventLogService extends IService {
*/
List listHistory(EventLog eventLog);
+ /**
+ * 清理事件日志
+ *
+ * @param days 保留天数
+ */
+ void cleanEventLog(int days);
+
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/AlertLogServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/AlertLogServiceImpl.java
index f309e7ca..b4d9f367 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/AlertLogServiceImpl.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/AlertLogServiceImpl.java
@@ -199,4 +199,14 @@ public class AlertLogServiceImpl implements IAlertLogService {
public List countAlertLevel(DataCenterParam dataCenterParam) {
return alertLogMapper.countAlertLevel(dataCenterParam);
}
+
+ /**
+ * 清理告警日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanAlertLog(int days) {
+ alertLogMapper.deleteAlertLogBeforeDays(days);
+ }
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/EventLogServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/EventLogServiceImpl.java
index 2b8bc211..ebb756e9 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/EventLogServiceImpl.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/EventLogServiceImpl.java
@@ -64,4 +64,14 @@ public class EventLogServiceImpl extends ServiceImpl i
public List listHistory(EventLog eventLog) {
return eventLogMapper.listHistory(eventLog);
}
+
+ /**
+ * 清理事件日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanEventLog(int days) {
+ eventLogMapper.deleteEventLogBeforeDays(days);
+ }
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/AlertLogMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/AlertLogMapper.xml
index 01d5c50b..ac0ac040 100644
--- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/AlertLogMapper.xml
+++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/AlertLogMapper.xml
@@ -274,4 +274,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+ DELETE FROM iot_alert_log
+ WHERE create_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
+
diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/EventLogMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/EventLogMapper.xml
index f5536dd3..0a1756eb 100644
--- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/EventLogMapper.xml
+++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/EventLogMapper.xml
@@ -59,4 +59,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and user_id = #{userId}
+
+
+ DELETE FROM iot_event_log
+ WHERE create_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysLogininforMapper.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysLogininforMapper.java
index c68e4946..d9397f81 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysLogininforMapper.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysLogininforMapper.java
@@ -41,4 +41,12 @@ public interface SysLogininforMapper {
public int cleanLogininfor();
public List getUserCount();
+
+ /**
+ * 删除指定天数前的登录日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ public int deleteLogininforBeforeDays(int days);
}
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysOperLogMapper.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysOperLogMapper.java
index 46ac307e..a05e33b6 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysOperLogMapper.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/mapper/SysOperLogMapper.java
@@ -45,4 +45,12 @@ public interface SysOperLogMapper {
* 清空操作日志
*/
public void cleanOperLog();
+
+ /**
+ * 删除指定天数前的操作日志
+ *
+ * @param days 保留天数
+ * @return 删除记录数
+ */
+ public int deleteOperLogBeforeDays(int days);
}
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysLogininforService.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysLogininforService.java
index ef1fcb69..7c27865a 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysLogininforService.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysLogininforService.java
@@ -42,4 +42,11 @@ public interface ISysLogininforService {
* 统计一周内的登陆数据
*/
public List getUserCount();
+
+ /**
+ * 清理指定天数前的登录日志
+ *
+ * @param days 保留天数
+ */
+ public void cleanLogininfor(int days);
}
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysOperLogService.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysOperLogService.java
index b7713433..f2b21e28 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysOperLogService.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/ISysOperLogService.java
@@ -45,4 +45,11 @@ public interface ISysOperLogService {
* 清空操作日志
*/
public void cleanOperLog();
+
+ /**
+ * 清理指定天数前的操作日志
+ *
+ * @param days 保留天数
+ */
+ public void cleanOperLog(int days);
}
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysLogininforServiceImpl.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysLogininforServiceImpl.java
index 3d8cd3d3..e17fdf6f 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysLogininforServiceImpl.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysLogininforServiceImpl.java
@@ -63,4 +63,14 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
public List getUserCount() {
return logininforMapper.getUserCount();
}
+
+ /**
+ * 清理指定天数前的登录日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanLogininfor(int days) {
+ logininforMapper.deleteLogininforBeforeDays(days);
+ }
}
diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysOperLogServiceImpl.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysOperLogServiceImpl.java
index 5bfed0ee..f0ace9a1 100644
--- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysOperLogServiceImpl.java
+++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysOperLogServiceImpl.java
@@ -68,4 +68,14 @@ public class SysOperLogServiceImpl implements ISysOperLogService {
public void cleanOperLog() {
operLogMapper.cleanOperLog();
}
+
+ /**
+ * 清理指定天数前的操作日志
+ *
+ * @param days 保留天数
+ */
+ @Override
+ public void cleanOperLog(int days) {
+ operLogMapper.deleteOperLogBeforeDays(days);
+ }
}
diff --git a/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysLogininforMapper.xml b/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysLogininforMapper.xml
index 3fe4ccd7..d5ecdf38 100644
--- a/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysLogininforMapper.xml
+++ b/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysLogininforMapper.xml
@@ -76,4 +76,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
) b on a.login_time = b.datetime;
+
+ DELETE FROM sys_logininfor
+ WHERE login_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
+
diff --git a/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysOperLogMapper.xml b/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysOperLogMapper.xml
index 38456ed0..13a93f56 100644
--- a/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysOperLogMapper.xml
+++ b/fastbee-service/fastbee-system-service/src/main/resources/mapper/system/SysOperLogMapper.xml
@@ -80,4 +80,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
truncate table sys_oper_log
+
+ DELETE FROM sys_oper_log
+ WHERE oper_time < DATE_SUB(NOW(), INTERVAL #{days} DAY)
+
+
\ No newline at end of file
diff --git a/sql/log_clean_task_init.sql b/sql/log_clean_task_init.sql
new file mode 100644
index 00000000..36e0efb2
--- /dev/null
+++ b/sql/log_clean_task_init.sql
@@ -0,0 +1,96 @@
+-- ============================================
+-- 日志清理定时任务初始化 SQL
+-- ============================================
+
+-- 1. 插入定时任务记录到 sys_job 表
+-- 说明:每天凌晨 0 点自动清理 15 天前的日志数据
+-- 注意:LogCleanTask 类位于 fastbee-admin 模块的 com.fastbee.web.task 包下
+INSERT INTO `sys_job` (
+ `job_name`,
+ `job_group`,
+ `invoke_target`,
+ `cron_expression`,
+ `misfire_policy`,
+ `concurrent`,
+ `status`,
+ `create_by`,
+ `create_time`,
+ `remark`
+) VALUES (
+ '日志清理任务', -- 任务名称
+ 'SYSTEM', -- 任务组名
+ 'logCleanTask.cleanLogs()', -- 调用目标字符串
+ '0 0 0 * * ?', -- Cron 表达式:每天凌晨 00:00:00
+ '3', -- 错误策略:不触发立即执行
+ '1', -- 禁止并发执行
+ '0', -- 状态:正常
+ 'admin', -- 创建者
+ NOW(), -- 创建时间
+ '每天凌晨0点自动清理15天前的日志数据(iot_event_log、sys_oper_log、sys_logininfor、iot_alert_log、sys_job_log、notify_log)'
+);
+
+-- ============================================
+-- 清理的日志表说明
+-- ============================================
+-- 1. iot_event_log - IoT 事件日志
+-- 2. sys_oper_log - 系统操作日志
+-- 3. sys_logininfor - 登录日志
+-- 4. iot_alert_log - 设备告警日志
+-- 5. sys_job_log - 定时任务日志
+-- 6. notify_log - 通知日志
+--
+-- 注意:iot_device_log 表(设备监测日志)不参与清理
+-- 该表为核心数据,目前有 214 万条记录,需要数据迁移方案
+
+-- 2. 可选:添加日志清理权限菜单(根据需要执行)
+-- 如果需要在管理后台显示权限按钮,可以执行以下 SQL
+/*
+INSERT INTO `sys_menu` (
+ `menu_name`,
+ `parent_id`,
+ `order_num`,
+ `path`,
+ `component`,
+ `query`,
+ `is_frame`,
+ `is_cache`,
+ `menu_type`,
+ `visible`,
+ `status`,
+ `perms`,
+ `icon`,
+ `create_by`,
+ `create_time`,
+ `remark`
+) VALUES (
+ '日志清理', -- 菜单名称
+ 2, -- 父菜单ID(根据实际情况调整,2通常是系统管理)
+ 99, -- 显示顺序
+ '', -- 路由地址
+ '', -- 组件路径
+ '', -- 路由参数
+ 1, -- 不是外链
+ 0, -- 不缓存
+ 'F', -- 菜单类型:F=按钮
+ '0', -- 显示状态
+ '0', -- 菜单状态
+ 'system:log:clean', -- 权限标识
+ '#', -- 图标
+ 'admin', -- 创建者
+ NOW(), -- 创建时间
+ '日志清理按钮权限'
+);
+*/
+
+-- ============================================
+-- 验证定时任务是否创建成功
+-- ============================================
+-- SELECT * FROM sys_job WHERE job_name = '日志清理任务';
+
+-- ============================================
+-- 手动触发清理(可选)
+-- ============================================
+-- 如果需要立即清理历史数据,可以通过以下方式:
+-- 方式1:通过管理后台 -> 系统监控 -> 定时任务 -> 点击"执行一次"
+-- 方式2:调用 API 接口:POST /system/log/clean?days=30
+-- 方式3:数据库执行:UPDATE sys_job SET status = '0' WHERE job_name = '日志清理任务';
\ No newline at end of file