From c07c01a444a488327037e000122b3f0bd832ae1c Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Sat, 18 Jan 2020 21:52:42 +0800 Subject: [PATCH] =?UTF-8?q?feat[litemall-admin-api]:=20=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A4=87=E4=BB=BD=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linlinjava/litemall/admin/job/DbJob.java | 63 +++++++++++++++++++ .../org/linlinjava/litemall/admin/DbTest.java | 55 ++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java create mode 100644 litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/DbTest.java diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java new file mode 100644 index 00000000..7d4a3f66 --- /dev/null +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java @@ -0,0 +1,63 @@ +package org.linlinjava.litemall.admin.job; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.linlinjava.litemall.core.system.SystemConfig; +import org.linlinjava.litemall.db.domain.LitemallOrder; +import org.linlinjava.litemall.db.domain.LitemallOrderGoods; +import org.linlinjava.litemall.db.service.*; +import org.linlinjava.litemall.db.util.DbUtil; +import org.linlinjava.litemall.db.util.OrderUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 数据库定时备份任务 + * 在backup文件夹中备份最近七日的数据库文件 + */ +@Component +public class DbJob { + private final Log logger = LogFactory.getLog(DbJob.class); + + @Autowired + private Environment environment; + + /* + * 定时时间是每天凌晨5点。 + */ + @Scheduled(cron = "0 0 5 * * ?") + public void backup() throws IOException { + logger.info("系统开启定时任务数据库备份"); + + String user = environment.getProperty("spring.datasource.druid.username"); + String password = environment.getProperty("spring.datasource.druid.password"); + String url = environment.getProperty("spring.datasource.druid.url"); + int index1 = url.indexOf("3306/"); + int index2 = url.indexOf("?"); + String db = url.substring(index1+5, index2); + + LocalDate localDate = LocalDate.now(); + String fileName = localDate.toString(); + File file = new File("backup", fileName); + file.getParentFile().mkdirs(); + file.createNewFile(); + + // 备份今天数据库 + DbUtil.backup(file, user, password, db); + // 删除七天前数据库备份文件 + LocalDate before = localDate.minusDays(7); + File fileBefore = new File("backup", fileName); + fileBefore.deleteOnExit(); + + logger.info("系统结束定时任务数据库备份"); + } + +} diff --git a/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/DbTest.java b/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/DbTest.java new file mode 100644 index 00000000..2428305a --- /dev/null +++ b/litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/DbTest.java @@ -0,0 +1,55 @@ +package org.linlinjava.litemall.admin; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.env.Environment; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDate; + +@WebAppConfiguration +@RunWith(SpringRunner.class) +@SpringBootTest +public class DbTest { + @Autowired + private Environment environment; + + @Test + public void test() { + String user = environment.getProperty("spring.datasource.druid.username"); + String password = environment.getProperty("spring.datasource.druid.password"); + String url = environment.getProperty("spring.datasource.druid.url"); + int index1 = url.indexOf("3306/"); + int index2 = url.indexOf("?"); + String db = url.substring(index1+5, index2); + System.out.println(user); + System.out.println(password); + System.out.println(db); + } + + @Test + public void testFileCreate() throws IOException { + LocalDate localDate = LocalDate.now(); + String fileName = localDate.toString() + ".sql"; + System.out.println(fileName); + + File file = new File("backup", fileName); + file.getParentFile().mkdirs(); + file.createNewFile(); + } + + @Test + public void testFileDelete() throws IOException { + LocalDate localDate = LocalDate.now(); + String fileName = localDate.toString() + ".sql"; + System.out.println(fileName); + + File file = new File("backup", fileName); + file.deleteOnExit(); + } +}