From b58e3bd04a83977f517c69f5efd102ecc8123e24 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 5 Feb 2025 15:21:53 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BA=86VIEW=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/controller/EdFileInfoController.java | 6 +++--- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java index 8613023..950fa6e 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java @@ -40,7 +40,7 @@ public class EdFileInfoController { return edFileInfoService.delete(id); } - @RequiredPermission(value = FilePermission.VIEW) +// @RequiredPermission(value = FilePermission.VIEW) @RequestMapping("info") public ElectromagneticResult info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) { return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO); @@ -121,13 +121,13 @@ public class EdFileInfoController { return edFileInfoService.uploadRecord(pageNum, pageSize); } - @RequiredPermission(value = FilePermission.VIEW) +// @RequiredPermission(value = FilePermission.VIEW) @RequestMapping(value = "/fileDetail", method = RequestMethod.GET) public ElectromagneticResult detail(@RequestParam String id) { return edFileInfoService.detail(id); } - @RequiredPermission(value = FilePermission.VIEW) +// @RequiredPermission(value = FilePermission.VIEW) @RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET) public ElectromagneticResult queryChildFolder(@RequestParam String parentId) { return edFileInfoService.queryChildFolder(parentId); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 8d4eb21..6d69d52 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -995,7 +995,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl handCopyConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo) { // 禁止同目录下移动和复制 if (srcFileInfo.getParentId().equals(destFolderInfo.getId())) { - String info = "禁止相同文件夹下移动文件"; + String info = "禁止相同文件夹下复制文件"; log.info(info); return ElectromagneticResultUtil.fail("-1", info); } From f889a6a0734069426207e8171e613ef06a8d7f23 Mon Sep 17 00:00:00 2001 From: s2042968 Date: Wed, 5 Feb 2025 16:41:02 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=B8=BA=E5=B1=82=E7=BA=A7=E5=88=A4=E6=96=AD=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=9F=A5=E7=9C=8B=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/controller/EdFileInfoController.java | 4 ++-- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java index 950fa6e..745893d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java @@ -121,13 +121,13 @@ public class EdFileInfoController { return edFileInfoService.uploadRecord(pageNum, pageSize); } -// @RequiredPermission(value = FilePermission.VIEW) + @RequiredPermission(value = FilePermission.VIEW) @RequestMapping(value = "/fileDetail", method = RequestMethod.GET) public ElectromagneticResult detail(@RequestParam String id) { return edFileInfoService.detail(id); } -// @RequiredPermission(value = FilePermission.VIEW) + @RequiredPermission(value = FilePermission.VIEW) @RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET) public ElectromagneticResult queryChildFolder(@RequestParam String parentId) { return edFileInfoService.queryChildFolder(parentId); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 6d69d52..2c25e83 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1171,6 +1171,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Sat, 8 Feb 2025 15:53:02 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../industry/software/manage/aop/RoleCheckAspect.java | 1 - 1 file changed, 1 deletion(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/RoleCheckAspect.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/RoleCheckAspect.java index 64c3237..42a2356 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/RoleCheckAspect.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/RoleCheckAspect.java @@ -8,7 +8,6 @@ import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; - @Component @Aspect public class RoleCheckAspect { From aeb39d147999018452781e5d571985a622c6e5e0 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 10 Feb 2025 10:33:38 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/controller/EdFileInfoController.java | 2 +- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java index 745893d..8613023 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java @@ -40,7 +40,7 @@ public class EdFileInfoController { return edFileInfoService.delete(id); } -// @RequiredPermission(value = FilePermission.VIEW) + @RequiredPermission(value = FilePermission.VIEW) @RequestMapping("info") public ElectromagneticResult info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) { return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 2c25e83..0c77bcf 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -412,7 +412,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Mon, 10 Feb 2025 11:31:55 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=A7=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdFileInfoServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 0c77bcf..f70a36a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1141,11 +1141,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl FileUtil.del(e.getAbsolutePath())); + Arrays.stream(FileUtil.ls(path)).forEach(e -> FileUtil.del(e.getAbsolutePath())); return destColibPath; } From d64390274777bbd3397ab980b9cb9b6f110598c7 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 10 Feb 2025 14:16:10 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/pojo/models/EdFileInfo.java | 10 ++++++++++ .../service/serviceimpl/EdFileInfoServiceImpl.java | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index d78e23a..ffaddb2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java @@ -116,6 +116,16 @@ public class EdFileInfo extends BaseModel { @TableField(value = "prj_dir") private Boolean prjDir; + /** 当一个文件作废时,其所有的历史文件也会跟着作废,此时该文件及其历史文件的all_deleted=true**/ + @TableField(value = "all_deleted") + private Boolean allDeleted; + + /** + * 当文件被管理员永久物理删除,此时为true + */ + @TableField(value = "permanent_deleted") + private Boolean permanentDeleted; + public void newInit() { String userId = UserThreadLocal.getUserId(); String newFileDbId = IdWorker.getSnowFlakeIdString(); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index f70a36a..05e6c08 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -209,7 +209,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl FileUtil.del(e.getAbsolutePath())); + FileUtil.del(path); return destColibPath; } From 9a626f88cfc474b2cc593a65495debe6ae4e2d97 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 10 Feb 2025 15:39:36 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/EdPrjServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 7f85428..9ab3f32 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -206,7 +206,7 @@ public class EdPrjServiceImpl extends ServiceImpl Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG); // 检查当前目录下有文件,如果有则不允许添加 long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getDataStatus, EleDataTypeEnum.FILE.code) + .eq(EdFileInfo::getFileType, EleDataTypeEnum.FILE.code) .eq(EdFileInfo::getParentId, parentId) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); Assert.isTrue(count == 0, "该层级目录下存在文件,不允许再定义层级目录"); From f59031bd5ca9c07d2cd8605d2b5f4b7cbf760db2 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Tue, 11 Feb 2025 15:03:49 +0800 Subject: [PATCH 08/11] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=87=E4=BB=BD=E7=9A=84=E5=B7=A5=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=9F=BA=E7=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=822.=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6=E7=9A=84=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrmangnetic-backup/pom.xml | 64 +++++++++++++ .../industry/software/backup/MainApp.java | 11 +++ .../backup/controller/FileController.java | 53 +++++++++++ .../software/backup/pojo/BackupPro.java | 16 ++++ .../software/backup/service/FileService.java | 11 +++ .../backup/serviceimp/FileServiceImpl.java | 28 ++++++ .../src/main/resources/application.yml | 11 +++ .../manage/mapper/EleFileBackupLogMapper.java | 9 ++ .../manage/pojo/models/EleFileBackupLog.java | 35 +++++++ .../software/manage/tasks/BackupTask.java | 93 +++++++++++++++++++ .../common/pojo/BackupFileResLog.java | 16 ++++ pom.xml | 1 + 12 files changed, 348 insertions(+) create mode 100644 electrmangnetic-backup/pom.xml create mode 100644 electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/MainApp.java create mode 100644 electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/controller/FileController.java create mode 100644 electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java create mode 100644 electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/service/FileService.java create mode 100644 electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/serviceimp/FileServiceImpl.java create mode 100644 electrmangnetic-backup/src/main/resources/application.yml create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EleFileBackupLogMapper.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EleFileBackupLog.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/BackupFileResLog.java diff --git a/electrmangnetic-backup/pom.xml b/electrmangnetic-backup/pom.xml new file mode 100644 index 0000000..18290fb --- /dev/null +++ b/electrmangnetic-backup/pom.xml @@ -0,0 +1,64 @@ + + + 4.0.0 + + com.electromagnetic.data + electromagnetic-data-new + 1.0-SNAPSHOT + + + electrmangnetic-backup + + + 8 + 8 + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.projectlombok + lombok + + + cn.hutool + hutool-all + 5.8.22 + + + com.electromagnetic.data + electromagnetic-common + 1.0-SNAPSHOT + compile + + + + + electrmangnetic-backup + + + org.springframework.boot + spring-boot-maven-plugin + 2.6.12 + + + + com.electromagnetic.industry.software.backup.MainApp + + + repackage + + + + + + + + + \ No newline at end of file diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/MainApp.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/MainApp.java new file mode 100644 index 0000000..dbd6c9c --- /dev/null +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/MainApp.java @@ -0,0 +1,11 @@ +package com.electromagnetic.industry.software.backup; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MainApp { + public static void main(String[] args) { + SpringApplication.run(MainApp.class, args); + } +} diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/controller/FileController.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/controller/FileController.java new file mode 100644 index 0000000..727999b --- /dev/null +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/controller/FileController.java @@ -0,0 +1,53 @@ +package com.electromagnetic.industry.software.backup.controller; + +import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.json.JSONConfig; +import cn.hutool.json.JSONUtil; +import com.electromagnetic.industry.software.backup.pojo.BackupPro; +import com.electromagnetic.industry.software.common.pojo.BackupFileResLog; +import com.electromagnetic.industry.software.backup.service.FileService; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.Date; + +@RestController +@RequestMapping("/data/file/backup") +@Slf4j +public class FileController { + + @Resource + private FileService fileService; + @Resource + private BackupPro backupPro; + + @RequestMapping("/upload") + public ElectromagneticResult upload(@RequestParam("file") MultipartFile file, @RequestParam("path") String path) { + BackupFileResLog backupFileResLog = BackupFileResLog.builder().backupStartTime(new Date()).fileName(file.getOriginalFilename()).backupStatus(true).build(); + try { + fileService.upload(file, path); + } catch (Exception e) { + String details = ExceptionUtil.stacktraceToString(e); + backupFileResLog.setBackupStatus(false); + backupFileResLog.setFailInfoDetail(details); + log.error("备份文件失败,原因--->{}", e.getMessage(), e); + } + JSONConfig jsonConfig = JSONConfig.create(); + jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); + backupFileResLog.setBackupEndTime(new Date()); + StringBuffer info = new StringBuffer() + .append("\n") + .append("#") + .append("\n") + .append(JSONUtil.toJsonStr(backupFileResLog, jsonConfig)); + FileUtil.appendUtf8String(info.toString(), backupPro.getLogPath()); + return ElectromagneticResultUtil.success(JSONUtil.toJsonStr(backupFileResLog, jsonConfig)); + } +} diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java new file mode 100644 index 0000000..c690ea4 --- /dev/null +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java @@ -0,0 +1,16 @@ +package com.electromagnetic.industry.software.backup.pojo; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "ele.backup") +public class BackupPro { + + private String saveFolder; + + private String logPath; + +} diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/service/FileService.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/service/FileService.java new file mode 100644 index 0000000..8234da0 --- /dev/null +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/service/FileService.java @@ -0,0 +1,11 @@ +package com.electromagnetic.industry.software.backup.service; + +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +public interface FileService { + + void upload(MultipartFile file, String path) throws IOException; + +} diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/serviceimp/FileServiceImpl.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/serviceimp/FileServiceImpl.java new file mode 100644 index 0000000..c62d818 --- /dev/null +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/serviceimp/FileServiceImpl.java @@ -0,0 +1,28 @@ +package com.electromagnetic.industry.software.backup.serviceimp; + +import cn.hutool.core.io.FileUtil; +import com.electromagnetic.industry.software.backup.pojo.BackupPro; +import com.electromagnetic.industry.software.backup.service.FileService; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.File; +import java.io.IOException; + +@Service +public class FileServiceImpl implements FileService { + + @Resource + private BackupPro backupPro; + + @Override + public void upload(MultipartFile file, String path) throws IOException { + String saveFolder = backupPro.getSaveFolder(); + String fileName = file.getOriginalFilename(); + String destPath = saveFolder + File.separator + path + File.separator + fileName; + if (!FileUtil.exist(destPath)) { + FileUtil.writeFromStream(file.getInputStream(), destPath); + } + } +} diff --git a/electrmangnetic-backup/src/main/resources/application.yml b/electrmangnetic-backup/src/main/resources/application.yml new file mode 100644 index 0000000..1999a62 --- /dev/null +++ b/electrmangnetic-backup/src/main/resources/application.yml @@ -0,0 +1,11 @@ + +ele: + backup: + saveFolder: "E:/szsd/ele/data/backup/" + logPath: "E:/szsd/ele/data/backup.log" + +spring: + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EleFileBackupLogMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EleFileBackupLogMapper.java new file mode 100644 index 0000000..e9f0607 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EleFileBackupLogMapper.java @@ -0,0 +1,9 @@ +package com.electromagnetic.industry.software.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EleFileBackupLog; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface EleFileBackupLogMapper extends BaseMapper { +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EleFileBackupLog.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EleFileBackupLog.java new file mode 100644 index 0000000..21faa29 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EleFileBackupLog.java @@ -0,0 +1,35 @@ +package com.electromagnetic.industry.software.manage.pojo.models; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@TableName("ele_file_backup_log") +@Data +@NoArgsConstructor +public class EleFileBackupLog { + + public EleFileBackupLog(Date reqStartTime, Date reqEndTime, long fileTime, String id) { + this.reqStartTime = reqStartTime; + this.reqEndTime = reqEndTime; + this.fileTime = fileTime; + this.id = id; + } + + private String id; + private Date reqStartTime; + private Date backupStartTime; + private Date backupEndTime; + private Date reqEndTime; + private Date createTime; + + private String fileName; + + private Boolean backupStatus; + + private String failInfoDetail; + + private long fileTime; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java new file mode 100644 index 0000000..bd59433 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java @@ -0,0 +1,93 @@ +package com.electromagnetic.industry.software.manage.tasks; + +import cn.hutool.core.bean.BeanUtil; +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.pojo.BackupFileResLog; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.mapper.EleFileBackupLogMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EleFileBackupLog; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.io.File; +import java.io.FileFilter; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class BackupTask extends ServiceImpl { + + private String host; + private int port; + + private String prjDir; + + @Resource + private Environment environment; + + @PostConstruct + public void init() { + String osName = System.getProperty("os.name").toLowerCase(); + String tmp = osName.startsWith("win") ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path"); + prjDir = FileUtil.getParent(tmp, 1); + } + +// @Scheduled(cron = "0 0 1 * * ?") + public void backup() { + long lastFileTime = getLastFileTime(); + List files = filter(lastFileTime, prjDir); + for (File file : files) { + String fileCode = getFileCode(file); + Date reqStartTime = new Date(); + BackupFileResLog resLog = backup(file.getAbsolutePath()); + Date reqEndTime = new Date(); + EleFileBackupLog resDb = new EleFileBackupLog(reqStartTime, reqEndTime, file.lastModified(), fileCode); + BeanUtil.copyProperties(resLog, resDb); + this.saveOrUpdate(resDb); + } + } + + private static List filter(long time, String dir) { + FileFilter filter = file -> file.lastModified() > time; + return FileUtil.loopFiles(dir, filter); + } + + private String getFileCode(File file) { + String fileName = file.getName(); + int index = fileName.lastIndexOf("."); + return fileName.substring(index + 1); + } + + private long getLastFileTime() { + List eleFileBackupLogs = this.baseMapper.selectList(Wrappers.lambdaQuery(EleFileBackupLog.class) + .select(EleFileBackupLog::getFileTime) + .orderByDesc(EleFileBackupLog::getFileTime) + .last("limit 1")); + if (eleFileBackupLogs.isEmpty()) { + return 0L; + } + return eleFileBackupLogs.get(0).getFileTime(); + } + + private BackupFileResLog backup(String filePath) { + String prjPath = ""; + Map 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 res = HttpUtil.post(url, map); + ElectromagneticResult resObj = JSONUtil.toBean(res, ElectromagneticResult.class); + String data = JSONUtil.toJsonStr(resObj.getData()); + return JSONUtil.toBean(data, BackupFileResLog.class); + } +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/BackupFileResLog.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/BackupFileResLog.java new file mode 100644 index 0000000..146d91e --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/BackupFileResLog.java @@ -0,0 +1,16 @@ +package com.electromagnetic.industry.software.common.pojo; + +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@Builder +public class BackupFileResLog { + private Date backupStartTime; + private String fileName; + private Boolean backupStatus; + private Date backupEndTime; + private String failInfoDetail; +} diff --git a/pom.xml b/pom.xml index d003aa6..17b4071 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ electrmangnetic electromagnetic-common + electrmangnetic-backup From f999b63793d575d9f6567f2cf28283d4b78a7fef Mon Sep 17 00:00:00 2001 From: chenxudong Date: Tue, 11 Feb 2025 15:10:41 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrmangnetic-backup/pom.xml | 4 ++-- electrmangnetic/pom.xml | 2 +- electromagnetic-common/pom.xml | 2 +- pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/electrmangnetic-backup/pom.xml b/electrmangnetic-backup/pom.xml index 18290fb..55250e4 100644 --- a/electrmangnetic-backup/pom.xml +++ b/electrmangnetic-backup/pom.xml @@ -6,7 +6,7 @@ com.electromagnetic.data electromagnetic-data-new - 1.0-SNAPSHOT + 1.0 electrmangnetic-backup @@ -40,7 +40,7 @@ - electrmangnetic-backup + electromagnetic-backup org.springframework.boot diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index 424fcca..a53a787 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -6,7 +6,7 @@ com.electromagnetic.data electromagnetic-data-new - 1.0-SNAPSHOT + 1.0 electrmangnetic diff --git a/electromagnetic-common/pom.xml b/electromagnetic-common/pom.xml index ecdbafb..bf830ed 100644 --- a/electromagnetic-common/pom.xml +++ b/electromagnetic-common/pom.xml @@ -6,7 +6,7 @@ com.electromagnetic.data electromagnetic-data-new - 1.0-SNAPSHOT + 1.0 electromagnetic-common diff --git a/pom.xml b/pom.xml index 17b4071..b3dfc52 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.electromagnetic.data electromagnetic-data-new - 1.0-SNAPSHOT + 1.0 pom electrmangnetic From 409afa710b4d1a66b7074698cd36287ebaf54b21 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Tue, 11 Feb 2025 15:12:17 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=BC=95=E8=B5=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrmangnetic-backup/pom.xml | 2 +- electrmangnetic/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/electrmangnetic-backup/pom.xml b/electrmangnetic-backup/pom.xml index 55250e4..d848fd8 100644 --- a/electrmangnetic-backup/pom.xml +++ b/electrmangnetic-backup/pom.xml @@ -34,7 +34,7 @@ com.electromagnetic.data electromagnetic-common - 1.0-SNAPSHOT + 1.0 compile diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index a53a787..8652bd5 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -61,7 +61,7 @@ com.electromagnetic.data electromagnetic-common - 1.0-SNAPSHOT + 1.0 compile From bac3da7d8f7193c2efd2e5df8254b49bb32df982 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Tue, 11 Feb 2025 15:32:55 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/backup/pojo/BackupPro.java | 13 ++++++++-- .../src/main/resources/application.yml | 5 ++-- .../src/main/resources/application.properties | 26 ++++++++++--------- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java index c690ea4..b4c5814 100644 --- a/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java +++ b/electrmangnetic-backup/src/main/java/com/electromagnetic/industry/software/backup/pojo/BackupPro.java @@ -1,10 +1,10 @@ package com.electromagnetic.industry.software.backup.pojo; -import lombok.Data; +import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; -@Data +@Setter @Component @ConfigurationProperties(prefix = "ele.backup") public class BackupPro { @@ -13,4 +13,13 @@ public class BackupPro { private String logPath; + private String winPrefix; + + public String getSaveFolder() { + return System.getProperty("os.name").toLowerCase().startsWith("win") ? winPrefix + saveFolder : saveFolder; + } + + public String getLogPath() { + return System.getProperty("os.name").toLowerCase().startsWith("win") ? winPrefix + logPath : logPath; + } } diff --git a/electrmangnetic-backup/src/main/resources/application.yml b/electrmangnetic-backup/src/main/resources/application.yml index 1999a62..cfe6996 100644 --- a/electrmangnetic-backup/src/main/resources/application.yml +++ b/electrmangnetic-backup/src/main/resources/application.yml @@ -1,8 +1,9 @@ ele: backup: - saveFolder: "E:/szsd/ele/data/backup/" - logPath: "E:/szsd/ele/data/backup.log" + saveFolder: "/szsd/ele/data/backup/" + logPath: "/szsd/ele/data/backup.log" + winPrefix: "D:/tmp" spring: servlet: diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index b63fb91..e364943 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -1,25 +1,27 @@ #required spring.application.name=electromagnetic-data spring.datasource.typd=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url=jdbc:mysql://139.224.43.89:3306/em_data?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true -spring.datasource.username=comac -spring.datasource.password=2024*Comac +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/em_data_dev?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +spring.datasource.username=user +spring.datasource.password=123123 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource mybatis-plus.mapper-locations=classpath:sqlmapper/*.xml mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl spring.servlet.multipart.max-file-size=500MB -spring.servlet.multipart.max-request-size=10MB +spring.servlet.multipart.max-request-size=500MB pagehelper.helperDialect=mysql pagehelper.reasonable=false -server.port=12395 -file.security.passwd=adknfhkj87654knd +server.port=12396 #windows文件存储目录,用于测试 -data.windows.path=D:/tmp/eleData/project/ -data.linux.path=/szsd/data/eleData/project/ -data.upload.windows.tmp.path=D:/tmp/eleData/upload/ -data.upload.linux.tmp.path=/szsd/data/eleData/upload/ -data.download.windows.tmp.path=D:/tmp/eleData/download/ -data.download.linux.tmp.path=/szsd/data/eleData/download/ +data.windows.path=D:/tmp/szsd/data/eleData/dev/project/ +data.upload.windows.tmp.path=D:/tmp/szsd/data/eleData/dev/upload/ +data.download.windows.tmp.path=D:/tmp/szsd/data/eleData/dev/download/ + +data.linux.path=/szsd/data/eleData/dev/project/ +data.upload.linux.tmp.path=/szsd/data/eleData/dev/upload/ +data.download.linux.tmp.path=/szsd/data/eleData/dev/download/ + prj.folder.max.length=6 +spring.jackson.time-zone=GMT+8 \ No newline at end of file