diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index f255d8a..0eae279 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -23,26 +23,6 @@ org.springframework.boot spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter - - - ch.qos.logback - logback-classic - - - org.slf4j - slf4j-log4j12 - - - org.apache.logging.log4j - log4j-to-slf4j - - - - cn.hutool hutool-all @@ -93,35 +73,6 @@ druid 1.1.10 - - - org.apache.logging.log4j - log4j-api - 2.11.2 - - - org.apache.logging.log4j - log4j-core - 2.11.2 - - - org.apache.logging.log4j - log4j-jcl - 2.11.2 - - - - com.lmax - disruptor - 3.4.2 - - - - - org.apache.logging.log4j - log4j-slf4j-impl - 2.11.2 - org.springframework.boot spring-boot-starter-test diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java new file mode 100644 index 0000000..35aa853 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java @@ -0,0 +1,32 @@ +package com.electromagnetic.industry.software.manage.common; + +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(RuntimeException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public ElectromagneticResult runTimeError(Throwable e) { + log.error(e.getMessage(), e); + return ElectromagneticResultUtil.fail("-1", e.getMessage()); + } + + @ExceptionHandler(BizException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public ElectromagneticResult bizError(BizException e) { + log.error(e.getMessage(), e); + return ElectromagneticResultUtil.fail("-1", e.getMsg()); + } +} \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java index c147180..96c1a9a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java @@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; -@RequestMapping("/data/ed/file") +@RequestMapping("/data1/ed/file") @RestController public class EDDataController { 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 d2234f3..9dcab0e 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 @@ -1,9 +1,72 @@ 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 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 java.util.List; + + @RestController @RequestMapping("/data/ed/prj") public class ProjectController { + + @Resource + private EdFileInfoService edFileInfoService; + + @RequestMapping("create") + public ElectromagneticResult create(@RequestParam String prjName) { + return edFileInfoService.createNewPrj(prjName); + } + + @RequestMapping("delete") + public ElectromagneticResult delete(@RequestParam String prjId) { + return edFileInfoService.delete(prjId); + } + + @RequestMapping("modify") + public ElectromagneticResult modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) { + return edFileInfoService.modifyPrjName(prjId, newPrjName); + } + + + @RequestMapping("queryAll") + public ElectromagneticResult queryAll() { + return edFileInfoService.queryAllPrjInfo(); + } + + @RequestMapping("addFolder") + public ElectromagneticResult addFolder(@RequestParam String folderName, @RequestParam String parentId) { + return edFileInfoService.addFolder(parentId, folderName); + } + + @RequestMapping("modifyFolder") + public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id) { + return edFileInfoService.modifyFolder(id, newFolderName); + } + + @RequestMapping("deleteFolder") + public ElectromagneticResult deleteFolder(@RequestParam String fileId) { + return edFileInfoService.deleteFolder(fileId); + } + + @RequestMapping("folderResort") + public ElectromagneticResult folderResort(@RequestBody List folderResortDTOList) { + return edFileInfoService.folderResort(folderResortDTOList); + } + + @RequestMapping("publish") + public ElectromagneticResult publish(@RequestParam String prjId) { + return edFileInfoService.publish(prjId); + } + + @RequestMapping("follow") + public ElectromagneticResult follow(@RequestParam String sourceId, @RequestParam String targetId) { + return edFileInfoService.follow(sourceId, targetId); + } } 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 96477f3..68d5fec 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 @@ -4,6 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface EdFileInfoMapper extends BaseMapper { + + String maxPrjId(); + + List selectAllAdminFolder(String prjId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java index 9f3ae50..e98ab0c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; import org.apache.ibatis.annotations.Mapper; + @Mapper public interface RolePermissionMapper extends BaseMapper { } 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 new file mode 100644 index 0000000..8ec428b --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java @@ -0,0 +1,35 @@ +package com.electromagnetic.industry.software.manage.pojo.models; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Accessors(chain = true) +@Data +public class BaseModel { + /** + * 创建时间 + */ + @TableField(value = "created_time") + private Date createdTime; + + /** + * 创建人 + */ + @TableField(value = "created_by") + private String createdBy; + + /** + * 最后更新时间 + */ + @TableField(value = "update_time") + private Date updateTime; + + /** + * 最后更新人 + */ + @TableField(value = "updated_by") + private String updatedBy; +} 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 1b683d9..017ad7b 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,13 +2,16 @@ package com.electromagnetic.industry.software.manage.pojo.models; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; +import lombok.*; +import lombok.experimental.Accessors; +import lombok.experimental.FieldNameConstants; -import java.util.Date; - -@Data +@EqualsAndHashCode(callSuper = true) @TableName("ed_file_info") -public class EdFileInfo { +@Accessors(chain = true) +@Data +@FieldNameConstants +public class EdFileInfo extends BaseModel { /** * 主键ID */ @@ -100,30 +103,6 @@ public class EdFileInfo { @TableField(value = "save_status") private Integer saveStatus; - /** - * 文件创建时间 - */ - @TableField(value = "created_time") - private Date createdTime; - - /** - * 文件创建人 - */ - @TableField(value = "created_by") - private String createdBy; - - /** - * 文件最后更新时间 - */ - @TableField(value = "update_time") - private Date updateTime; - - /** - * 文件最后更新人 - */ - @TableField(value = "updated_by") - private String updatedBy; - /** * 文件夹发布状态,0-未发布,1-已发布 */ diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java new file mode 100644 index 0000000..ce6aa1a --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java @@ -0,0 +1,9 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +@Data +public class FolderResortDTO { + private String id; + private int sort; +} 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 new file mode 100644 index 0000000..45c3b26 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.manage.pojo.resp; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectVO { + + private String id; + private String fileName; + private String parentId; + private int sort; + + private List children; + +} 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 caad7d0..8d7034c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -1,4 +1,81 @@ package com.electromagnetic.industry.software.manage.service; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; + +import java.util.List; + public interface EdFileInfoService { + + /** + * 创建一个新的工程 + * @param prjName 新的工程名 + */ + ElectromagneticResult createNewPrj(String prjName); + + /** + * 修改项目名称 + * @param prjId + * @param newPrjName + * @return + */ + ElectromagneticResult modifyPrjName(String prjId, String newPrjName); + + /** + * 删除一个项目,做逻辑删除 + * @param prjId + * @return + */ + ElectromagneticResult delete(String prjId); + + /** + * 添加子集 + * @param parentId + * @param folderName + * @return + */ + ElectromagneticResult addFolder(String parentId, String folderName); + + /** + * 查询所有项目 + * @return + */ + ElectromagneticResult queryAllPrjInfo(); + + /** + * 子集拖拽重排序 + * @param folderResortDTOList + * @return + */ + ElectromagneticResult folderResort(List folderResortDTOList); + + /** + * 项目发布 + * @param prjId + * @return + */ + ElectromagneticResult publish(String prjId); + + /** + * 删除子集 + * @param fileId + * @return + */ + ElectromagneticResult deleteFolder(String fileId); + + /** + * 层级沿用 + * @param sourceId + * @param targetId + * @return + */ + ElectromagneticResult follow(String sourceId, String targetId); + + /** + * 修改子集名称 + * @param id + * @param newFolderName + * @return + */ + ElectromagneticResult modifyFolder(String id, String newFolderName); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java new file mode 100644 index 0000000..41cd016 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java @@ -0,0 +1,20 @@ +package com.electromagnetic.industry.software.manage.service; + +import java.io.InputStream; + +public interface FileSystemService { + + void createDirectory(String path); + + void copyFile(String source, String destination); + + void moveFile(String source, String destination); + + void save(InputStream inputStream, String destination); + + void renameFile(String sourcePath, String newName); + + void renameFile(String sourcePath, String sourceName, String newName); + + boolean checkFolderExist(String newPath); +} 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 c07c831..f472147 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 @@ -63,25 +63,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 dec837c..a65f93f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1,8 +1,520 @@ 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.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.*; +import com.electromagnetic.industry.software.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.FileSystemService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; @Service -public class EdFileInfoServiceImpl implements EdFileInfoService { +public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { + + private EleLog log = new EleLog(EdFileInfoServiceImpl.class); + + @Resource + private Environment environment; + + @Resource + private FileSystemService fileSystemService; + + @Value("${prj.folder.max.length}") + private int prjFolderMaxLength; + + private String eleDataPath; + + @PostConstruct + public void init() { + String osName = System.getProperty("os.name").toLowerCase(); + eleDataPath = osName.startsWith("win") ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path"); + } + + + /** + * 创建一个新的工程 + * @param prjName 新的工程名 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult createNewPrj(String prjName) { + + Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + if (!EleCommonUtil.isFileNameValid(prjName)) { + String info = StrFormatter.format("工程名称{}不符合要求", prjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + + // 首先检查工程是否存在 + // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 + LambdaQueryWrapper existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, "") + .isNull(EdFileInfo::getParentId); + + List existEdFileInfos = this.baseMapper.selectList(existPrjWrapper); + if (CollUtil.isNotEmpty(existEdFileInfos)) { + String info = StrFormatter.format("{} 已经存在", prjName); + log.info(info); + ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); + } + + try { + // 保存信息到MySQL + int id = Integer.parseInt(this.baseMapper.maxPrjId()); + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + String newPrjId = String.valueOf(id + 1); + + EdFileInfo fileInfo = new EdFileInfo(); + fileInfo.setId(newPrjId) + .setFileId(newPrjId) + .setFileName(prjName) + .setFileVersion(100) + .setFileTime(EleCommonUtil.getNowTimeStr()) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(newPrjId) + .setSort(1) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + this.save(fileInfo); + // 保存到文件系统 + fileSystemService.createDirectory(eleDataPath); + } catch (Exception e) { + String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage()); + log.error(info, e); + throw new BizException(-1, info); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 修改项目名称 + * @param prjId + * @param newPrjName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult modifyPrjName(String prjId, String newPrjName) { + try { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class).eq(EdFileInfo::getId, prjId); + EdFileInfo fileInfo = this.baseMapper.selectOne(queryWrapper); + String oldPrjName = fileInfo.getFileName(); + String newPath = eleDataPath + File.separator + newPrjName; + if (fileSystemService.checkFolderExist(newPath)) { + String info = StrFormatter.format("工程名{}已经存在", newPrjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + fileInfo.setFileName(newPrjName); + this.baseMapper.updateById(fileInfo); + fileSystemService.renameFile(eleDataPath, oldPrjName, newPrjName); + } catch (Exception e) { + String info = StrFormatter.format("修改工程名异常--->{},{}", newPrjName, e.getMessage()); + log.error(info, e); + throw new BizException(-1, info); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 删除一个项目,做逻辑删除 + * + * @param prjId + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult delete(String prjId) { + try { + List ids = new ArrayList<>(); + ids.add(prjId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + edFileInfos.forEach(e -> ids.add(e.getId())); + Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除项目失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 添加子集 + * + * @param parentId + * @param folderName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult addFolder(String parentId, String folderName) { + + // 验证名称是否合法 + Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + + if (!EleCommonUtil.isFileNameValid(folderName)) { + String info = StrFormatter.format("子集名称{}不符合要求", folderName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + // 首先判断判断当前深度是否已经达到6层 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .eq(EdFileInfo::getId, parentId); + EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper); + String currentPath = edFileInfo.getFilePath(); + List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)); + if (paths.size() >= prjFolderMaxLength) { + String info = "当前子集已达到最大层级,禁止创建子集。"; + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + + // 判断文件夹名称是否存在 + 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); + // 保存到文件系统 + String targetFilePath = getPath(paths) + File.separator + folderName; + fileSystemService.createDirectory(targetFilePath); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "添加子集失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 查询所有项目 + * + * @return + */ + @Override + public ElectromagneticResult queryAllPrjInfo() { + + try { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .eq(EdFileInfo::getParentId, 0) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + List ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); + + List projectVOS = new ArrayList<>(); + + for (String id : ids) { + LambdaQueryWrapper queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper1); + // 转换为树 + TreeNodeConfig config = new TreeNodeConfig(); + config.setIdKey(EdFileInfo.Fields.id); + config.setParentIdKey(EdFileInfo.Fields.parentId); + config.setWeightKey(EdFileInfo.Fields.sort); + + List> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> { + treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); + treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); + treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); + treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); + })); + + String jsonStr = JSONUtil.toJsonStr(trees); + ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); + projectVOS.add(projectVO); + } + return ElectromagneticResultUtil.success(projectVOS); + } catch (Exception e) { + String info = "查询项目失败"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 子集拖拽重排序 + * + * @param folderResortDTOList + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult folderResort(List folderResortDTOList) { + try { + for (FolderResortDTO folderResortDTO : folderResortDTOList) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, folderResortDTO.getSort()) + .eq(EdFileInfo::getId, folderResortDTO.getId()); + this.update(updateWrapper); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "子集重排序异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 项目发布 + * + * @param prjId + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult publish(String prjId) { + try { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .likeRight(EdFileInfo::getFilePath, prjId); + this.update(updateWrapper); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "项目发布异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 删除子集 + * + * @param fileId + * @return + */ + @Override + public ElectromagneticResult deleteFolder(String fileId) { + + try { + // TODO是否需要判断文件夹是否为空 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); + ids.add(fileId); + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .set(EdFileInfo::getSort, -1) + .in(EdFileInfo::getId, ids); + this.baseMapper.update(null, updateWrapper); + + String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT); + String parentId = tmpFileIds[0]; + for (String tmpPathId : tmpFileIds) { + parentId = this.baseMapper.maxPrjId(); + if (fileId.equals(tmpPathId)) { + break; + } + } + // 同层级的resort + List edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getSort) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getParentId, parentId) + .orderByAsc(EdFileInfo::getSort)); + for (int i = 1; i <= edFileInfos1.size(); i++) { + String id = edFileInfos1.get(i).getId(); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, i) + .eq(EdFileInfo::getId, id)); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除子集异常"; + log.error(info, e); + throw new BizException(-1, info); + } + } + + /** + * 层级沿用 + * + * @param sourceId + * @param targetId + * @return + */ + @Override + public ElectromagneticResult follow(String sourceId, String targetId) { + + try { + String currentUserId = UserThreadLocal.getUserId(); + // 把source工程的层级结构copy到目标工程 + // 查找source的全部目录 + List sourceEdFileInfos = this.baseMapper.selectAllAdminFolder(sourceId); + List targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 + for (int i = 1; i <= prjFolderMaxLength; ++i) { + // 先查找source第i层下有那些子集 + final int count = i; + EdFileInfo targetParentFile = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) + .collect(Collectors.toList()).get(0); + List sourceTmpEdFiles = sourceEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + List targetTmpEdFiles = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + Map sourceFileNameMap= sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); + List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); + for (EdFileInfo edFileInfo : sourceTmpEdFiles) { + String sourceFileName = edFileInfo.getFileName(); + if (!targetFileNames.contains(sourceFileName)) { + EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); + EdFileInfo targetFile = new EdFileInfo(); + int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId()); + String newFolderId = String.valueOf(maxFolderId + 1); + Date now = new Date(); + targetFile.setId(newFolderId) + .setFileId(newFolderId) + .setFileName(sourceFile.getFileName()) + .setFileVersion(100) + .setParentId(targetParentFile.getParentId()) + .setFileTime(EleCommonUtil.getNowTimeStr()) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) + .setSort(targetTmpEdFiles.size() + 1) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + this.save(targetFile); + String targetSysFilePath = getSysFilePathByDbPath(targetFile.getFilePath()) + File.separator + sourceFileName; + fileSystemService.createDirectory(targetSysFilePath); + targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + } + } + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = StrFormatter.format("层级沿用失败"); + log.error(info, e); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + /** + * 修改子集名称 + * + * @param id + * @param newFolderName + * @return + */ + @Override + public ElectromagneticResult modifyFolder(String id, String newFolderName) { + try { + EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getId, id)); + String sysFilePath = getSysFilePathByDbPath(fileInfo.getFilePath()); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getFileName, newFolderName)); + fileSystemService.renameFile(sysFilePath, newFolderName); + return ElectromagneticResultUtil.success(true); + } catch(Exception e) { + String info = StrFormatter.format("修改子集名称为{}失败", newFolderName); + log.error(info, e); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + private String getSysFilePathByDbPath(String dbPath) { + ArrayList paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); + return getPath(paths); + } + + private String getPath(List ids) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName) + .in(EdFileInfo::getId, ids); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + Map map = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName)); + StringBuilder path = new StringBuilder(); + for (String id : ids) { + String tmp = map.get(id) + File.separator; + path.append(tmp); + } + return path.toString(); + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java new file mode 100644 index 0000000..2bc3ec6 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java @@ -0,0 +1,45 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +import cn.hutool.core.io.FileUtil; +import com.electromagnetic.industry.software.manage.service.FileSystemService; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.InputStream; + +@Service +public class FileSystemServiceImpl implements FileSystemService { + + @Override + public void createDirectory(String path) { + FileUtil.mkdir(path); + } + + @Override + public void copyFile(String source, String destination) { + } + + @Override + public void moveFile(String source, String destination) { + } + + @Override + public void save(InputStream inputStream, String destination) { + } + + @Override + public void renameFile(String sourcePath, String newName) { + FileUtil.rename(new File(sourcePath), newName, true); + } + + @Override + public void renameFile(String sourcePath, String oldName, String newName) { + File sourceFile = new File(sourcePath + File.separator + oldName); + FileUtil.rename(sourceFile, newName, true); + } + + @Override + public boolean checkFolderExist(String newPath) { + return FileUtil.exist(newPath); + } +} 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 a62b5a6..08a163c 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 @@ -83,7 +83,7 @@ public class UserServiceImpl implements UserService { public Boolean checkUserValid(User user) { if (user == null || user.getIsPublished() == PublishEnum.UNPUBLISHED.getCode() - || user.getEffectFlag() == EffectFlagEnum.EFFECT_FLAG_0.getCode() + || user.getEffectFlag() == EffectFlagEnum.NOT_EFFECTIVE.code ) { return false; } else if (user.getInternshipEndDate() != null && user.getInternshipEndDate().before(now())) { diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index d2a6a4f..e2a1d29 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -1,14 +1,7 @@ #required spring.application.name=electromagnetic-data -# security -run.mode=NORMAL -com.alipay.env=shared -#log logging.file.path=./logs loggerPath=electromagnetic-data -logging.level.com.aliyun.fsi.insurance=${LOG_LEVEL:INFO} -#日志配置 -logging.config=classpath:${LOG_CONFIG:log4j2-spring.xml} 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 @@ -21,21 +14,9 @@ mybatis-plus.mapper-locations=classpath:sqlmapper/*.xml mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl pagehelper.helperDialect=mysql pagehelper.reasonable=false -server.port=8888 -#windows文件存储目录 -data.windows.path=E:/comacFileStorage/ -#文件缓存路径 -data.file.cache.dir=/szsd/cache/ -#文件存储路径 -data.file.storage.dir=/szsd/fileStorage/ -#上传文件时文件的缓存文件夹名称 -data.upload.cache.dir=upload -#导出数据时文件的缓存文件夹名称 -data.export.cache.dir=export -#导入数据时文件的缓存文件夹名称 -data.import.cache.dir=import -file.encode.passwd=adknfhkj87654knd -#数据类型中的文件类型为file -data.type.file=file -#数据类型中的文件夹类型为folder -data.type.folder=folder +server.port=12395 +#windows文件存储目录,用于测试 +data.windows.path=E:/tmp/eleData/ +data.linux.path=/szsd/data/eleData +prj.folder.max.length=6 + diff --git a/electrmangnetic/src/main/resources/log4j.properties b/electrmangnetic/src/main/resources/log4j.properties deleted file mode 100644 index f15f1e7..0000000 --- a/electrmangnetic/src/main/resources/log4j.properties +++ /dev/null @@ -1,5 +0,0 @@ -log4j.rootLogger=DEBUG, stdout -# Console output... -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n \ No newline at end of file diff --git a/electrmangnetic/src/main/resources/log4j2-spring-prod.xml b/electrmangnetic/src/main/resources/log4j2-spring-prod.xml deleted file mode 100644 index ca47405..0000000 --- a/electrmangnetic/src/main/resources/log4j2-spring-prod.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/electrmangnetic/src/main/resources/log4j2-spring.xml b/electrmangnetic/src/main/resources/log4j2-spring.xml deleted file mode 100644 index 698bf69..0000000 --- a/electrmangnetic/src/main/resources/log4j2-spring.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml new file mode 100644 index 0000000..14bb52f --- /dev/null +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/electromagnetic-common/pom.xml b/electromagnetic-common/pom.xml index 58d52ab..68972c7 100644 --- a/electromagnetic-common/pom.xml +++ b/electromagnetic-common/pom.xml @@ -39,6 +39,16 @@ hutool-all 5.8.22 + + ch.qos.logback + logback-classic + 1.2.3 + + + ch.qos.logback + logback-core + 1.2.3 + \ 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 2c560ae..13abaed 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 @@ -4,4 +4,6 @@ public interface ElectromagneticConstants { String EXPORT_FILE_SUFFIX = ".colib"; + String MYSQL_FILE_PATH_SPLIT = "_"; + } 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 33a1285..f59a3f4 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 @@ -10,18 +10,16 @@ import lombok.Getter; * @version $Id: EffectFlagEnum.java, v 0.1 2024-08-01 18:18 */ @AllArgsConstructor -@Getter public enum EffectFlagEnum { /** * 有效 */ - EFFECT_FLAG_1(1, "有效"), + EFFECT(1, "有效"), /** * 无效 */ - EFFECT_FLAG_0(0, "无效"), - ; - private Integer code; - private String desc; + NOT_EFFECTIVE(0, "无效"); + public Integer code; + public 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 new file mode 100644 index 0000000..b5c6c49 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java @@ -0,0 +1,15 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataSaveStatusEnum { + + UPLOADING(0, "上传中"), + SUCCESS(1, "上传成功"), + FAIL(2, "上传失败"); + + public int code; + public 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 new file mode 100644 index 0000000..ac43024 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java @@ -0,0 +1,15 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataStatusEnum { + + NOT_PUBLISHED(0, "未发布"), + PUBLISHED(1, "已发布"), + OCCUPY(2, "占用"); + + public int code; + public 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 new file mode 100644 index 0000000..b65c0e9 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java @@ -0,0 +1,13 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataTypeEnum { + + FILE(0, "文件夹"), + FOLDER(1, "普通文件"); + + public int code; + public String desc; +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java new file mode 100644 index 0000000..ef5f2a6 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.common.exception; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BizException extends RuntimeException { + + private int code; + private String msg; + +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java index 6795ccb..bfd381c 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java @@ -1,5 +1,7 @@ package com.electromagnetic.industry.software.common.util; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.regex.Pattern; public final class EleCommonUtil { @@ -7,6 +9,8 @@ public final class EleCommonUtil { // 正则表达式模式,匹配中文字符、下划线、连字符、加号、数字和英文字符 private static final String PATTERN = "^[\\u4e00-\\u9fa5a-zA-Z0-9._\\-+]+$"; + private static final String TIME_FORMAT1 = "yyMMddHHmmssSSS"; + // 编译正则表达式 private static final Pattern pattern = Pattern.compile(PATTERN); @@ -37,4 +41,13 @@ public final class EleCommonUtil { return pattern.matcher(fileFullName).matches(); } + public static String getNowTimeStr() { + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 创建日期时间格式化器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(TIME_FORMAT1); + // 格式化当前时间 + return now.format(formatter); + } + } 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 new file mode 100644 index 0000000..4d476f3 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java @@ -0,0 +1,32 @@ +package com.electromagnetic.industry.software.common.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EleLog { + + private Logger logger; + + public EleLog(Class clazz) { + this.logger = LoggerFactory.getLogger(clazz); + } + + public void info(String msg) { + logger.info(msg); + } + + public void debug(String msg) { + logger.debug(msg); + } + + public void warn(String msg) { + logger.warn(msg); + } + public void error(String msg) { + logger.error(msg); + } + + public void error(String msg, Throwable e) { + logger.error(msg, e); + } +}