From ee8b943565125e61ca43ed6c71ebd4a1762f7359 Mon Sep 17 00:00:00 2001 From: devezhao Date: Wed, 21 Aug 2019 23:20:01 +0800 Subject: [PATCH] RecycleBinCleanerJob --- .../recyclebin/RecycleBinCleanerJob.java | 65 +++++++++++++++++++ .../business/series/SeriesZeroResetJob.java | 25 ++++--- .../server/helper/ConfigurableItem.java | 2 +- src/main/resources/application-job.xml | 12 +++- .../webapp/admin/audit/revision-history.jsp | 1 - 5 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/rebuild/server/business/recyclebin/RecycleBinCleanerJob.java diff --git a/src/main/java/com/rebuild/server/business/recyclebin/RecycleBinCleanerJob.java b/src/main/java/com/rebuild/server/business/recyclebin/RecycleBinCleanerJob.java new file mode 100644 index 000000000..9bc98a7bd --- /dev/null +++ b/src/main/java/com/rebuild/server/business/recyclebin/RecycleBinCleanerJob.java @@ -0,0 +1,65 @@ +/* +rebuild - Building your business-systems freely. +Copyright (C) 2019 devezhao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package com.rebuild.server.business.recyclebin; + +import cn.devezhao.commons.CalendarUtils; +import cn.devezhao.persist4j.Entity; +import com.rebuild.server.Application; +import com.rebuild.server.business.series.SeriesZeroResetJob; +import com.rebuild.server.helper.ConfigurableItem; +import com.rebuild.server.helper.SysConfiguration; +import com.rebuild.server.metadata.EntityHelper; +import com.rebuild.server.metadata.MetadataHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.scheduling.quartz.QuartzJobBean; + +import java.util.Date; + +/** + * 回收站清理 + * + * @author devezhao + * @since 2019/8/21 + */ +public class RecycleBinCleanerJob extends QuartzJobBean { + + private static final Log LOG = LogFactory.getLog(SeriesZeroResetJob.class); + + @Override + protected void executeInternal(JobExecutionContext context) throws JobExecutionException { + int keepingDays = (int) SysConfiguration.getLong(ConfigurableItem.RecycleBinKeepingDays); + LOG.info("RecycleBinCleanerJob running ... " + keepingDays); + if (keepingDays > 9999) { + return; + } + + Entity entity = MetadataHelper.getEntity(EntityHelper.RecycleBin); + Date before = CalendarUtils.addDay(-keepingDays); + + String delSql = String.format("delete from `%s` where `%s` < '%s 00:00:00'", + entity.getPhysicalName(), + entity.getField("deletedOn").getPhysicalName(), + CalendarUtils.getUTCDateFormat().format(before)); + int del = Application.getSQLExecutor().execute(delSql, 120); + LOG.warn("RecycleBin cleaned : " + del); + } +} diff --git a/src/main/java/com/rebuild/server/business/series/SeriesZeroResetJob.java b/src/main/java/com/rebuild/server/business/series/SeriesZeroResetJob.java index 3f53067b1..8ecd2efbe 100644 --- a/src/main/java/com/rebuild/server/business/series/SeriesZeroResetJob.java +++ b/src/main/java/com/rebuild/server/business/series/SeriesZeroResetJob.java @@ -18,19 +18,19 @@ along with this program. If not, see . package com.rebuild.server.business.series; -import java.util.Calendar; - +import cn.devezhao.commons.CalendarUtils; +import cn.devezhao.persist4j.Entity; +import cn.devezhao.persist4j.Field; +import com.rebuild.server.metadata.MetadataHelper; +import com.rebuild.server.metadata.entity.DisplayType; +import com.rebuild.server.metadata.entity.EasyMeta; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; -import com.rebuild.server.metadata.MetadataHelper; -import com.rebuild.server.metadata.entity.DisplayType; -import com.rebuild.server.metadata.entity.EasyMeta; - -import cn.devezhao.commons.CalendarUtils; -import cn.devezhao.persist4j.Entity; -import cn.devezhao.persist4j.Field; +import java.util.Calendar; /** * 数字系列归零。每日 00:00 执行 @@ -40,8 +40,12 @@ import cn.devezhao.persist4j.Field; */ public class SeriesZeroResetJob extends QuartzJobBean { + private static final Log LOG = LogFactory.getLog(SeriesZeroResetJob.class); + @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { + LOG.info("SeriesZeroResetJob running ..."); + boolean isFirstDayOfYear = false; boolean isFirstDayOfMonth = false; final Calendar now = CalendarUtils.getInstance(); @@ -59,10 +63,13 @@ public class SeriesZeroResetJob extends QuartzJobBean { String zeroFlag = easy.getFieldExtConfig().getString("seriesZero"); if ("D".equalsIgnoreCase(zeroFlag)) { SeriesGeneratorFactory.zero(field); + LOG.info("Zero field by [D] : " + field); } else if ("M".equalsIgnoreCase(zeroFlag) && isFirstDayOfMonth) { SeriesGeneratorFactory.zero(field); + LOG.info("Zero field by [M] : " + field); } else if ("Y".equalsIgnoreCase(zeroFlag) && isFirstDayOfYear) { SeriesGeneratorFactory.zero(field); + LOG.info("Zero field by [Y] : " + field); } } } diff --git a/src/main/java/com/rebuild/server/helper/ConfigurableItem.java b/src/main/java/com/rebuild/server/helper/ConfigurableItem.java index 15f2e195f..0aea47b9e 100644 --- a/src/main/java/com/rebuild/server/helper/ConfigurableItem.java +++ b/src/main/java/com/rebuild/server/helper/ConfigurableItem.java @@ -55,7 +55,7 @@ public enum ConfigurableItem { LiveWallpaper(true), // 回收站数据保留天数(0为禁用回收站) - RecycleBinKeepingDays(9999), + RecycleBinKeepingDays(30), ; diff --git a/src/main/resources/application-job.xml b/src/main/resources/application-job.xml index 05be49ef7..9ea3df596 100644 --- a/src/main/resources/application-job.xml +++ b/src/main/resources/application-job.xml @@ -22,15 +22,25 @@ + + + + + + + + + - + + diff --git a/src/main/webapp/admin/audit/revision-history.jsp b/src/main/webapp/admin/audit/revision-history.jsp index 3864cf8bd..3164ca679 100644 --- a/src/main/webapp/admin/audit/revision-history.jsp +++ b/src/main/webapp/admin/audit/revision-history.jsp @@ -40,7 +40,6 @@ td .badge {
-