From dc4a7d4337ba028e07d2e164f62069b6bbe2efb6 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 17:30:42 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=87=AA=E6=B5=8B=E9=80=9A=E4=BA=86?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=B7=A5=E7=A8=8B=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=92=8C=E6=B7=BB=E5=8A=A0=E5=AD=90=E9=9B=86?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/mapper/EdFileInfoMapper.java | 1 + .../manage/pojo/models/BaseModel.java | 2 +- .../manage/pojo/models/EdFileInfo.java | 6 --- .../software/manage/pojo/resp/ProjectVO.java | 3 +- .../serviceimpl/EdFileInfoServiceImpl.java | 24 +++++---- .../resources/sqlmapper/EdFileInfoMapper.xml | 6 +-- .../common/enums/EleDataTypeEnum.java | 4 +- .../common/resp/ElectromagneticResult.java | 15 +----- .../software/common/resp/Message.java | 50 ------------------- .../industry/software/common/resp/Result.java | 17 ------- 10 files changed, 22 insertions(+), 106 deletions(-) delete mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Message.java delete mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/resp/Result.java 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..dbba768 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 @@ -13,4 +13,5 @@ public interface EdFileInfoMapper extends BaseMapper { 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..fad9251 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 @@ -103,12 +103,6 @@ public class EdFileInfo extends BaseModel { @TableField(value = "save_status") private Integer saveStatus; - /** - * 文件夹发布状态,0-未发布,1-已发布 - */ - @TableField(value = "publish_status") - private int publishStatus; - /** * 文件大小 */ 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/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index a65f93f..8b75c9b 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 @@ -44,7 +44,9 @@ import static com.electromagnetic.industry.software.common.cons.ElectromagneticC @Service public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { - private EleLog log = new EleLog(EdFileInfoServiceImpl.class); + private final EleLog log = new EleLog(EdFileInfoServiceImpl.class); + + private static final String PRJ_PARENT_ID = "0"; @Resource private Environment environment; @@ -94,7 +96,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl{}", e.getMessage()); log.error(info, e); @@ -248,8 +252,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId) - .eq(EdFileInfo::getParentId, 0) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.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); + List edFileInfos = this.baseMapper.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, "0", config, ((obj, treeNode) -> { + 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()); diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index 14bb52f..8a06d34 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -4,14 +4,12 @@ - \ No newline at end of file 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..899df06 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,8 +5,8 @@ import lombok.AllArgsConstructor; @AllArgsConstructor public enum EleDataTypeEnum { - FILE(0, "文件夹"), - FOLDER(1, "普通文件"); + FOLDER(0, "文件夹"), + FILE(1, "普通文件"); public int code; public 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(); -} From 1f5a7620ad63e22c4588cb71defcf2876cfe821c Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 17:41:31 +0800 Subject: [PATCH 2/7] clean properties --- electrmangnetic/src/main/resources/application.properties | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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 From be51f2d2506679c91fa3c83758056692e9699720 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 17:50:26 +0800 Subject: [PATCH 3/7] clean dependency --- electrmangnetic/pom.xml | 5 ----- .../software/manage/service/serviceimpl/UserServiceImpl.java | 5 ++--- 2 files changed, 2 insertions(+), 8 deletions(-) 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/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index 08a163c..d77ae5e 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); From 0c1062f9b8d43d324be8e28c924801c131596418 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 17:53:43 +0800 Subject: [PATCH 4/7] clean and formate code --- .../controller/EdFileInfoController.java | 1 - .../controller/PermissionController.java | 5 ++--- .../manage/controller/RoleController.java | 3 ++- .../manage/controller/UserController.java | 4 ++-- .../manage/pojo/models/EdFileInfo.java | 5 +++-- .../software/manage/pojo/models/Role.java | 7 ++++-- .../manage/pojo/models/RolePermission.java | 2 +- .../software/manage/pojo/models/UserRole.java | 2 +- .../manage/service/EdFileInfoService.java | 10 +++++++++ .../manage/service/PermissionService.java | 3 ++- .../serviceimpl/EDDataServiceImpl.java | 21 +++++++++--------- .../serviceimpl/EdFileInfoServiceImpl.java | 17 ++++++++------ .../serviceimpl/PermissionServiceImpl.java | 10 ++++----- .../service/serviceimpl/UserServiceImpl.java | 2 +- .../resources/sqlmapper/EdFileInfoMapper.xml | 11 ++++++++-- .../software/common/enums/EffectFlagEnum.java | 1 - .../software/common/enums/FilePermission.java | 22 +++++++++---------- .../industry/software/common/util/EleLog.java | 1 + 18 files changed, 75 insertions(+), 52 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 9532f58..c21d7cd 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 @@ -8,5 +8,4 @@ import org.springframework.web.bind.annotation.RestController; public class EdFileInfoController { - } 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 b2d6eb1..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 @@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.List; @RestController @RequestMapping("/data/ed/permission") @@ -20,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/RoleController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/RoleController.java index e30924a..04a167f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/RoleController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/RoleController.java @@ -1,6 +1,7 @@ package com.electromagnetic.industry.software.manage.controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/data/ed/role") 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/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index fad9251..5b65cac 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; @@ -98,7 +99,7 @@ public class EdFileInfo extends BaseModel { private Integer effectFlag; /** - *保存状态,0-上传中 1-上传成功 2-上传失败 + * 保存状态,0-上传中 1-上传成功 2-上传失败 */ @TableField(value = "save_status") private Integer saveStatus; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java index fcf3c88..6f5f4a6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Role.java @@ -1,7 +1,10 @@ package com.electromagnetic.industry.software.manage.pojo.models; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; + import java.time.LocalDateTime; @Data @@ -71,7 +74,7 @@ public class Role { /** * 是否有效:0-无效 1-有效 */ - @TableField(value="effect_flag") + @TableField(value = "effect_flag") private Integer effectFlag; } 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 1f128bf..a5e9ef6 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 @@ -11,7 +11,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/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 8d7034c..af550e3 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 @@ -9,12 +9,14 @@ public interface EdFileInfoService { /** * 创建一个新的工程 + * * @param prjName 新的工程名 */ ElectromagneticResult createNewPrj(String prjName); /** * 修改项目名称 + * * @param prjId * @param newPrjName * @return @@ -23,6 +25,7 @@ public interface EdFileInfoService { /** * 删除一个项目,做逻辑删除 + * * @param prjId * @return */ @@ -30,6 +33,7 @@ public interface EdFileInfoService { /** * 添加子集 + * * @param parentId * @param folderName * @return @@ -38,12 +42,14 @@ public interface EdFileInfoService { /** * 查询所有项目 + * * @return */ ElectromagneticResult queryAllPrjInfo(); /** * 子集拖拽重排序 + * * @param folderResortDTOList * @return */ @@ -51,6 +57,7 @@ public interface EdFileInfoService { /** * 项目发布 + * * @param prjId * @return */ @@ -58,6 +65,7 @@ public interface EdFileInfoService { /** * 删除子集 + * * @param fileId * @return */ @@ -65,6 +73,7 @@ public interface EdFileInfoService { /** * 层级沿用 + * * @param sourceId * @param targetId * @return @@ -73,6 +82,7 @@ public interface EdFileInfoService { /** * 修改子集名称 + * * @param id * @param newFolderName * @return 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/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 8b75c9b..7fc21f0 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 @@ -18,7 +18,10 @@ 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.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; @@ -39,15 +42,13 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT; @Service public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { - private final EleLog log = new EleLog(EdFileInfoServiceImpl.class); - private static final String PRJ_PARENT_ID = "0"; - + private final EleLog log = new EleLog(EdFileInfoServiceImpl.class); @Resource private Environment environment; @@ -68,6 +69,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl 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)); + 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(); @@ -493,7 +496,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl 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 d77ae5e..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 @@ -249,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/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index 8a06d34..775424b 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -4,12 +4,19 @@ \ No newline at end of file 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..a6bc964 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; /** * 是否删除枚举 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/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); } From 88e6f8f9d6527319fce0b5b919e59fcb63c857b1 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 19 Dec 2024 10:26:05 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/ProjectController.java | 4 +- .../manage/service/EdFileInfoService.java | 3 +- .../serviceimpl/EdFileInfoServiceImpl.java | 38 ++++++++++--------- 3 files changed, 25 insertions(+), 20 deletions(-) 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..e04c2d1 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 @@ -51,8 +51,8 @@ public class ProjectController { } @RequestMapping("deleteFolder") - public ElectromagneticResult deleteFolder(@RequestParam String fileId) { - return edFileInfoService.deleteFolder(fileId); + public ElectromagneticResult deleteFolder(@RequestParam String id, @RequestParam String parentId) { + return edFileInfoService.deleteFolder(id, parentId); } @RequestMapping("folderResort") 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 af550e3..428d220 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 @@ -67,9 +67,10 @@ public interface EdFileInfoService { * 删除子集 * * @param fileId + * @param parentId * @return */ - ElectromagneticResult deleteFolder(String fileId); + ElectromagneticResult deleteFolder(String fileId, String 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 7fc21f0..658bcd5 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 @@ -361,10 +361,12 @@ public class EdFileInfoServiceImpl extends ServiceImpl deleteFolder(String fileId) { + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult deleteFolder(String fileId, String parentId) { try { // TODO是否需要判断文件夹是否为空 @@ -380,25 +382,20 @@ public class EdFileInfoServiceImpl extends ServiceImpl 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++) { + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + for (int i = 0; i < edFileInfos1.size(); i++) { String id = edFileInfos1.get(i).getId(); this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getSort, i) + .set(EdFileInfo::getSort, i + 1) + .set(EdFileInfo::getUpdatedBy, currentUserId) + .set(EdFileInfo::getUpdateTime, now) .eq(EdFileInfo::getId, id)); } return ElectromagneticResultUtil.success(true); @@ -465,7 +462,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl modifyFolder(String id, String newFolderName) { try { + String currentUserId = UserThreadLocal.getUserId(); + Date now = new Date(); EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getId, id)); - String sysFilePath = getSysFilePathByDbPath(fileInfo.getFilePath()); + String sysFilePath = 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); - return ElectromagneticResultUtil.fail("-1", info); + throw new BizException(-1, info); } } - private String getSysFilePathByDbPath(String dbPath) { + private String getFileSysPath(String dbPath) { ArrayList paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); - return getPath(paths); + String path = getPath(paths); + return eleDataPath + File.separator + path; } private String getPath(List ids) { From 877fc5f557fad7a257a4a9ac471df658d139ff0a Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 19 Dec 2024 10:30:21 +0800 Subject: [PATCH 6/7] rename file --- .../manage/controller/ProjectController.java | 24 +++++++++---------- ...FileInfoService.java => EdPrjService.java} | 2 +- ...ServiceImpl.java => EdPrjServiceImpl.java} | 6 ++--- 3 files changed, 16 insertions(+), 16 deletions(-) rename electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/{EdFileInfoService.java => EdPrjService.java} (98%) rename electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/{EdFileInfoServiceImpl.java => EdPrjServiceImpl.java} (98%) 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 e04c2d1..501003a 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); + return edPrjService.modifyFolder(id, newFolderName); } @RequestMapping("deleteFolder") public ElectromagneticResult deleteFolder(@RequestParam String id, @RequestParam String parentId) { - return edFileInfoService.deleteFolder(id, 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/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdPrjService.java similarity index 98% rename from electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java rename to electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdPrjService.java index 428d220..2509fbc 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/EdPrjService.java @@ -5,7 +5,7 @@ import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; import java.util.List; -public interface EdFileInfoService { +public interface EdPrjService { /** * 创建一个新的工程 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/EdPrjServiceImpl.java similarity index 98% rename from electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java rename to electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 658bcd5..17314a9 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/EdPrjServiceImpl.java @@ -26,7 +26,7 @@ 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.service.EdFileInfoService; +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.core.env.Environment; @@ -45,10 +45,10 @@ import java.util.stream.Collectors; import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT; @Service -public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { +public class EdPrjServiceImpl extends ServiceImpl implements EdPrjService { private static final String PRJ_PARENT_ID = "0"; - private final EleLog log = new EleLog(EdFileInfoServiceImpl.class); + private final EleLog log = new EleLog(EdPrjServiceImpl.class); @Resource private Environment environment; From 926f0ae96e6ced2a873ad534a6f5f97d2fd15f5e Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 19 Dec 2024 17:16:20 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=BC=80=E5=8F=91=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=9A=84=E6=96=87=E4=BB=B6=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EdFileInfoController.java | 77 +++++ .../manage/controller/ProjectController.java | 4 +- .../manage/mapper/EdFileInfoMapper.java | 3 - .../manage/pojo/models/EdFileInfo.java | 26 +- .../manage/pojo/other/FileInfoDTO.java | 38 +++ .../manage/pojo/req/FileInfoQueryDTO.java | 34 ++ .../manage/pojo/resp/FileInfoQueryPageVO.java | 19 ++ .../manage/service/EdFileInfoService.java | 49 +++ .../software/manage/service/EdPrjService.java | 2 +- .../service/serviceimpl/CommonService.java | 297 ++++++++++++++++++ .../serviceimpl/EdFileInfoServiceImpl.java | 155 +++++++++ .../service/serviceimpl/EdPrjServiceImpl.java | 262 ++++----------- .../resources/sqlmapper/EdFileInfoMapper.xml | 11 - .../common/cons/ElectromagneticConstants.java | 3 + .../software/common/enums/EffectFlagEnum.java | 5 +- .../common/enums/EleDataSaveStatusEnum.java | 4 +- .../common/enums/EleDataStatusEnum.java | 4 +- .../common/enums/EleDataTypeEnum.java | 8 +- .../software/common/enums/PublishEnum.java | 4 +- 19 files changed, 767 insertions(+), 238 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoDTO.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileInfoQueryPageVO.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java 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 c21d7cd..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,11 +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/ProjectController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java index 501003a..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 @@ -46,8 +46,8 @@ public class ProjectController { } @RequestMapping("modifyFolder") - public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id) { - return edPrjService.modifyFolder(id, newFolderName); + public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id, @RequestParam String parentId) { + return edPrjService.modifyFolder(id, newFolderName, parentId); } @RequestMapping("deleteFolder") 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 dbba768..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,7 +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/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index 5b65cac..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 @@ -25,6 +25,12 @@ public class EdFileInfo extends BaseModel { @TableField(value = "file_id") private String fileId; + /** + * 父目录id + */ + @TableField(value = "parent_id") + private String parentId; + /** * 文件类型 */ @@ -68,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-文件 */ @@ -113,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/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/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java new file mode 100644 index 0000000..ac7e497 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -0,0 +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.FileInfoQueryDTO; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public interface EdFileInfoService { + + /** + * 查询文件列表 + * @param fileInfoQueryDTO + * @return + */ + ElectromagneticResult queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO); + + /** + * 新建文件夹 + * @param parentId + * @param newFolderName + * @return + */ + 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 index 2509fbc..ec4effe 100644 --- 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 @@ -88,5 +88,5 @@ public interface EdPrjService { * @param newFolderName * @return */ - ElectromagneticResult modifyFolder(String id, String newFolderName); + ElectromagneticResult modifyFolder(String id, String newFolderName, String parentId); } 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/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java new file mode 100644 index 0000000..7316021 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -0,0 +1,155 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +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.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +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.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 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 javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.BindException; +import java.util.List; +import java.util.Objects; + +@Service +public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { + + @Resource + private CommonService commonService; + + private EleLog log = new EleLog(EdFileInfoServiceImpl.class); + + /** + * 查询文件列表 + * @param fileInfoQueryDTO + * @return + */ + @Override + public ElectromagneticResult queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO) { + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .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) + + .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) + + .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)); + } + + /** + * 新建文件夹 + * @param parentId + * @param newFolderName + * @return + */ + @Override + 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().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); + // 构建响应实体(可以返回 implements EdPrjService { - private static final String PRJ_PARENT_ID = "0"; private final EleLog log = new EleLog(EdPrjServiceImpl.class); - @Resource - private Environment environment; @Resource private FileSystemService fileSystemService; @@ -58,14 +47,8 @@ public class EdPrjServiceImpl extends ServiceImpl @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"); - } - + @Resource + private CommonService commonService; /** * 创建一个新的工程 @@ -85,12 +68,11 @@ public class EdPrjServiceImpl extends ServiceImpl // 首先检查工程是否存在 // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 - LambdaQueryWrapper existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getParentId, "") - .isNull(EdFileInfo::getParentId); + Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getFileName, prjName)); - List existEdFileInfos = this.baseMapper.selectList(existPrjWrapper); - if (CollUtil.isNotEmpty(existEdFileInfos)) { + if (count > 0) { String info = StrFormatter.format("{} 已经存在", prjName); log.info(info); ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); @@ -105,25 +87,28 @@ public class EdPrjServiceImpl extends ServiceImpl String newPrjId = String.valueOf(id + 1); EdFileInfo fileInfo = new EdFileInfo(); + String nowTimeStr = EleCommonUtil.getNowTimeStr(); fileInfo.setId(newPrjId) .setFileId(newPrjId) .setFileName(prjName) - .setFileVersion(100) + .setFileVersion(FILE_START_VERSION) .setParentId(PRJ_PARENT_ID) - .setFileTime(EleCommonUtil.getNowTimeStr()) + .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(eleDataPath + File.separator + prjName); + fileSystemService.createDirectory(commonService.getEleDataPath() + File.separator + prjName); } catch (Exception e) { String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage()); log.error(info, e); @@ -134,7 +119,6 @@ public class EdPrjServiceImpl extends ServiceImpl /** * 修改项目名称 - * * @param prjId * @param newPrjName * @return @@ -143,18 +127,32 @@ public class EdPrjServiceImpl extends ServiceImpl @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); + 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 = eleDataPath + File.separator + newPrjName; + String newPath = commonService.getEleDataPath(); 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); + 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); @@ -165,7 +163,6 @@ public class EdPrjServiceImpl extends ServiceImpl /** * 删除一个项目,做逻辑删除 - * * @param prjId * @return */ @@ -173,6 +170,16 @@ public class EdPrjServiceImpl extends ServiceImpl @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) @@ -199,72 +206,7 @@ public class EdPrjServiceImpl extends ServiceImpl @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); - } - - // 判断文件夹名称是否存在 - 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); - } - - 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); - this.save(fileInfo); - // 保存到文件系统 - String targetFilePath = eleDataPath + 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); - } + return commonService.addFolder(parentId, folderName, true, true); } /** @@ -274,41 +216,7 @@ public class EdPrjServiceImpl extends ServiceImpl */ @Override 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 = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); - - List projectVOS = new ArrayList<>(); - - for (String id : ids) { - List edFileInfos = this.baseMapper.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); - } + return commonService.queryAllPrjInfo(); } /** @@ -367,43 +275,7 @@ public class EdPrjServiceImpl extends ServiceImpl @Override @Transactional(rollbackFor = Exception.class) public ElectromagneticResult deleteFolder(String fileId, String parentId) { - - 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); - // 同层级的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)); - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); - for (int i = 0; i < edFileInfos1.size(); i++) { - String id = edFileInfos1.get(i).getId(); - this.baseMapper.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); - } + return commonService.deleteFolder(fileId, parentId, true); } /** @@ -420,8 +292,8 @@ public class EdPrjServiceImpl extends ServiceImpl String currentUserId = UserThreadLocal.getUserId(); // 把source工程的层级结构copy到目标工程 // 查找source的全部目录 - List sourceEdFileInfos = this.baseMapper.selectAllAdminFolder(sourceId); - List targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId); + List targetEdFileInfos = commonService.selectAllAdminFolder(targetId); // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 for (int i = 1; i <= prjFolderMaxLength; ++i) { // 先查找source第i层下有那些子集 @@ -448,7 +320,8 @@ public class EdPrjServiceImpl extends ServiceImpl targetFile.setId(newFolderId) .setFileId(newFolderId) .setFileName(sourceFile.getFileName()) - .setFileVersion(100) + .setFileVersion(FILE_START_VERSION) + .setPrjDir(true) .setParentId(targetParentFile.getParentId()) .setFileTime(EleCommonUtil.getNowTimeStr()) .setDataType(EleDataTypeEnum.FOLDER.code) @@ -462,9 +335,9 @@ public class EdPrjServiceImpl extends ServiceImpl .setCreatedBy(currentUserId) .setUpdatedBy(currentUserId); this.save(targetFile); - String targetSysFilePath = getFileSysPath(targetFile.getFilePath()) + File.separator + sourceFileName; + String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath()) + File.separator + sourceFileName; fileSystemService.createDirectory(targetSysFilePath); - targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + targetEdFileInfos = commonService.selectAllAdminFolder(targetId); } } } @@ -478,20 +351,25 @@ public class EdPrjServiceImpl extends ServiceImpl /** * 修改子集名称 - * * @param id * @param newFolderName * @return */ @Override @Transactional(rollbackFor = Exception.class) - public ElectromagneticResult modifyFolder(String id, String newFolderName) { + 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 = getFileSysPath(fileInfo.getFilePath()); + String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath()); this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) .set(EdFileInfo::getUpdateTime, now) .set(EdFileInfo::getUpdatedBy, currentUserId) @@ -506,24 +384,4 @@ public class EdPrjServiceImpl extends ServiceImpl } } - private String getFileSysPath(String dbPath) { - ArrayList paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); - String path = getPath(paths); - return eleDataPath + File.separator + path; - } - - 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/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index 775424b..d1200a4 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -8,15 +8,4 @@ from ed_file_info where length(id) = 6 - - - \ 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 a6bc964..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 @@ -18,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 899df06..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 { - FOLDER(0, "文件夹"), - FILE(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/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; }