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