Sfoglia il codice sorgente

定时清理未激活用户

Luxnk 7 anni fa
parent
commit
80c73307dc

+ 3 - 0
conf/custom/cron.properties

@@ -0,0 +1,3 @@
+# 땍퍅헌잿灌駱聯痰빵
+cron.xyz.luxnk.lproject.quartz.job.CleanNonActiveUserJob=0 0 1 * * ?
+cron.pkgs=xyz.luxnk.lproject.quartz.job

+ 0 - 11
src/xyz/luxnk/lproject/MainSetup.java

@@ -37,17 +37,6 @@ public class MainSetup implements Setup {
 
         // 获取NutQuartzCronJobFactory从而触发计划任务的初始化与启动
         ioc.get(NutQuartzCronJobFactory.class);
-
-        /*try {
-            HtmlEmail email = ioc.get(HtmlEmail.class);
-            email.setSubject("测试邮件发送");
-            email.setMsg("This is a test mail... :-)" + System.currentTimeMillis());
-            email.addTo("asd3115799@hotmail.com");
-            email.buildMimeMessage();
-            email.sendMimeMessage();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }*/
     }
 
     @Override

+ 44 - 0
src/xyz/luxnk/lproject/quartz/job/CleanNonActiveUserJob.java

@@ -0,0 +1,44 @@
+package xyz.luxnk.lproject.quartz.job;
+
+import org.nutz.dao.Cnd;
+import org.nutz.dao.Dao;
+import org.nutz.dao.Sqls;
+import org.nutz.dao.sql.Sql;
+import org.nutz.ioc.loader.annotation.Inject;
+import org.nutz.ioc.loader.annotation.IocBean;
+import org.nutz.log.Log;
+import org.nutz.log.Logs;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import xyz.luxnk.lproject.bean.UserInfo;
+import xyz.luxnk.lproject.bean.UserProfile;
+
+import java.util.Date;
+
+@IocBean
+public class CleanNonActiveUserJob implements Job {
+
+    private static final Log log = Logs.get();
+
+    @Inject
+    protected Dao dao;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        log.debug("clean Non-Active User, start");
+        Date deadtime = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000L);    // 一天,测试的时候可改成1小时之类
+        Cnd cnd = Cnd.where("createTime", "<", deadtime).and(Cnd.exps("emailChecked", "=", false).or("email", "IS", null));
+        int deleted = dao.clear(UserProfile.class, cnd);
+        log.debugf("delete %d UserProfile", deleted);
+
+        Sql sql = Sqls.create("delete from $user_info_table where not exists (select 1 from $user_profile_table where $user_info_table.id = uid) and create_time < @deadtime");
+        sql.vars().set("user_info_table", dao.getEntity(UserInfo.class).getTableName());
+        sql.vars().set("user_profile_table", dao.getEntity(UserProfile.class).getTableName());
+        sql.params().set("deadtime", deadtime);
+        dao.execute(sql);
+        log.debugf("delete %d User", sql.getUpdateCount());
+
+        log.debug("clean Non-Active User, Done");
+    }
+}