补充文件备份相关功能

This commit is contained in:
chenxudong 2025-02-27 16:25:13 +08:00
parent 5eb98d6f78
commit 347ae33c71
3 changed files with 59 additions and 10 deletions

View File

@ -3,6 +3,7 @@ package com.electromagnetic.industry.software.manage.config;
import cn.hutool.core.io.FileUtil;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@ -24,6 +25,14 @@ public class ElePropertyConfig {
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
public void init() {
uploadDataDir = EleCommonUtil.isWinOs() ? environment.getProperty("data.upload.windows.tmp.path") : environment.getProperty("data.upload.linux.tmp.path");

View File

@ -1,17 +1,23 @@
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.text.StrFormatter;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
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.UserAccessLog;
import com.electromagnetic.industry.software.manage.service.FileSystemService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -25,11 +31,12 @@ import java.util.Map;
@Component
public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog> {
private String host;
private int port;
@Resource
private ElePropertyConfig elePropertyConfig;
@Resource
private FileSystemService fileSystemService;
@Resource
private UserAccessLogMapper userAccessLogMapper;
// @Scheduled(cron = "0 0 1 * * ?")
public void backup() {
@ -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) {
FileFilter filter = file -> file.lastModified() > time;
FileFilter filter = file -> file.lastModified() < time;
return FileUtil.loopFiles(dir, filter);
}
@ -68,11 +105,9 @@ public class BackupTask extends ServiceImpl<FileBackupLogMapper, FileBackupLog>
}
public BackupFileResLog backup(String filePath) {
String prjPath = "";
Map<String, Object> map = new HashMap<>();
map.put("file", new File(filePath));
map.put("path", prjPath);
String url = StrFormatter.format("http://{}:{}/data/file/backup/upload", host, port);
String url = StrFormatter.format("http://{}:{}/data/file/backup/upload", elePropertyConfig.getRemoteHost(), elePropertyConfig.getRemotePort());
String res = HttpUtil.post(url, map);
ElectromagneticResult<?> resObj = JSONUtil.toBean(res, ElectromagneticResult.class);
String data = JSONUtil.toJsonStr(resObj.getData());

View File

@ -40,3 +40,8 @@ data.linux.user.tmp.path=/szsd/data/eleData/dev/user_tmp
prj.folder.max.length=6
spring.jackson.time-zone=GMT+8
tmp.file.store.days=7
backup.remote.host=127.0.0.1
backup.remote.port=1111