diff options
| author | tanghao <admin@LAPTOP-QCSKVLI9> | 2021-07-15 17:52:47 +0800 |
|---|---|---|
| committer | tanghao <admin@LAPTOP-QCSKVLI9> | 2021-07-15 17:52:47 +0800 |
| commit | d0a2dcebf90e24417dda60865fbdf52dcbf03ebf (patch) | |
| tree | ad0524080623ce2e6939222150f9dacc08491783 | |
| parent | e19aa5c5bc7610a3986033c330cecf154f23d049 (diff) | |
fix: NEZ-837 terminal local retention 本地保存时间 设置未生效
| -rw-r--r-- | nz-admin/src/main/java/com/nis/common/job/JobConfig.java | 15 | ||||
| -rw-r--r-- | nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java | 67 |
2 files changed, 81 insertions, 1 deletions
diff --git a/nz-admin/src/main/java/com/nis/common/job/JobConfig.java b/nz-admin/src/main/java/com/nis/common/job/JobConfig.java index 1db8fa21..08298de9 100644 --- a/nz-admin/src/main/java/com/nis/common/job/JobConfig.java +++ b/nz-admin/src/main/java/com/nis/common/job/JobConfig.java @@ -8,6 +8,8 @@ import com.nis.modules.asset.job.AssetFeatureJob; import com.nis.modules.asset.job.AssetPingStatusJob; import com.nis.modules.endpoint.job.EndpointStateJob; import com.nis.modules.sys.job.SessionTimeOutJob; +import com.nis.modules.terminal.job.TerminalCleanRecordJob; + import org.apache.commons.lang.StringUtils; import org.quartz.*; import org.springframework.beans.factory.annotation.Autowired; @@ -53,6 +55,9 @@ public class JobConfig { @Value("${nezha.sessionTimeOutJobCron:0 0/5 * * * ? *}") private String sessionTimeOutJobCron; + @Value("${nezha.terminalCleanJobCron:0 0 1 * * ?}") + private String terminalCleanJobCron; + @Autowired // @Qualifier("costomSchedulerFactoryBean") private SchedulerFactoryBean schedulerFactoryBean; @@ -65,7 +70,7 @@ public class JobConfig { private String endpointStateJobName = "ENDPOINTSTATE_JOB"; private String haJobName = "HA_JOB"; private String sessionTimeOutJobName = "SESSIONTIMEOUT_JOB"; - + private String terminalCleanJobCronName = "TERMINALCLEAN_JOB"; @Bean public JobDetail agentCronJobDetail() { return JobBuilder.newJob(AgentJob.class).withIdentity(JOB_NAME + agentJobName).storeDurably().build(); @@ -106,6 +111,11 @@ public class JobConfig { return JobBuilder.newJob(SessionTimeOutJob.class).withIdentity(JOB_NAME + sessionTimeOutJobName).storeDurably().build(); } + @Bean + public JobDetail terminalCleanJobDetail() { + return JobBuilder.newJob(TerminalCleanRecordJob.class).withIdentity(JOB_NAME + terminalCleanJobCronName).storeDurably().build(); + } + @PostConstruct public void init() throws SchedulerException { Scheduler scheduler = schedulerFactoryBean.getScheduler(); @@ -133,6 +143,9 @@ public class JobConfig { createCronScheduleJob(alertMessageExpiredJobName, alertMessageExpiredDetail(), StringUtils.isEmpty(alertMessageExpiredJobCron) ? "0/10 * * * * ?" : alertMessageExpiredJobCron, scheduler); // session time out job 如果配置文件没有配置定时周期 默认为5分钟执行一次 createCronScheduleJob(sessionTimeOutJobName, sessionTimeOutJobDetail(), StringUtils.isEmpty(sessionTimeOutJobCron) ? "0 0/5 * * * ? *" : sessionTimeOutJobCron, scheduler); + + // terminal clean job 如果配置文件没有配置定时周期 每天凌晨1点执行一次 + createCronScheduleJob(terminalCleanJobCronName, terminalCleanJobDetail(), StringUtils.isEmpty(terminalCleanJobCron) ? "0 0 1 * * ?" : terminalCleanJobCron, scheduler); } /** diff --git a/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java b/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java new file mode 100644 index 00000000..c207c139 --- /dev/null +++ b/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java @@ -0,0 +1,67 @@ +package com.nis.modules.terminal.job; + +import java.util.List; +import java.util.stream.Collectors; + +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nis.common.utils.Tool; +import com.nis.common.utils.ToolUtil; +import com.nis.modules.sys.entity.SysConfigEntity; +import com.nis.modules.sys.service.SysConfigService; +import com.nis.modules.terminal.config.TerminalSession; +import com.nis.modules.terminal.entity.TerminalCmd; +import com.nis.modules.terminal.entity.TerminalRecord; +import com.nis.modules.terminal.entity.TerminalSessionEntity; +import com.nis.modules.terminal.service.TerminalCmdService; +import com.nis.modules.terminal.service.TerminalRecordService; +import com.nis.modules.terminal.service.TerminalSessionService; + +import cn.hutool.core.date.DateTime; +import cn.hutool.log.Log; + +@DisallowConcurrentExecution +public class TerminalCleanRecordJob extends QuartzJobBean { + + private Log log = Log.get(); + + @Autowired + private TerminalRecordService terminalRecordService; + + @Autowired + private TerminalSessionService terminalSessionService; + + @Autowired + private TerminalCmdService terminalCmdService; + + @Autowired + private SysConfigService sysConfigService; + @Override + protected void executeInternal(JobExecutionContext context) throws JobExecutionException { + // 获取配置文件中terminal_record_local_retention的值 + SysConfigEntity sysConfig = sysConfigService.getOne(new QueryWrapper<SysConfigEntity>().lambda().eq(SysConfigEntity::getParamKey, "terminal_record_local_retention")); + String value = sysConfig.getParamValue(); + Integer day = Integer.valueOf(value); + + //获取当前时间 day天以前的时间 + DateTime nowDate = Tool.DateUtil.date(); + DateTime offsetSecond = Tool.DateUtil.offsetSecond(nowDate,-(day*24*60*60)); + + List<TerminalSessionEntity> list = terminalSessionService.list(new QueryWrapper<TerminalSessionEntity>().lambda().le(TerminalSessionEntity::getStartTime, offsetSecond)); + + if(ToolUtil.isNotEmpty(list)) { + log.debug("remove terminal session info {}",JSON.toJSON(list)); + List<String> uuids = list.stream().map(TerminalSessionEntity::getUuid).collect(Collectors.toList()); + terminalCmdService.remove(new QueryWrapper<TerminalCmd>().lambda().in(TerminalCmd::getUuid, uuids)); + terminalRecordService.remove(new QueryWrapper<TerminalRecord>().lambda().in(TerminalRecord::getUuid, uuids)); + terminalSessionService.remove(new QueryWrapper<TerminalSessionEntity>().lambda().in(TerminalSessionEntity::getUuid, uuids)); + } + log.debug("remove terminal end"); + } +} |
