上传相关demo

This commit is contained in:
chenxudong 2025-02-24 13:35:28 +08:00
parent 55bc397f9e
commit e47e4bd3e8
7 changed files with 61 additions and 45 deletions

View File

@ -2,7 +2,6 @@ package com.electromagnetic.industry.software.manage.config;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.SystemClock;
import cn.hutool.json.JSONUtil;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
@ -13,7 +12,6 @@ import com.electromagnetic.industry.software.common.util.TokenUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.TokenMapper;
import com.electromagnetic.industry.software.manage.mapper.UserAccessLogMapper;
import org.springframework.web.util.WebUtils;
import com.electromagnetic.industry.software.manage.pojo.models.Token;
import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog;
import io.jsonwebtoken.Claims;

View File

@ -2,7 +2,6 @@ package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
@ -36,55 +35,55 @@ public class ProjectController {
return edPrjService.delete(prjId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改工程名", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "修改工程名", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询所有工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "查询所有工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo(DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "发布工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "引用工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "引用工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询工程发布状态", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "查询工程发布状态", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.SYS_PRJ.code);

View File

@ -22,67 +22,67 @@ public class UserPrjController {
@Resource
private EdPrjService edPrjService;
@UserOperation(value = "创建工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "创建工程", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "删除工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "删除工程", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改工程名", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "修改工程名", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询所有工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "查询所有工程", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo(DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "发布工程", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "引用工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "引用工程", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询工程发布状态", modelName = UserOperationModuleEnum.PRJ_SETTING)
@UserOperation(value = "查询工程发布状态", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.USER_PRJ.code);

View File

@ -52,4 +52,7 @@ public class UserAccessLog {
// 操作对象
private String operationModule;
// 数据id
private String dataId;
}

View File

@ -18,6 +18,7 @@ import com.electromagnetic.industry.software.common.util.ElectromagneticResultUt
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.models.User;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO;
@ -57,10 +58,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> createNewPrj(String prjName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), NAME_VALID_MSG);
if (!EleCommonUtil.isFileNameValid(prjName)) {
String info = StrFormatter.format("{} {}", prjName, NAME_VALID_MSG);
String info = StrFormatter.format("{} {},项目创建失败。", prjName, NAME_VALID_MSG);
log.info(info);
return ElectromagneticResultUtil.fail("-1", info);
}
@ -68,6 +67,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
// 首先检查工程是否存在
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getEffectFlag, true)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getFileName, prjName));
@ -109,10 +109,11 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
this.save(fileInfo);
// 保存到文件系统
fileSystemService.createDirectory(commonService.getEleDataPath(dataOwnCode) + File.separator + prjName);
UserThreadLocal.setSuccessInfo(newPrjId, "创建 {} 项目成功。", prjName);
} catch (Exception e) {
String info = StrFormatter.format("工程创建失败,具体为--->{}", e.getMessage());
log.error(info, e);
return ElectromagneticResultUtil.fail("-1", info);
throw new BizException(info, e);
}
return ElectromagneticResultUtil.success(true);
}
@ -127,23 +128,23 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(newPrjName), NAME_VALID_MSG);
try {
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileName, newPrjName));
if (count > 0) {
String info = StrFormatter.format("{} 项目已经存在", newPrjName);
log.info(info);
return ElectromagneticResultUtil.fail("-1", info);
}
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getFileName)
.eq(EdFileInfo::getId, prjId));
String oldPrjName = fileInfo.getFileName();
try {
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileName, newPrjName));
Assert.isTrue(EleCommonUtil.isFileNameValid(newPrjName), StrFormatter.format("{} {}{} 修改失败。", newPrjName, NAME_VALID_MSG, oldPrjName));
if (count > 0) {
String info = StrFormatter.format("{} 项目已经存在,{} 修改失败。", newPrjName, oldPrjName);
log.info(info);
return ElectromagneticResultUtil.fail("-1", info);
}
String newPath = commonService.getEleDataPath(dataOwnCode) + File.separator + newPrjName;
if (fileSystemService.checkFolderExist(newPath)) {
String tmpPath = newPrjName + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG;
@ -155,10 +156,11 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.set(EdFileInfo::getUpdatedBy, UserThreadLocal.getUserId())
.set(EdFileInfo::getUpdatedTime, new Date()));
fileSystemService.renameFile(commonService.getEleDataPath(dataOwnCode), oldPrjName, newPrjName);
UserThreadLocal.setSuccessInfo(prjId, "修改工层名 {} 为 {} 成功。", oldPrjName, newPrjName);
} catch (Exception e) {
String info = StrFormatter.format("修改工程名异常--->{}{}", newPrjName, e.getMessage());
log.error(info, e);
throw new BizException(info);
throw new BizException(info, e);
}
return ElectromagneticResultUtil.success(true);
}
@ -180,7 +182,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT));
if (count > 0) {
String info = StrFormatter.format("禁止删除非空项目");
String info = StrFormatter.format("禁止废除非空项目,废除失败。");
log.info(info);
ElectromagneticResultUtil.fail("-1", info);
}
@ -195,11 +197,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
// 对原文件进行处理
EdFileInfo prjFile = this.getById(prjId);
fileSystemService.renameFile(commonService.getFileSysPath(prjId, dataOwnCode), prjFile + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG);
UserThreadLocal.setSuccessInfo(prjId, "废除 {} 项目成功。", prjFile.getFileName());
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "除项目失败";
String info = "除项目失败";
log.error(info, e);
throw new BizException(info);
throw new BizException(info, e);
}
}
@ -220,7 +223,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
Assert.isTrue(count == 0, "该层级目录下存在文件,不允许再定义层级目录");
Assert.isTrue(count == 0, StrFormatter.format("该层级目录下存在文件,不允许再定义层级目录。父目录id {},子集名称 {}", parentId, folderName));
int id = Integer.parseInt(this.baseMapper.maxPrjId());
String folderId = String.valueOf(id + 1);
return commonService.addFolder(parentId, folderName, true, folderId, null, dataOwnCode);
@ -240,6 +243,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
projectVOS.add(projectVO);
});
projectVOS.sort(Comparator.comparing(ProjectVO::getSort));
UserThreadLocal.setSuccessInfo("", "查询了所有工程");
return ElectromagneticResultUtil.success(projectVOS);
}
@ -263,11 +267,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.eq(EdFileInfo::getId, folderResortDTO.getId());
this.update(updateWrapper);
}
UserThreadLocal.setSuccessInfo("", "子集重排序成功");
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "子集重排序异常";
log.error(info, e);
throw new BizException(info);
throw new BizException(info, e);
}
}
@ -280,11 +285,13 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> publish(String prjId, int dataOwnCode) {
EdFileInfo fileInfo = this.baseMapper.selectById(prjId);
try {
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();
// 将已经处于删除状态设置成逻辑删除
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)
@ -311,11 +318,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.likeRight(EdFileInfo::getFilePath, prjId);
this.update(updateWrapper);
commonService.deletePrjSysDir(fileSysPaths);
UserThreadLocal.setSuccessInfo(prjId, "项目 {} 发布成功", fileInfo.getFileName());
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "项目发布异常";
String info = StrFormatter.format("项目 {} 发布异常", fileInfo.getFileName());
log.error(info, e);
throw new BizException(info);
throw new BizException(info, e);
}
}

View File

@ -50,4 +50,11 @@ public class UserLoginInfo {
private String exceptionDetail;
private String dataId;
public void setSuccessInfo(String successMsg, String dataId) {
this.successMsg = successMsg;
this.dataId = dataId;
}
}

View File

@ -50,8 +50,9 @@ public class UserThreadLocal {
return userThread.get().getReqArgs();
}
public static void setSuccessMsg(String successMsg) {
userThread.get().setSuccessMsg(successMsg);
public static void setSuccessInfo(String dataId, String strPattern, Object... argArray) {
String successMsg = String.format(strPattern, argArray);
userThread.get().setSuccessInfo(successMsg, dataId);
}
public static void setExceptionDetail(String exceptionDetail) {