补充文件备份相关功能
This commit is contained in:
parent
5eb98d6f78
commit
347ae33c71
|
|
@ -3,6 +3,7 @@ package com.electromagnetic.industry.software.manage.config;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
|
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
@ -24,6 +25,14 @@ public class ElePropertyConfig {
|
||||||
|
|
||||||
private String prjDir;
|
private String prjDir;
|
||||||
|
|
||||||
|
@Value("${data.tmp.days:7}")
|
||||||
|
private int tmpFileStoreDays;
|
||||||
|
|
||||||
|
@Value("${backup.remote.host}")
|
||||||
|
private String remoteHost = "";
|
||||||
|
@Value("${backup.remote.port}")
|
||||||
|
private int remotePort;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
uploadDataDir = EleCommonUtil.isWinOs() ? environment.getProperty("data.upload.windows.tmp.path") : environment.getProperty("data.upload.linux.tmp.path");
|
uploadDataDir = EleCommonUtil.isWinOs() ? environment.getProperty("data.upload.windows.tmp.path") : environment.getProperty("data.upload.linux.tmp.path");
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,23 @@
|
||||||
package com.electromagnetic.industry.software.manage.tasks;
|
package com.electromagnetic.industry.software.manage.tasks;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.text.StrFormatter;
|
import cn.hutool.core.text.StrFormatter;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
|
||||||
import com.electromagnetic.industry.software.common.pojo.BackupFileResLog;
|
import com.electromagnetic.industry.software.common.pojo.BackupFileResLog;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
|
import com.electromagnetic.industry.software.common.util.IdWorker;
|
||||||
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
|
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
|
||||||
import com.electromagnetic.industry.software.manage.mapper.FileBackupLogMapper;
|
import com.electromagnetic.industry.software.manage.mapper.FileBackupLogMapper;
|
||||||
|
import com.electromagnetic.industry.software.manage.mapper.UserAccessLogMapper;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.models.FileBackupLog;
|
import com.electromagnetic.industry.software.manage.pojo.models.FileBackupLog;
|
||||||
|
import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog;
|
||||||
|
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
@ -25,13 +31,14 @@ import java.util.Map;
|
||||||
@Component
|
@Component
|
||||||
public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog> {
|
public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog> {
|
||||||
|
|
||||||
private String host;
|
|
||||||
private int port;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ElePropertyConfig elePropertyConfig;
|
private ElePropertyConfig elePropertyConfig;
|
||||||
|
@Resource
|
||||||
|
private FileSystemService fileSystemService;
|
||||||
|
@Resource
|
||||||
|
private UserAccessLogMapper userAccessLogMapper;
|
||||||
|
|
||||||
// @Scheduled(cron = "0 0 1 * * ?")
|
// @Scheduled(cron = "0 0 1 * * ?")
|
||||||
public void backup() {
|
public void backup() {
|
||||||
long lastFileTime = getLastFileTime();
|
long lastFileTime = getLastFileTime();
|
||||||
List<File> files = filter(lastFileTime, elePropertyConfig.getPrjDir());
|
List<File> files = filter(lastFileTime, elePropertyConfig.getPrjDir());
|
||||||
|
|
@ -45,8 +52,38 @@ public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Scheduled(cron = "0 0 3 * * ?")
|
||||||
|
public void deleteTmpFile() {
|
||||||
|
DateTime backDaysTime = DateUtil.offsetDay(new Date(), elePropertyConfig.getTmpFileStoreDays());
|
||||||
|
FileFilter filter = file -> file.lastModified() < backDaysTime.getTime();
|
||||||
|
List<File> files = FileUtil.loopFiles(elePropertyConfig.getTmpDir(), filter);
|
||||||
|
for (File file : files) {
|
||||||
|
fileSystemService.deleteFile(file.getAbsolutePath());
|
||||||
|
UserAccessLog userAccessLog = UserAccessLog.builder()
|
||||||
|
.id(IdWorker.getSnowFlakeIdString())
|
||||||
|
.userId("")
|
||||||
|
.accessStartTime(new Date())
|
||||||
|
.accessEndTime(new Date())
|
||||||
|
.accessDuration(0L)
|
||||||
|
.action("删除")
|
||||||
|
.requestUrl("")
|
||||||
|
.requestIp("")
|
||||||
|
.reqArgs("")
|
||||||
|
.remoteAddr("")
|
||||||
|
.accessSuccess(true)
|
||||||
|
.operationMsg("从系统中物理删除了文件" + file.getName())
|
||||||
|
.createTime(new Date())
|
||||||
|
.operationModule(UserOperationModuleEnum.DATABASE.key)
|
||||||
|
.dataId("")
|
||||||
|
.parentId("")
|
||||||
|
.response("")
|
||||||
|
.build();
|
||||||
|
userAccessLogMapper.insert(userAccessLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static List<File> filter(long time, String dir) {
|
private static List<File> filter(long time, String dir) {
|
||||||
FileFilter filter = file -> file.lastModified() > time;
|
FileFilter filter = file -> file.lastModified() < time;
|
||||||
return FileUtil.loopFiles(dir, filter);
|
return FileUtil.loopFiles(dir, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,11 +105,9 @@ public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog>
|
||||||
}
|
}
|
||||||
|
|
||||||
public BackupFileResLog backup(String filePath) {
|
public BackupFileResLog backup(String filePath) {
|
||||||
String prjPath = "";
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("file", new File(filePath));
|
map.put("file", new File(filePath));
|
||||||
map.put("path", prjPath);
|
String url = StrFormatter.format("http://{}:{}/data/file/backup/upload", elePropertyConfig.getRemoteHost(), elePropertyConfig.getRemotePort());
|
||||||
String url = StrFormatter.format("http://{}:{}/data/file/backup/upload", host, port);
|
|
||||||
String res = HttpUtil.post(url, map);
|
String res = HttpUtil.post(url, map);
|
||||||
ElectromagneticResult<?> resObj = JSONUtil.toBean(res, ElectromagneticResult.class);
|
ElectromagneticResult<?> resObj = JSONUtil.toBean(res, ElectromagneticResult.class);
|
||||||
String data = JSONUtil.toJsonStr(resObj.getData());
|
String data = JSONUtil.toJsonStr(resObj.getData());
|
||||||
|
|
|
||||||
|
|
@ -40,3 +40,8 @@ data.linux.user.tmp.path=/szsd/data/eleData/dev/user_tmp
|
||||||
prj.folder.max.length=6
|
prj.folder.max.length=6
|
||||||
|
|
||||||
spring.jackson.time-zone=GMT+8
|
spring.jackson.time-zone=GMT+8
|
||||||
|
|
||||||
|
tmp.file.store.days=7
|
||||||
|
|
||||||
|
backup.remote.host=127.0.0.1
|
||||||
|
backup.remote.port=1111
|
||||||
Loading…
Reference in New Issue