diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index 0eae279..b9ccd7e 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -63,11 +63,6 @@ pagehelper 5.1.2 - - org.apache.commons - commons-lang3 - 3.8.1 - com.alibaba druid 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 9532f58..3c6af82 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 @@ -1,12 +1,88 @@ package com.electromagnetic.industry.software.manage.controller; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; +import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + @RestController @RequestMapping("/data/ed/file") public class EdFileInfoController { + @Resource + private EdFileInfoService edFileInfoService; + @RequestMapping("tree") + public ElectromagneticResult tree() { + return edFileInfoService.tree(); + } + @RequestMapping("createFolder") + public ElectromagneticResult createFolder(@RequestParam String parentId, @RequestParam String newFolderName) { + return edFileInfoService.createFolder(parentId, newFolderName); + } + + @RequestMapping("deleteFolder") + public ElectromagneticResult deleteFolder(@RequestParam String id, @RequestParam Integer dataType) { + return edFileInfoService.deleteFolder(id, dataType); + } + + @RequestMapping("info") + public ElectromagneticResult info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) { + return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO); + } + + @RequestMapping("upload") + public ElectromagneticResult upload() { + return null; + } + + @RequestMapping("download") + public ResponseEntity download(@RequestParam String id, HttpServletResponse response) { + return edFileInfoService.download(id, response); + } + + @RequestMapping("updateFileInfo") + public ElectromagneticResult updateFileInfo() { + return null; + } + + @RequestMapping("deleteFile") + public ElectromagneticResult deleteFile() { + return null; + } + + @RequestMapping("moveFile") + public ElectromagneticResult moveFile() { + return null; + } + + @RequestMapping("copyFile") + public ElectromagneticResult copyFile() { + return null; + } + + @RequestMapping("versionView") + public ElectromagneticResult versionView() { + return null; + } + + @RequestMapping("versionBack") + public ElectromagneticResult versionBack() { + return null; + } + + @RequestMapping("batchExport") + public ElectromagneticResult batchExport() { + return null; + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java index 11ade56..fe198a3 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/PermissionController.java @@ -19,8 +19,8 @@ public class PermissionController { @Resource private PermissionService permissionService; - @ApiOperation(value="查询当前用户在当前目录的功能权限",notes = "") - @GetMapping(value="/{fileId}") + @ApiOperation(value = "查询当前用户在当前目录的功能权限", notes = "") + @GetMapping(value = "/{fileId}") public ElectromagneticResult getUserPermission(@PathVariable("fileId") String fileId) { String userId = UserThreadLocal.getUserId(); return ElectromagneticResultUtil.success(permissionService.getUserPermission(userId, fileId)); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java index 9dcab0e..ee506c5 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java @@ -2,7 +2,7 @@ package com.electromagnetic.industry.software.manage.controller; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; -import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import com.electromagnetic.industry.software.manage.service.EdPrjService; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -17,56 +17,56 @@ import java.util.List; public class ProjectController { @Resource - private EdFileInfoService edFileInfoService; + private EdPrjService edPrjService; @RequestMapping("create") public ElectromagneticResult create(@RequestParam String prjName) { - return edFileInfoService.createNewPrj(prjName); + return edPrjService.createNewPrj(prjName); } @RequestMapping("delete") public ElectromagneticResult delete(@RequestParam String prjId) { - return edFileInfoService.delete(prjId); + return edPrjService.delete(prjId); } @RequestMapping("modify") public ElectromagneticResult modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) { - return edFileInfoService.modifyPrjName(prjId, newPrjName); + return edPrjService.modifyPrjName(prjId, newPrjName); } @RequestMapping("queryAll") public ElectromagneticResult queryAll() { - return edFileInfoService.queryAllPrjInfo(); + return edPrjService.queryAllPrjInfo(); } @RequestMapping("addFolder") public ElectromagneticResult addFolder(@RequestParam String folderName, @RequestParam String parentId) { - return edFileInfoService.addFolder(parentId, folderName); + return edPrjService.addFolder(parentId, folderName); } @RequestMapping("modifyFolder") - public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id) { - return edFileInfoService.modifyFolder(id, newFolderName); + public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id, @RequestParam String parentId) { + return edPrjService.modifyFolder(id, newFolderName, parentId); } @RequestMapping("deleteFolder") - public ElectromagneticResult deleteFolder(@RequestParam String fileId) { - return edFileInfoService.deleteFolder(fileId); + public ElectromagneticResult deleteFolder(@RequestParam String id, @RequestParam String parentId) { + return edPrjService.deleteFolder(id, parentId); } @RequestMapping("folderResort") public ElectromagneticResult folderResort(@RequestBody List folderResortDTOList) { - return edFileInfoService.folderResort(folderResortDTOList); + return edPrjService.folderResort(folderResortDTOList); } @RequestMapping("publish") public ElectromagneticResult publish(@RequestParam String prjId) { - return edFileInfoService.publish(prjId); + return edPrjService.publish(prjId); } @RequestMapping("follow") public ElectromagneticResult follow(@RequestParam String sourceId, @RequestParam String targetId) { - return edFileInfoService.follow(sourceId, targetId); + return edPrjService.follow(sourceId, targetId); } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java index a7bc132..018a63f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserController.java @@ -70,13 +70,13 @@ public class UserController { return userService.logout(token); } - @ApiOperation(value="人员绑定", notes = "") + @ApiOperation(value = "人员绑定", notes = "") @RequestMapping(value = "/bindRoles", method = RequestMethod.POST) public ElectromagneticResult bindRoles(@RequestBody UserRoleRequest userRoleRequest) { if (userService.bindRoles(userRoleRequest)) { return ElectromagneticResultUtil.success(true); } else { - return ElectromagneticResultUtil.fail("500","不可绑定空用户"); + return ElectromagneticResultUtil.fail("500", "不可绑定空用户"); } } } \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java index 68d5fec..eaa25ed 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java @@ -11,6 +11,4 @@ public interface EdFileInfoMapper extends BaseMapper { String maxPrjId(); - List selectAllAdminFolder(String prjId); - } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java index 8ec428b..f094a1b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java @@ -24,7 +24,7 @@ public class BaseModel { /** * 最后更新时间 */ - @TableField(value = "update_time") + @TableField(value = "updated_time") private Date updateTime; /** 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 017ad7b..2c6a826 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 @@ -2,7 +2,8 @@ package com.electromagnetic.industry.software.manage.pojo.models; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; +import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import lombok.experimental.FieldNameConstants; @@ -24,6 +25,12 @@ public class EdFileInfo extends BaseModel { @TableField(value = "file_id") private String fileId; + /** + * 父目录id + */ + @TableField(value = "parent_id") + private String parentId; + /** * 文件类型 */ @@ -67,12 +74,6 @@ public class EdFileInfo extends BaseModel { @TableField(value = "file_path") private String filePath; - /** - * 父目录id - */ - @TableField(value = "parent_id") - private String parentId; - /** * 数据类型,0-文件夹 1-文件 */ @@ -98,17 +99,11 @@ public class EdFileInfo extends BaseModel { private Integer effectFlag; /** - *保存状态,0-上传中 1-上传成功 2-上传失败 + * 保存状态,0-上传中 1-上传成功 2-上传失败 */ @TableField(value = "save_status") private Integer saveStatus; - /** - * 文件夹发布状态,0-未发布,1-已发布 - */ - @TableField(value = "publish_status") - private int publishStatus; - /** * 文件大小 */ @@ -118,6 +113,18 @@ public class EdFileInfo extends BaseModel { /** * 文件夹顺序 */ - @TableField("sort") + @TableField(value = "sort") private Integer sort; + + /** + * 文件编码 + */ + @TableField(value = "file_code") + private String fileCode; + + /** + * 是否是管理员定义的系统层级目录 + */ + @TableField(value = "prj_dir") + private Boolean prjDir; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java index 6b8c312..5c8d3df 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java @@ -13,7 +13,7 @@ public class RolePermission { /** * 角色编码 */ - @TableField(value="role_id") + @TableField(value = "role_id") private String roleId; /** diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java index d6a28ea..0ad0944 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/UserRole.java @@ -17,6 +17,6 @@ public class UserRole { /** * 角色编码 */ - @TableField(value="role_id") + @TableField(value = "role_id") private String roleId; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoDTO.java new file mode 100644 index 0000000..1849880 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoDTO.java @@ -0,0 +1,38 @@ +package com.electromagnetic.industry.software.manage.pojo.other; + +import lombok.Data; + +import java.util.Date; + +@Data +public class FileInfoDTO { + + private String id; + + private String fileId; + + private String fileType; + + private String fileName; + + private String fileNote; + + private Integer fileVersion; + + private String parentId; + + private Integer dataType; + + private Integer dataStatus; + + private Integer saveStatus; + + private String fileSize; + + private Date updateTime; + + private Date createTime; + + private String fileCode; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java new file mode 100644 index 0000000..b8561c9 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java @@ -0,0 +1,34 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +@Data +public class FileInfoQueryDTO { + + /** 父文件夹id */ + private String parentId; + + /** 当前页码 */ + private Integer pageNum; + + /** 每页的数量 */ + private Integer pageSize; + + /** 搜索关键词 */ + private String keyword; + + /** 文件类型 (0-文件夹 1-文件)*/ + private Integer fileType; + + /** 上传时间(0-升序,1-降序)*/ + private Integer createdTime; + + /** 版本号(0-升序,1-降序 */ + private Integer fileVersion; + + /** 文件大小0-升序,1-降序) */ + private Integer fileSize; + + /** 状态(0-未发布 1-已发布 2-占用) */ + private Integer dataStatus; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileInfoQueryPageVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileInfoQueryPageVO.java new file mode 100644 index 0000000..1db19a0 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileInfoQueryPageVO.java @@ -0,0 +1,19 @@ +package com.electromagnetic.industry.software.manage.pojo.resp; + +import com.electromagnetic.industry.software.manage.pojo.other.FileInfoDTO; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FileInfoQueryPageVO { + + private long total; + + private List records = new ArrayList<>(); +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java index 45c3b26..71be337 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java @@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.pojo.resp; import lombok.Data; +import java.util.ArrayList; import java.util.List; @Data @@ -12,6 +13,6 @@ public class ProjectVO { private String parentId; private int sort; - private List children; + private List children = new ArrayList<>(); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 8d7034c..ac7e497 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -1,81 +1,49 @@ package com.electromagnetic.industry.software.manage.service; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; -import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; +import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; public interface EdFileInfoService { /** - * 创建一个新的工程 - * @param prjName 新的工程名 - */ - ElectromagneticResult createNewPrj(String prjName); - - /** - * 修改项目名称 - * @param prjId - * @param newPrjName + * 查询文件列表 + * @param fileInfoQueryDTO * @return */ - ElectromagneticResult modifyPrjName(String prjId, String newPrjName); + ElectromagneticResult queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO); /** - * 删除一个项目,做逻辑删除 - * @param prjId - * @return - */ - ElectromagneticResult delete(String prjId); - - /** - * 添加子集 + * 新建文件夹 * @param parentId - * @param folderName - * @return - */ - ElectromagneticResult addFolder(String parentId, String folderName); - - /** - * 查询所有项目 - * @return - */ - ElectromagneticResult queryAllPrjInfo(); - - /** - * 子集拖拽重排序 - * @param folderResortDTOList - * @return - */ - ElectromagneticResult folderResort(List folderResortDTOList); - - /** - * 项目发布 - * @param prjId - * @return - */ - ElectromagneticResult publish(String prjId); - - /** - * 删除子集 - * @param fileId - * @return - */ - ElectromagneticResult deleteFolder(String fileId); - - /** - * 层级沿用 - * @param sourceId - * @param targetId - * @return - */ - ElectromagneticResult follow(String sourceId, String targetId); - - /** - * 修改子集名称 - * @param id * @param newFolderName * @return */ - ElectromagneticResult modifyFolder(String id, String newFolderName); + ElectromagneticResult createFolder(String parentId, String newFolderName); + + /** + * 项目层级结构查询 + * @return + */ + ElectromagneticResult tree(); + + /** + * 删除目录 + * + * @param id + * @param dataType + * @return + */ + ElectromagneticResult deleteFolder(String id, Integer dataType); + + /** + * 下载文件 + * @param id + * @return + */ + ResponseEntity download(String id, HttpServletResponse response); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdPrjService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdPrjService.java new file mode 100644 index 0000000..ec4effe --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdPrjService.java @@ -0,0 +1,92 @@ +package com.electromagnetic.industry.software.manage.service; + +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; + +import java.util.List; + +public interface EdPrjService { + + /** + * 创建一个新的工程 + * + * @param prjName 新的工程名 + */ + ElectromagneticResult createNewPrj(String prjName); + + /** + * 修改项目名称 + * + * @param prjId + * @param newPrjName + * @return + */ + ElectromagneticResult modifyPrjName(String prjId, String newPrjName); + + /** + * 删除一个项目,做逻辑删除 + * + * @param prjId + * @return + */ + ElectromagneticResult delete(String prjId); + + /** + * 添加子集 + * + * @param parentId + * @param folderName + * @return + */ + ElectromagneticResult addFolder(String parentId, String folderName); + + /** + * 查询所有项目 + * + * @return + */ + ElectromagneticResult queryAllPrjInfo(); + + /** + * 子集拖拽重排序 + * + * @param folderResortDTOList + * @return + */ + ElectromagneticResult folderResort(List folderResortDTOList); + + /** + * 项目发布 + * + * @param prjId + * @return + */ + ElectromagneticResult publish(String prjId); + + /** + * 删除子集 + * + * @param fileId + * @param parentId + * @return + */ + ElectromagneticResult deleteFolder(String fileId, String parentId); + + /** + * 层级沿用 + * + * @param sourceId + * @param targetId + * @return + */ + ElectromagneticResult follow(String sourceId, String targetId); + + /** + * 修改子集名称 + * + * @param id + * @param newFolderName + * @return + */ + ElectromagneticResult modifyFolder(String id, String newFolderName, String parentId); +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java index bd4c806..4133f4a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java @@ -7,11 +7,12 @@ public interface PermissionService { /** * 查询当前用户在当前目录的功能权限 + * * @param userId * @param fileId * @return */ - Map getUserPermission(String userId, String fileId); + Map getUserPermission(String userId, String fileId); /** * 获取当前用户有权限访问的目录id diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java new file mode 100644 index 0000000..ebd6ad5 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -0,0 +1,297 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNodeConfig; +import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.text.StrFormatter; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.EleCommonUtil; +import com.electromagnetic.industry.software.common.util.EleLog; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO; +import com.electromagnetic.industry.software.manage.service.FileSystemService; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.io.File; +import java.util.*; +import java.util.stream.Collectors; + +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; + +@Component +public class CommonService { + + private final EleLog log = new EleLog(CommonService.class); + private static final Map FILE_TYPE_ENUM = new HashMap<>(); + @Value("${prj.folder.max.length}") + private int prjFolderMaxLength; + + static { + FILE_TYPE_ENUM.put(EleDataTypeEnum.FOLDER.desc, "01"); + FILE_TYPE_ENUM.put("py", "02"); + FILE_TYPE_ENUM.put("zip", "03"); + FILE_TYPE_ENUM.put("jpg", "04"); + FILE_TYPE_ENUM.put("jpeg", "05"); + FILE_TYPE_ENUM.put("png", "06"); + FILE_TYPE_ENUM.put("gif", "07"); + FILE_TYPE_ENUM.put("bmp", "08"); + FILE_TYPE_ENUM.put("tif", "09"); + FILE_TYPE_ENUM.put("tiff", "10"); + FILE_TYPE_ENUM.put("svg", "11"); + FILE_TYPE_ENUM.put("psd", "12"); + FILE_TYPE_ENUM.put("pdf", "13"); + FILE_TYPE_ENUM.put("doc", "14"); + FILE_TYPE_ENUM.put("docx", "15"); + FILE_TYPE_ENUM.put("xls", "16"); + FILE_TYPE_ENUM.put("xlsx", "17"); + FILE_TYPE_ENUM.put("ppt", "18"); + FILE_TYPE_ENUM.put("pptx", "19"); + } + + @Getter + private String eleDataPath; + + @Resource + private Environment environment; + + @Resource + private EdFileInfoMapper edFileInfoMapper; + + @Resource + private FileSystemService fileSystemService; + + @PostConstruct + public void init() { + String osName = System.getProperty("os.name").toLowerCase(); + eleDataPath = osName.startsWith("win") ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path"); + } + + /** + * 检查同层级是否有同名的文件夹 + */ + public boolean checkSameFolder(String parentId, String newFolderName) { + Long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, parentId) + .eq(EdFileInfo::getFileName, newFolderName)); + + return count > 0; + } + + public String getFileSysPath(String dbPath) { + ArrayList paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); + String path = getPath(paths); + return eleDataPath + File.separator + path; + } + + public String getPath(List ids) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName) + .in(EdFileInfo::getId, ids); + List edFileInfos = edFileInfoMapper.selectList(queryWrapper); + Map map = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName)); + StringBuilder path = new StringBuilder(); + for (String id : ids) { + String tmp = map.get(id) + File.separator; + path.append(tmp); + } + return path.toString(); + } + + public String createFileCode(String parentId, String fileType, int version, String timeStr) { + return parentId + FILE_TYPE_ENUM.get(fileType) + version + timeStr; + } + + public List selectAllAdminFolder(String id) { + return edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) + .eq(EdFileInfo::getPrjDir, true) + .likeRight(EdFileInfo::getFilePath, id)); + } + + public ElectromagneticResult addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir) { + + // 验证名称是否合法 + Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + + if (!EleCommonUtil.isFileNameValid(folderName)) { + String info = StrFormatter.format("子集名称{}不符合要求", folderName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .eq(EdFileInfo::getId, parentId); + EdFileInfo edFileInfo = edFileInfoMapper.selectOne(queryWrapper); + String currentPath = edFileInfo.getFilePath(); + List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)); + if (maxLengthCheck) { + if (paths.size() >= prjFolderMaxLength) { + String info = "当前子集已达到最大层级,禁止创建子集。"; + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + // 判断文件夹名称是否存在 + List edFileInfos = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName) + .eq(EdFileInfo::getParentId, parentId)); + List names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); + if (names.contains(folderName)) { + String info = "该子集名称已存在"; + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + + try { + int id = Integer.parseInt(edFileInfoMapper.maxPrjId()); + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + String newFolderId = String.valueOf(id + 1); + String path = currentPath + MYSQL_FILE_PATH_SPLIT + newFolderId; + EdFileInfo fileInfo = new EdFileInfo(); + String nowTimeStr = EleCommonUtil.getNowTimeStr(); + fileInfo.setId(newFolderId) + .setFileId(newFolderId) + .setFileName(folderName) + .setFileVersion(FILE_START_VERSION) + .setParentId(parentId) + .setFileCode(createFileCode(parentId, EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr)) + .setFileTime(nowTimeStr) + .setPrjDir(isPrjDir) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(path) + .setSort(names.size() + 1) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + edFileInfoMapper.insert(fileInfo); + // 保存到文件系统 + String targetFilePath = getEleDataPath() + File.separator + getPath(paths) + File.separator + folderName; + fileSystemService.createDirectory(targetFilePath); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "添加子集失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + public ElectromagneticResult queryAllPrjInfo() { + + try { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); + List ids = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); + + List projectVOS = new ArrayList<>(); + + for (String id : ids) { + List edFileInfos = selectAllAdminFolder(id); + + // 转换为树 + TreeNodeConfig config = new TreeNodeConfig(); + config.setIdKey(EdFileInfo.Fields.id); + config.setParentIdKey(EdFileInfo.Fields.parentId); + config.setWeightKey(EdFileInfo.Fields.sort); + + List> trees = TreeUtil.build(edFileInfos, PRJ_PARENT_ID, config, ((obj, treeNode) -> { + treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); + treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); + treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); + treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); + })); + + String jsonStr = JSONUtil.toJsonStr(trees); + ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); + projectVOS.add(projectVO); + } + return ElectromagneticResultUtil.success(projectVOS); + } catch (Exception e) { + String info = "查询项目失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + public ElectromagneticResult deleteFolder(String fileId, String parentId, boolean needResort) { + + try { + // TODO 如果文件夹下存在文件(不包括文件夹,包括已经删除的文件),则不允许删除 + Long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) + .eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)); + if (count > 0) { + String info = "禁止删除非空文件夹"; + log.info(info); + throw new BizException(-1, info); + } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); + List edFileInfos = edFileInfoMapper.selectList(queryWrapper); + List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); + ids.add(fileId); + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .set(EdFileInfo::getSort, -1) + .set(EdFileInfo::getUpdateTime, new Date()) + .set(EdFileInfo::getUpdatedBy, UserThreadLocal.getUserId()) + .in(EdFileInfo::getId, ids); + edFileInfoMapper.update(null, updateWrapper); + if (!needResort) { + return ElectromagneticResultUtil.success(true); + } + // 同层级的resort + List edFileInfos1 = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getSort) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getParentId, parentId) + .orderByAsc(EdFileInfo::getSort)); + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + for (int i = 0; i < edFileInfos1.size(); i++) { + String id = edFileInfos1.get(i).getId(); + edFileInfoMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, i + 1) + .set(EdFileInfo::getUpdatedBy, currentUserId) + .set(EdFileInfo::getUpdateTime, now) + .eq(EdFileInfo::getId, id)); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除子集异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java index f472147..8bc5f51 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java @@ -32,7 +32,6 @@ import com.electromagnetic.industry.software.manage.service.EDDataService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; @@ -63,25 +62,25 @@ public class EDDataServiceImpl implements EDDataService { private EDDataMapper edDataMapper; @Resource private CategoryMapper categoryMapper; -// @Value("${data.windows.path}") + // @Value("${data.windows.path}") private String uploadFilePath; -// @Value("${data.file.storage.dir}") + // @Value("${data.file.storage.dir}") private String fileStorageDir; -// @Value("${data.import.cache.dir}") + // @Value("${data.import.cache.dir}") private String importCacheDir; -// @Value("${file.encode.passwd}") + // @Value("${file.encode.passwd}") private String encodePasswd; -// @Value("${data.type.folder}") + // @Value("${data.type.folder}") private String dataTypeFolder; -// @Value("${data.windows.path}") + // @Value("${data.windows.path}") private String windowsDir; -// @Value("${data.file.cache.dir}") + // @Value("${data.file.cache.dir}") private String fileCacheDir; -// @Value("${data.upload.cache.dir}") + // @Value("${data.upload.cache.dir}") private String uploadCacheDir; -// @Value("${data.export.cache.dir}") + // @Value("${data.export.cache.dir}") private String exportCacheDir; -// @Value("${data.type.file}") + // @Value("${data.type.file}") private String dataTypeFile; @Override 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 a65f93f..7316021 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 @@ -1,520 +1,155 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; -import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.lang.tree.Tree; -import cn.hutool.core.lang.tree.TreeNodeConfig; -import cn.hutool.core.lang.tree.TreeUtil; -import cn.hutool.core.text.StrFormatter; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; -import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; -import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; -import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; -import com.electromagnetic.industry.software.common.util.*; +import com.electromagnetic.industry.software.common.util.EleLog; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; -import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; -import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO; +import com.electromagnetic.industry.software.manage.pojo.other.FileInfoDTO; +import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; +import com.electromagnetic.industry.software.manage.pojo.resp.FileInfoQueryPageVO; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; -import com.electromagnetic.industry.software.manage.service.FileSystemService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.env.Environment; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import javax.annotation.PostConstruct; import javax.annotation.Resource; -import java.io.File; -import java.util.ArrayList; -import java.util.Date; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.BindException; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; +import java.util.Objects; @Service public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { + @Resource + private CommonService commonService; + private EleLog log = new EleLog(EdFileInfoServiceImpl.class); - @Resource - private Environment environment; - - @Resource - private FileSystemService fileSystemService; - - @Value("${prj.folder.max.length}") - private int prjFolderMaxLength; - - private String eleDataPath; - - @PostConstruct - public void init() { - String osName = System.getProperty("os.name").toLowerCase(); - eleDataPath = osName.startsWith("win") ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path"); - } - - /** - * 创建一个新的工程 - * @param prjName 新的工程名 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult createNewPrj(String prjName) { - - Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); - if (!EleCommonUtil.isFileNameValid(prjName)) { - String info = StrFormatter.format("工程名称{}不符合要求", prjName); - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } - - // 首先检查工程是否存在 - // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 - LambdaQueryWrapper existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getParentId, "") - .isNull(EdFileInfo::getParentId); - - List existEdFileInfos = this.baseMapper.selectList(existPrjWrapper); - if (CollUtil.isNotEmpty(existEdFileInfos)) { - String info = StrFormatter.format("{} 已经存在", prjName); - log.info(info); - ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); - } - - try { - // 保存信息到MySQL - int id = Integer.parseInt(this.baseMapper.maxPrjId()); - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); - String newPrjId = String.valueOf(id + 1); - - EdFileInfo fileInfo = new EdFileInfo(); - fileInfo.setId(newPrjId) - .setFileId(newPrjId) - .setFileName(prjName) - .setFileVersion(100) - .setFileTime(EleCommonUtil.getNowTimeStr()) - .setDataType(EleDataTypeEnum.FOLDER.code) - .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) - .setEffectFlag(EffectFlagEnum.EFFECT.code) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) - .setFilePath(newPrjId) - .setSort(1) - .setCreatedTime(now) - .setUpdateTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); - this.save(fileInfo); - // 保存到文件系统 - fileSystemService.createDirectory(eleDataPath); - } catch (Exception e) { - String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage()); - log.error(info, e); - throw new BizException(-1, info); - } - return ElectromagneticResultUtil.success(true); - } - - /** - * 修改项目名称 - * @param prjId - * @param newPrjName + * 查询文件列表 + * @param fileInfoQueryDTO * @return */ @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult modifyPrjName(String prjId, String newPrjName) { - try { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class).eq(EdFileInfo::getId, prjId); - EdFileInfo fileInfo = this.baseMapper.selectOne(queryWrapper); - String oldPrjName = fileInfo.getFileName(); - String newPath = eleDataPath + File.separator + newPrjName; - if (fileSystemService.checkFolderExist(newPath)) { - String info = StrFormatter.format("工程名{}已经存在", newPrjName); - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } - fileInfo.setFileName(newPrjName); - this.baseMapper.updateById(fileInfo); - fileSystemService.renameFile(eleDataPath, oldPrjName, newPrjName); - } catch (Exception e) { - String info = StrFormatter.format("修改工程名异常--->{},{}", newPrjName, e.getMessage()); - log.error(info, e); - throw new BizException(-1, info); - } - return ElectromagneticResultUtil.success(true); - } + public ElectromagneticResult queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO) { - /** - * 删除一个项目,做逻辑删除 - * - * @param prjId - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult delete(String prjId) { - try { - List ids = new ArrayList<>(); - ids.add(prjId); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId) - .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); - List edFileInfos = this.baseMapper.selectList(queryWrapper); - edFileInfos.forEach(e -> ids.add(e.getId())); - Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = "删除项目失败"; - log.error(info, e); - throw new BizException(-1, info); - } - } - - /** - * 添加子集 - * - * @param parentId - * @param folderName - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult addFolder(String parentId, String folderName) { - - // 验证名称是否合法 - Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); - - if (!EleCommonUtil.isFileNameValid(folderName)) { - String info = StrFormatter.format("子集名称{}不符合要求", folderName); - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } - // 首先判断判断当前深度是否已经达到6层 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFilePath) - .eq(EdFileInfo::getId, parentId); - EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper); - String currentPath = edFileInfo.getFilePath(); - List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)); - if (paths.size() >= prjFolderMaxLength) { - String info = "当前子集已达到最大层级,禁止创建子集。"; - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } + .select() + .eq(EdFileInfo::getParentId, fileInfoQueryDTO.getParentId()) + .like(StrUtil.isNotEmpty(fileInfoQueryDTO.getKeyword()), EdFileInfo::getFileName, fileInfoQueryDTO.getKeyword()) + .like(StrUtil.isNotEmpty(fileInfoQueryDTO.getKeyword()), EdFileInfo::getFileNote, fileInfoQueryDTO.getKeyword()) + .eq(Objects.equals(fileInfoQueryDTO.getFileType(), 0), EdFileInfo::getFileType, 0) + .eq(Objects.equals(fileInfoQueryDTO.getFileType(), 1), EdFileInfo::getFileType, 1) - // 判断文件夹名称是否存在 - List edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFileName) - .eq(EdFileInfo::getParentId, parentId)); - List names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); - if (names.contains(folderName)) { - String info = "该子集名称已存在"; - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } + .eq(Objects.equals(fileInfoQueryDTO.getDataStatus(), 0), EdFileInfo::getDataStatus, 0) + .eq(Objects.equals(fileInfoQueryDTO.getDataStatus(), 1), EdFileInfo::getDataStatus, 1) + .eq(Objects.equals(fileInfoQueryDTO.getDataStatus(), 2), EdFileInfo::getDataStatus, 2) - try { - int id = Integer.parseInt(this.baseMapper.maxPrjId()); - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); - String newFolderId = String.valueOf(id + 1); - String path = currentPath + MYSQL_FILE_PATH_SPLIT + newFolderId; - EdFileInfo fileInfo = new EdFileInfo(); - fileInfo.setId(newFolderId) - .setFileId(newFolderId) - .setFileName(folderName) - .setFileVersion(100) - .setParentId(parentId) - .setFileTime(EleCommonUtil.getNowTimeStr()) - .setDataType(EleDataTypeEnum.FOLDER.code) - .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) - .setEffectFlag(EffectFlagEnum.EFFECT.code) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) - .setFilePath(path) - .setSort(names.size() + 1) - .setCreatedTime(now) - .setUpdateTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); - // 保存到文件系统 - String targetFilePath = getPath(paths) + File.separator + folderName; - fileSystemService.createDirectory(targetFilePath); - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = "添加子集失败"; - log.error(info, e); - throw new BizException(-1, info); - } + .orderByAsc(Objects.equals(fileInfoQueryDTO.getCreatedTime(), 0), EdFileInfo::getCreatedTime) + .orderByDesc(Objects.equals(fileInfoQueryDTO.getCreatedTime(), 1), EdFileInfo::getCreatedTime) + + .orderByAsc(Objects.equals(fileInfoQueryDTO.getFileVersion(), 0), EdFileInfo::getFileVersion) + .orderByDesc(Objects.equals(fileInfoQueryDTO.getFileVersion(), 1), EdFileInfo::getFileVersion) + + .orderByAsc(Objects.equals(fileInfoQueryDTO.getFileSize(), 0), EdFileInfo::getFileSize) + .orderByDesc(Objects.equals(fileInfoQueryDTO.getFileSize(), 1), EdFileInfo::getFileSize) + + .orderByAsc(Objects.equals(fileInfoQueryDTO.getCreatedTime(), 0), EdFileInfo::getCreatedTime) + .orderByDesc(Objects.equals(fileInfoQueryDTO.getCreatedTime(), 1), EdFileInfo::getCreatedTime); + Page edFileInfoPage = this.baseMapper.selectPage(new Page<>(fileInfoQueryDTO.getPageNum(), fileInfoQueryDTO.getPageSize()), queryWrapper); + long total = edFileInfoPage.getTotal(); + List records = BeanUtil.copyToList(edFileInfoPage.getRecords(), FileInfoDTO.class); + return ElectromagneticResultUtil.success(new FileInfoQueryPageVO(total, records)); } /** - * 查询所有项目 - * - * @return - */ - @Override - public ElectromagneticResult queryAllPrjInfo() { - - try { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId) - .eq(EdFileInfo::getParentId, 0) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); - List ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); - - List projectVOS = new ArrayList<>(); - - for (String id : ids) { - LambdaQueryWrapper queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort) - .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT); - List edFileInfos = this.baseMapper.selectList(queryWrapper1); - // 转换为树 - TreeNodeConfig config = new TreeNodeConfig(); - config.setIdKey(EdFileInfo.Fields.id); - config.setParentIdKey(EdFileInfo.Fields.parentId); - config.setWeightKey(EdFileInfo.Fields.sort); - - List> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> { - treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); - treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); - treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); - treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); - })); - - String jsonStr = JSONUtil.toJsonStr(trees); - ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); - projectVOS.add(projectVO); - } - return ElectromagneticResultUtil.success(projectVOS); - } catch (Exception e) { - String info = "查询项目失败"; - log.error(info, e); - throw new BizException(-1, info); - } - } - - /** - * 子集拖拽重排序 - * - * @param folderResortDTOList - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult folderResort(List folderResortDTOList) { - try { - for (FolderResortDTO folderResortDTO : folderResortDTOList) { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getSort, folderResortDTO.getSort()) - .eq(EdFileInfo::getId, folderResortDTO.getId()); - this.update(updateWrapper); - } - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = "子集重排序异常"; - log.error(info, e); - throw new BizException(-1, info); - } - } - - /** - * 项目发布 - * - * @param prjId - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult publish(String prjId) { - try { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) - .likeRight(EdFileInfo::getFilePath, prjId); - this.update(updateWrapper); - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = "项目发布异常"; - log.error(info, e); - throw new BizException(-1, info); - } - } - - /** - * 删除子集 - * - * @param fileId - * @return - */ - @Override - public ElectromagneticResult deleteFolder(String fileId) { - - try { - // TODO是否需要判断文件夹是否为空 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFilePath) - .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); - List edFileInfos = this.baseMapper.selectList(queryWrapper); - List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); - ids.add(fileId); - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) - .set(EdFileInfo::getSort, -1) - .in(EdFileInfo::getId, ids); - this.baseMapper.update(null, updateWrapper); - - String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT); - String parentId = tmpFileIds[0]; - for (String tmpPathId : tmpFileIds) { - parentId = this.baseMapper.maxPrjId(); - if (fileId.equals(tmpPathId)) { - break; - } - } - // 同层级的resort - List edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getSort) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) - .eq(EdFileInfo::getParentId, parentId) - .orderByAsc(EdFileInfo::getSort)); - for (int i = 1; i <= edFileInfos1.size(); i++) { - String id = edFileInfos1.get(i).getId(); - this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getSort, i) - .eq(EdFileInfo::getId, id)); - } - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = "删除子集异常"; - log.error(info, e); - throw new BizException(-1, info); - } - } - - /** - * 层级沿用 - * - * @param sourceId - * @param targetId - * @return - */ - @Override - public ElectromagneticResult follow(String sourceId, String targetId) { - - try { - String currentUserId = UserThreadLocal.getUserId(); - // 把source工程的层级结构copy到目标工程 - // 查找source的全部目录 - List sourceEdFileInfos = this.baseMapper.selectAllAdminFolder(sourceId); - List targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); - // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 - for (int i = 1; i <= prjFolderMaxLength; ++i) { - // 先查找source第i层下有那些子集 - final int count = i; - EdFileInfo targetParentFile = targetEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) - .collect(Collectors.toList()).get(0); - List sourceTmpEdFiles = sourceEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) - .collect(Collectors.toList()); - List targetTmpEdFiles = targetEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) - .collect(Collectors.toList()); - Map sourceFileNameMap= sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); - List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); - for (EdFileInfo edFileInfo : sourceTmpEdFiles) { - String sourceFileName = edFileInfo.getFileName(); - if (!targetFileNames.contains(sourceFileName)) { - EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); - EdFileInfo targetFile = new EdFileInfo(); - int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId()); - String newFolderId = String.valueOf(maxFolderId + 1); - Date now = new Date(); - targetFile.setId(newFolderId) - .setFileId(newFolderId) - .setFileName(sourceFile.getFileName()) - .setFileVersion(100) - .setParentId(targetParentFile.getParentId()) - .setFileTime(EleCommonUtil.getNowTimeStr()) - .setDataType(EleDataTypeEnum.FOLDER.code) - .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) - .setEffectFlag(EffectFlagEnum.EFFECT.code) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) - .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) - .setSort(targetTmpEdFiles.size() + 1) - .setCreatedTime(now) - .setUpdateTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); - this.save(targetFile); - String targetSysFilePath = getSysFilePathByDbPath(targetFile.getFilePath()) + File.separator + sourceFileName; - fileSystemService.createDirectory(targetSysFilePath); - targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); - } - } - } - return ElectromagneticResultUtil.success(true); - } catch (Exception e) { - String info = StrFormatter.format("层级沿用失败"); - log.error(info, e); - return ElectromagneticResultUtil.fail("-1", info); - } - } - - /** - * 修改子集名称 - * - * @param id + * 新建文件夹 + * @param parentId * @param newFolderName * @return */ @Override - public ElectromagneticResult modifyFolder(String id, String newFolderName) { + public ElectromagneticResult createFolder(String parentId, String newFolderName) { + return commonService.addFolder(parentId, newFolderName, false, false); + } + + /** + * 项目层级结构查询 + * + * @return + */ + @Override + public ElectromagneticResult tree() { + return commonService.queryAllPrjInfo(); + } + + /** + * 删除目录 + * @param id + * @param dataType + * @return + */ + @Override + public ElectromagneticResult deleteFolder(String id, Integer dataType) { + + Assert.isTrue(dataType == 0 || dataType == 1, "参数错误"); + if (dataType == 0) { + return commonService.deleteFolder(id, null, false); + } + + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getEffectFlag, false) + .eq(EdFileInfo::getId, id)); + return ElectromagneticResultUtil.success(true); + } + + /** + * 下载文件 + * + * @param id + * @return + */ + @Override + public ResponseEntity download(String id, HttpServletResponse response) { + try { - EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getId, id)); - String sysFilePath = getSysFilePathByDbPath(fileInfo.getFilePath()); - this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getFileName, newFolderName)); - fileSystemService.renameFile(sysFilePath, newFolderName); - return ElectromagneticResultUtil.success(true); - } catch(Exception e) { - String info = StrFormatter.format("修改子集名称为{}失败", newFolderName); + EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery().eq(EdFileInfo::getId, id)); + String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath()); + Assert.isTrue(FileUtil.exist(fileSysPath), "下载文件不存在。"); + FileSystemResource fileSystemResource = new FileSystemResource(fileSysPath); + HttpHeaders headers = new HttpHeaders(); + headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); + headers.add("Pragma", "no-cache"); + headers.add("Expires", "0"); + String fileName = Base64.encode(fileSystemResource.getFilename()); + response.setHeader("content-disposition","attachment;filename=" + fileName); + // 构建响应实体(可以返回 paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); - return getPath(paths); - } - - private String getPath(List ids) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFileName) - .in(EdFileInfo::getId, ids); - List edFileInfos = this.baseMapper.selectList(queryWrapper); - Map map = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName)); - StringBuilder path = new StringBuilder(); - for (String id : ids) { - String tmp = map.get(id) + File.separator; - path.append(tmp); - } - return path.toString(); - } - } 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 new file mode 100644 index 0000000..99cf88e --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -0,0 +1,387 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.text.StrFormatter; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.EleCommonUtil; +import com.electromagnetic.industry.software.common.util.EleLog; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; +import com.electromagnetic.industry.software.manage.service.EdPrjService; +import com.electromagnetic.industry.software.manage.service.FileSystemService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; + +@Service +public class EdPrjServiceImpl extends ServiceImpl implements EdPrjService { + + private final EleLog log = new EleLog(EdPrjServiceImpl.class); + + @Resource + private FileSystemService fileSystemService; + + @Value("${prj.folder.max.length}") + private int prjFolderMaxLength; + + @Resource + private CommonService commonService; + + /** + * 创建一个新的工程 + * + * @param prjName 新的工程名 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult createNewPrj(String prjName) { + + Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + if (!EleCommonUtil.isFileNameValid(prjName)) { + String info = StrFormatter.format("工程名称{}不符合要求", prjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + + // 首先检查工程是否存在 + // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 + Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getFileName, prjName)); + + if (count > 0) { + String info = StrFormatter.format("{} 已经存在", prjName); + log.info(info); + ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); + } + + try { + // 保存信息到MySQL + String maxPrjId = this.baseMapper.maxPrjId(); + int id = Integer.parseInt(StrUtil.isEmpty(maxPrjId) ? "100000" : maxPrjId); + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + String newPrjId = String.valueOf(id + 1); + + EdFileInfo fileInfo = new EdFileInfo(); + String nowTimeStr = EleCommonUtil.getNowTimeStr(); + fileInfo.setId(newPrjId) + .setFileId(newPrjId) + .setFileName(prjName) + .setFileVersion(FILE_START_VERSION) + .setParentId(PRJ_PARENT_ID) + .setFileTime(nowTimeStr) + .setPrjDir(true) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(newPrjId) + .setSort(1) + .setFileCode(commonService.createFileCode(newPrjId, EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr)) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + this.save(fileInfo); + // 保存到文件系统 + fileSystemService.createDirectory(commonService.getEleDataPath() + File.separator + prjName); + } catch (Exception e) { + String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage()); + log.error(info, e); + throw new BizException(-1, info); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 修改项目名称 + * @param prjId + * @param newPrjName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult modifyPrjName(String prjId, String newPrjName) { + try { + Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getFileName, newPrjName)); + + if (count > 0) { + String info = StrFormatter.format("{} 已经存在", newPrjName); + log.info(info); + ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); + } + + EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getFileName) + .eq(EdFileInfo::getId, prjId)); + String oldPrjName = fileInfo.getFileName(); + String newPath = commonService.getEleDataPath(); + if (fileSystemService.checkFolderExist(newPath)) { + String info = StrFormatter.format("工程名{}已经存在", newPrjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .eq(EdFileInfo::getId, prjId) + .set(EdFileInfo::getFileName, newPrjName) + .set(EdFileInfo::getUpdatedBy, UserThreadLocal.getUserId()) + .set(EdFileInfo::getUpdateTime, new Date())); + fileSystemService.renameFile(commonService.getEleDataPath(), oldPrjName, newPrjName); + } catch (Exception e) { + String info = StrFormatter.format("修改工程名异常--->{},{}", newPrjName, e.getMessage()); + log.error(info, e); + throw new BizException(-1, info); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 删除一个项目,做逻辑删除 + * @param prjId + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult delete(String prjId) { + try { + Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code) + .likeRight(EdFileInfo::getFilePath, prjId)); + + if (count > 0) { + String info = StrFormatter.format("禁止删除非空项目"); + log.info(info); + ElectromagneticResultUtil.fail("-1", info); + } + + List ids = new ArrayList<>(); + ids.add(prjId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + edFileInfos.forEach(e -> ids.add(e.getId())); + Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除项目失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 添加子集 + * + * @param parentId + * @param folderName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult addFolder(String parentId, String folderName) { + return commonService.addFolder(parentId, folderName, true, true); + } + + /** + * 查询所有项目 + * + * @return + */ + @Override + public ElectromagneticResult queryAllPrjInfo() { + return commonService.queryAllPrjInfo(); + } + + /** + * 子集拖拽重排序 + * + * @param folderResortDTOList + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult folderResort(List folderResortDTOList) { + try { + for (FolderResortDTO folderResortDTO : folderResortDTOList) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, folderResortDTO.getSort()) + .eq(EdFileInfo::getId, folderResortDTO.getId()); + this.update(updateWrapper); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "子集重排序异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 项目发布 + * + * @param prjId + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult publish(String prjId) { + try { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .likeRight(EdFileInfo::getFilePath, prjId); + this.update(updateWrapper); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "项目发布异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 删除子集 + * + * @param fileId + * @param parentId + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult deleteFolder(String fileId, String parentId) { + return commonService.deleteFolder(fileId, parentId, true); + } + + /** + * 层级沿用 + * + * @param sourceId + * @param targetId + * @return + */ + @Override + public ElectromagneticResult follow(String sourceId, String targetId) { + + try { + String currentUserId = UserThreadLocal.getUserId(); + // 把source工程的层级结构copy到目标工程 + // 查找source的全部目录 + List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId); + List targetEdFileInfos = commonService.selectAllAdminFolder(targetId); + // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 + for (int i = 1; i <= prjFolderMaxLength; ++i) { + // 先查找source第i层下有那些子集 + final int count = i; + EdFileInfo targetParentFile = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) + .collect(Collectors.toList()).get(0); + List sourceTmpEdFiles = sourceEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + List targetTmpEdFiles = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + Map sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); + List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); + for (EdFileInfo edFileInfo : sourceTmpEdFiles) { + String sourceFileName = edFileInfo.getFileName(); + if (!targetFileNames.contains(sourceFileName)) { + EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); + EdFileInfo targetFile = new EdFileInfo(); + int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId()); + String newFolderId = String.valueOf(maxFolderId + 1); + Date now = new Date(); + targetFile.setId(newFolderId) + .setFileId(newFolderId) + .setFileName(sourceFile.getFileName()) + .setFileVersion(FILE_START_VERSION) + .setPrjDir(true) + .setParentId(targetParentFile.getParentId()) + .setFileTime(EleCommonUtil.getNowTimeStr()) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) + .setSort(targetTmpEdFiles.size() + 1) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + this.save(targetFile); + String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath()) + File.separator + sourceFileName; + fileSystemService.createDirectory(targetSysFilePath); + targetEdFileInfos = commonService.selectAllAdminFolder(targetId); + } + } + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = StrFormatter.format("层级沿用失败"); + log.error(info, e); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + /** + * 修改子集名称 + * @param id + * @param newFolderName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult modifyFolder(String id, String newFolderName, String parentId) { + try { + // 首先检查同层是否有同名目录 + if (commonService.checkSameFolder(parentId, newFolderName)) { + String info = "存在同名子集,禁止修改"; + log.error(info); + throw new BizException(-1, info); + } + String currentUserId = UserThreadLocal.getUserId(); + Date now = new Date(); + EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getId, id)); + String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath()); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getUpdateTime, now) + .set(EdFileInfo::getUpdatedBy, currentUserId) + .eq(EdFileInfo::getId, id) + .set(EdFileInfo::getFileName, newFolderName)); + fileSystemService.renameFile(sysFilePath, newFolderName); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = StrFormatter.format("修改子集名称为{}失败", newFolderName); + log.error(info, e); + throw new BizException(-1, info); + } + } + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java index 0e2a9db..c85f9b8 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java @@ -1,7 +1,6 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.electromagnetic.industry.software.common.enums.FilePermission; import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper; @@ -27,13 +26,14 @@ public class PermissionServiceImpl implements PermissionService { /** * 查询当前用户在当前目录的功能权限 + * * @param userId * @param fileId * @return */ @Override - public Map getUserPermission (String userId, String fileId){ - Map result = new HashMap<>(); + public Map getUserPermission(String userId, String fileId) { + Map result = new HashMap<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("role_id").eq("user_id", userId); @@ -70,8 +70,8 @@ public class PermissionServiceImpl implements PermissionService { QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.select("file_id") - .in("role_id",roleIds) - .eq("permission_code",FilePermission.VIEW); + .in("role_id", roleIds) + .eq("permission_code", FilePermission.VIEW); List fileIds = rolePermissionMapper.selectObjs(queryWrapper1); return fileIds.stream() diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index 08a163c..609d055 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java @@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.SystemClock; +import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.electromagnetic.industry.software.common.cons.UserConstants; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; @@ -27,14 +28,12 @@ import com.electromagnetic.industry.software.manage.pojo.resp.UserSearchResponse import com.electromagnetic.industry.software.manage.service.UserService; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; -import org.apache.commons.lang3.RandomStringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import static cn.hutool.core.date.DateTime.now; @@ -120,7 +119,7 @@ public class UserServiceImpl implements UserService { public ElectromagneticResult createUser(UserRequest userRequest) { User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest); - user.setSalt(RandomStringUtils.randomAlphanumeric(16)); + user.setSalt(RandomUtil.randomString(16)); user.setUserId(IdWorker.getSnowFlakeIdString()); user.setUserPwd(SignUtils.MD5(UserConstants.DEFAULT_PASSWORD + user.getSalt())); user.setIsPublished(UserConstants.DEFAULT_PUBLISH_STATUS); @@ -250,7 +249,7 @@ public class UserServiceImpl implements UserService { public Boolean bindRoles(UserRoleRequest userRolesRequest) { String userId = userRolesRequest.getUserId(); List roleIds = userRolesRequest.getRoleIds(); - if (userId == null ) { + if (userId == null) { return Boolean.FALSE; } // 删除当前用户原绑定角色 diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index e2a1d29..a7b155a 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -1,17 +1,15 @@ #required spring.application.name=electromagnetic-data -logging.file.path=./logs -loggerPath=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.servlet.multipart.max-file-size=500MB -spring.servlet.multipart.max-request-size=10MB 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 pagehelper.helperDialect=mysql pagehelper.reasonable=false server.port=12395 diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index 14bb52f..d1200a4 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -4,14 +4,8 @@ - - - - \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java index 13abaed..f07299c 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java @@ -6,4 +6,7 @@ public interface ElectromagneticConstants { String MYSQL_FILE_PATH_SPLIT = "_"; + int FILE_START_VERSION = 100; + + String PRJ_PARENT_ID = "0"; } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java index f59a3f4..8b044c8 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java @@ -1,7 +1,6 @@ package com.electromagnetic.industry.software.common.enums; import lombok.AllArgsConstructor; -import lombok.Getter; /** * 是否删除枚举 @@ -19,7 +18,8 @@ public enum EffectFlagEnum { * 无效 */ NOT_EFFECTIVE(0, "无效"); - public Integer code; - public String desc; + + public final Integer code; + public final String desc; } \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java index b5c6c49..91e15f7 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java @@ -9,7 +9,7 @@ public enum EleDataSaveStatusEnum { SUCCESS(1, "上传成功"), FAIL(2, "上传失败"); - public int code; - public String des; + public final int code; + public final String des; } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java index ac43024..36a977f 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java @@ -9,7 +9,7 @@ public enum EleDataStatusEnum { PUBLISHED(1, "已发布"), OCCUPY(2, "占用"); - public int code; - public String desc; + public final int code; + public final String desc; } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java index b65c0e9..dd9a768 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java @@ -5,9 +5,9 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public enum EleDataTypeEnum { - FILE(0, "文件夹"), - FOLDER(1, "普通文件"); + FOLDER(0, "folder"), + FILE(1, "file"); - public int code; - public String desc; + public final int code; + public final String desc; } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java index 238f8fd..ac132ea 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/FilePermission.java @@ -14,7 +14,7 @@ public enum FilePermission { DOWNLOAD("download", "下载文件"), IMPORT("import", "导入文件"), EXPORT("export", "导出文件"); - + // 枚举属性 private final String code; // 权限代码 private final String description; // 权限描述 @@ -25,16 +25,6 @@ public enum FilePermission { this.description = description; } - // 获取权限代码 - public String getCode() { - return code; - } - - // 获取权限描述 - public String getDescription() { - return description; - } - // 根据 code 查找对应的枚举 public static FilePermission fromCode(String code) { for (FilePermission permission : FilePermission.values()) { @@ -53,5 +43,15 @@ public enum FilePermission { } return codes; } + + // 获取权限代码 + public String getCode() { + return code; + } + + // 获取权限描述 + public String getDescription() { + return description; + } } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/PublishEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/PublishEnum.java index d56a4cd..5665dea 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/PublishEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/PublishEnum.java @@ -15,7 +15,7 @@ public enum PublishEnum { */ UNPUBLISHED(0, "未发布"), ; - private Integer code; - private String desc; + private final Integer code; + private final String desc; } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/ElectromagneticResult.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/ElectromagneticResult.java index 1e4ac6b..be89892 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/ElectromagneticResult.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/ElectromagneticResult.java @@ -2,7 +2,7 @@ package com.electromagnetic.industry.software.common.resp; import java.io.Serializable; -public class ElectromagneticResult implements Serializable, Result { +public class ElectromagneticResult implements Serializable { private static final long serialVersionUID = -6408526187818056594L; /** @@ -73,11 +73,6 @@ public class ElectromagneticResult implements Serializable, Result { this.data = data; } - @Override - public Integer getStatus() { - return success ? 1 : 0; - } - /** * Getter method for property errorCode. * @@ -113,12 +108,4 @@ public class ElectromagneticResult implements Serializable, Result { public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } - - @Override - public Message getMessage() { - Message msg = new Message(this.getErrorMessage()); - //页面展示时,防止出现null状况 - msg.setCode(""); - return msg; - } } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Message.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Message.java deleted file mode 100644 index 76dd9b1..0000000 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Message.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.electromagnetic.industry.software.common.resp; - -public class Message { - - /** - * 返回结果码 - */ - private String code; - /** - * 返回结果信息 - */ - private String message; - /** - * 返回错误明细 - */ - private ErrorContext errorContext; - - public Message(String messageStr) { - this.message = messageStr; - } - - public String getCode() { - return code; - } - - public Message setCode(String code) { - this.code = code; - return this; - } - - public String getMessage() { - return message; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("code = "); - builder.append(code); - builder.append(", message = "); - builder.append(message); - builder.append(", "); - builder.append("BaseResult ["); - builder.append("errorContext="); - builder.append(errorContext); - builder.append("]"); - return builder.toString(); - } - -} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Result.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Result.java deleted file mode 100644 index 027268e..0000000 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Result.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.electromagnetic.industry.software.common.resp; - -public interface Result { - /** - * 返回状态 - * - * @return - */ - Integer getStatus(); - - /** - * 返回消息 - * - * @return - */ - Message getMessage(); -} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java index 4d476f3..3a6d699 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java @@ -22,6 +22,7 @@ public class EleLog { public void warn(String msg) { logger.warn(msg); } + public void error(String msg) { logger.error(msg); }