整理代码和调通了文件更新

This commit is contained in:
chenxudong 2024-12-27 10:27:21 +08:00
parent 07e9ae9d23
commit e2ca481ee5
20 changed files with 263 additions and 197 deletions

View File

@ -4,8 +4,6 @@ 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<EdFileInfo> {

View File

@ -77,6 +77,7 @@ public interface UserMapper {
/**
* 查找用户角色名称
*
* @param userId
* @return
*/

View File

@ -20,6 +20,102 @@ import java.util.Date;
@FieldNameConstants
public class EdFileInfo extends BaseModel {
/**
* 主键ID
*/
@TableField(value = "id")
private String id;
/**
* 文件id如果是第一个版本则和id一致同一个文件不同版本file_id是一致的
*/
@TableField(value = "file_id")
private String fileId;
/**
* 父目录id
*/
@TableField(value = "parent_id")
private String parentId;
/**
* 文件类型
*/
@TableField(value = "file_type")
private String fileType;
/**
* 文件名
*/
@TableField(value = "file_name")
private String fileName;
/**
* 文件备注
*/
@TableField(value = "file_note")
private String fileNote;
/**
* 文件内容
*/
@TableField(value = "file_content")
private String fileContent;
/**
* 文件当前版本文件版本号默认从100开始
*/
@TableField(value = "file_version")
private Integer fileVersion;
/**
* 文件时间文件编号的最后15位精确到毫秒
*/
@TableField(value = "file_time")
private String fileTime;
/**
* 文件路径指到文件的父目录有各个父目录的id加下划线组成
*/
@TableField(value = "file_path")
private String filePath;
/**
* 数据类型0-文件夹 1-文件
*/
@TableField(value = "data_type")
private Integer dataType;
/**
* 数据状态0-发布 1-占用
*/
@TableField(value = "data_status")
private Integer dataStatus;
/**
* 文件的上一个版本号
*/
@TableField(value = "pre_version")
private Integer preVersion;
/**
* 是否有效 0-无效 1-有效
*/
@TableField(value = "effect_flag")
private Integer effectFlag;
/**
* 保存状态0-上传中 1-上传成功 2-上传失败
*/
@TableField(value = "save_status")
private Integer saveStatus;
/**
* 文件大小
*/
@TableField(value = "file_size")
private Long fileSize;
/**
* 文件夹顺序
*/
@TableField(value = "sort")
private Integer sort;
/**
* 文件编码
*/
@TableField(value = "file_code")
private String fileCode;
/**
* 是否是管理员定义的系统层级目录
*/
@TableField(value = "prj_dir")
private Boolean prjDir;
public void newInit() {
String userId = UserThreadLocal.getUserId();
String newFileDbId = IdWorker.getSnowFlakeIdString();
@ -34,119 +130,4 @@ public class EdFileInfo extends BaseModel{
this.setFileId(newFileDbId);
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
}
/**
* 主键ID
*/
@TableField(value = "id")
private String id;
/**
* 文件id如果是第一个版本则和id一致同一个文件不同版本file_id是一致的
*/
@TableField(value = "file_id")
private String fileId;
/**
* 父目录id
*/
@TableField(value = "parent_id")
private String parentId;
/**
* 文件类型
*/
@TableField(value = "file_type")
private String fileType;
/**
* 文件名
*/
@TableField(value = "file_name")
private String fileName;
/**
* 文件备注
*/
@TableField(value = "file_note")
private String fileNote;
/**
* 文件内容
*/
@TableField(value = "file_content")
private String fileContent;
/**
* 文件当前版本文件版本号默认从100开始
*/
@TableField(value = "file_version")
private Integer fileVersion;
/**
* 文件时间文件编号的最后15位精确到毫秒
*/
@TableField(value = "file_time")
private String fileTime;
/**
* 文件路径指到文件的父目录有各个父目录的id加下划线组成
*/
@TableField(value = "file_path")
private String filePath;
/**
* 数据类型0-文件夹 1-文件
*/
@TableField(value = "data_type")
private Integer dataType;
/**
* 数据状态0-发布 1-占用
*/
@TableField(value = "data_status")
private Integer dataStatus;
/**
* 文件的上一个版本号
*/
@TableField(value = "pre_version")
private Integer preVersion;
/**
* 是否有效 0-无效 1-有效
*/
@TableField(value = "effect_flag")
private Integer effectFlag;
/**
* 保存状态0-上传中 1-上传成功 2-上传失败
*/
@TableField(value = "save_status")
private Integer saveStatus;
/**
* 文件大小
*/
@TableField(value = "file_size")
private Long fileSize;
/**
* 文件夹顺序
*/
@TableField(value = "sort")
private Integer sort;
/**
* 文件编码
*/
@TableField(value = "file_code")
private String fileCode;
/**
* 是否是管理员定义的系统层级目录
*/
@TableField(value = "prj_dir")
private Boolean prjDir;
}

View File

@ -5,30 +5,48 @@ import lombok.Data;
@Data
public class FileInfoQueryDTO {
/** 父文件夹id */
/**
* 父文件夹id
*/
private String parentId;
/** 当前页码 */
/**
* 当前页码
*/
private Integer pageNum;
/** 每页的数量 */
/**
* 每页的数量
*/
private Integer pageSize;
/** 搜索关键词 */
/**
* 搜索关键词
*/
private String keyword;
/** 文件类型 0-文件夹 1-文件)*/
/**
* 文件类型 0-文件夹 1-文件
*/
private Integer fileType;
/** 上传时间0-升序1-降序)*/
/**
* 上传时间0-升序1-降序
*/
private Integer createdTime;
/** 版本号0-升序1-降序 */
/**
* 版本号0-升序1-降序
*/
private Integer fileVersion;
/** 文件大小0-升序1-降序) */
/**
* 文件大小0-升序1-降序
*/
private Integer fileSize;
/** 状态0-未发布 1-已发布 2-占用) */
/**
* 状态0-未发布 1-已发布 2-占用
*/
private Integer dataStatus;
}

View File

@ -15,6 +15,7 @@ public interface EdFileInfoService {
/**
* 查询文件列表
*
* @param fileInfoQueryDTO
* @return
*/
@ -22,6 +23,7 @@ public interface EdFileInfoService {
/**
* 新建文件夹
*
* @param parentId
* @param newFolderName
* @return
@ -30,6 +32,7 @@ public interface EdFileInfoService {
/**
* 项目层级结构查询
*
* @return
*/
ElectromagneticResult<?> tree();
@ -44,6 +47,7 @@ public interface EdFileInfoService {
/**
* 下载文件
*
* @param id
* @return
*/
@ -51,12 +55,14 @@ public interface EdFileInfoService {
/**
* 更新文件信息
*
* @param updateFileInfoDTO
*/
ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO);
/**
* 版本回退
*
* @param fileId
* @param targetVersion
* @return
@ -65,6 +71,7 @@ public interface EdFileInfoService {
/**
* 查看分片是否存在
*
* @param fileChunkDTO
* @return
*/
@ -72,6 +79,7 @@ public interface EdFileInfoService {
/**
* 批量导入
*
* @param fileChunkDTO
* @return
*/
@ -79,6 +87,7 @@ public interface EdFileInfoService {
/**
* 合并分片
*
* @param identifier
* @param fileName
* @param totalChunks
@ -88,6 +97,7 @@ public interface EdFileInfoService {
/**
* 导出
*
* @param dataIdArr
* @return
*/
@ -95,6 +105,7 @@ public interface EdFileInfoService {
/**
* 文件上传
*
* @param parentId
* @param file
* @param strategy
@ -104,6 +115,7 @@ public interface EdFileInfoService {
/**
* 版本查看
*
* @param fileId
* @return
*/
@ -111,6 +123,7 @@ public interface EdFileInfoService {
/**
* 移动文件
*
* @param id
* @param targetFolderId
* @return
@ -119,6 +132,7 @@ public interface EdFileInfoService {
/**
* 复制文件
*
* @param id
* @param targetFolderId
* @return

View File

@ -23,6 +23,7 @@ public interface PermissionService {
/**
* 获得当前角色权限
*
* @param roleId
* @param fileId
* @return
@ -31,6 +32,7 @@ public interface PermissionService {
/**
* 用户权限列表 转换为 哈希
*
* @param permissionCodes
* @return
*/

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.Role;
import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePageDTO;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -13,6 +12,7 @@ public interface RoleService extends IService<Role> {
/**
* 新建角色
*
* @param roleDTO
* @return
*/
@ -20,6 +20,7 @@ public interface RoleService extends IService<Role> {
/**
* 更新角色
*
* @param roleDTO
* @return
*/
@ -27,6 +28,7 @@ public interface RoleService extends IService<Role> {
/**
* 删除角色
*
* @param roleId
* @return
*/
@ -34,6 +36,7 @@ public interface RoleService extends IService<Role> {
/**
* 查看角色
*
* @param roleId
* @return
*/
@ -41,6 +44,7 @@ public interface RoleService extends IService<Role> {
/**
* 查看角色列表
*
* @param rolePageDTO
* @return
*/
@ -48,12 +52,14 @@ public interface RoleService extends IService<Role> {
/**
* 获取所有角色名
*
* @return
*/
List<String> getAllRoleNames();
/**
* 通过角色名称查看角色权限
*
* @param roleName
* @return
*/

View File

@ -85,6 +85,7 @@ public interface UserService {
/**
* 重置密码
*
* @param userId
*/
Boolean resetPassword(String userId);

View File

@ -5,7 +5,6 @@ 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;
@ -42,14 +41,9 @@ import static com.electromagnetic.industry.software.common.cons.ElectromagneticC
@Component
public class CommonService {
private final EleLog log = new EleLog(CommonService.class);
private static final Map<String, String> FILE_TYPE_ENUM = new HashMap<>();
private static final Map<String, String> ID_NAME = new ConcurrentHashMap<>();
@Value("${prj.folder.max.length}")
private int prjFolderMaxLength;
static {
FILE_TYPE_ENUM.put(EleDataTypeEnum.FOLDER.desc, "01");
FILE_TYPE_ENUM.put("py", "02");
@ -72,6 +66,9 @@ public class CommonService {
FILE_TYPE_ENUM.put("pptx", "19");
}
private final EleLog log = new EleLog(CommonService.class);
@Value("${prj.folder.max.length}")
private int prjFolderMaxLength;
@Getter
private String eleDataPath;

View File

@ -86,6 +86,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 查询文件列表
*
* @param fileInfoQueryDTO
* @return
*/
@ -123,6 +124,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 新建文件夹
*
* @param parentId
* @param newFolderName
* @return
@ -135,6 +137,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 项目层级结构查询
*
* @return
*/
@Override
@ -144,6 +147,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 删除目录
*
* @param id
* @return
*/
@ -163,6 +167,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 下载文件
*
* @param id
* @return
*/
@ -196,19 +201,32 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 更新文件信息
*
* @param updateFileInfoDTO
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO) {
try {
// 首先检查新名称是否存在
EdFileInfo fileInfo = this.baseMapper.selectById(updateFileInfoDTO.getId());
String parentId = fileInfo.getParentId();
long count = this.baseMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
.select(EdFileInfo::getFileName)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getFileName, updateFileInfoDTO.getFileName())
.eq(EdFileInfo::getFileType, fileInfo.getFileType())
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
Assert.isTrue(count == 0, "文件名已存在");
String srcFilePath = commonService.getFileSysPath(fileInfo.getFilePath());
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
.eq(EdFileInfo::getId, updateFileInfoDTO.getId())
.set(EdFileInfo::getFileName, updateFileInfoDTO.getFileName())
.set(EdFileInfo::getFileNote, updateFileInfoDTO.getFileNote()));
String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath()); // file or folder
fileSystemService.renameFile(sysFilePath, updateFileInfoDTO.getFileName());
String newName = updateFileInfoDTO.getFileName() + "." + fileInfo.getFileType() + "." + fileInfo.getFileCode();
fileSystemService.renameFile(srcFilePath, newName);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "更新文件信息失败。";
@ -246,6 +264,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 查看分片是否存在
*
* @param fileChunkDTO
* @return
*/
@ -273,6 +292,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 批量导入
*
* @param fileChunkDTO
* @return
*/
@ -303,6 +323,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* case1: 用户上传的新文件
* case2: 用户上传的带版本号的文件
* case3: 用户上传的文件在线上已经被移动到其他目录
*
* @param identifier
* @param fileName
* @param totalChunks
@ -482,6 +503,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 导出
*
* @param dataIdArr
* @return
*/
@ -551,6 +573,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 文件上传
*
* @param parentId
* @param file
* @param strategy 1-跳过冲突文件 2-做版本更新 3-重命名文件名加_1"
@ -728,6 +751,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 复制文件
*
* @param id
* @param targetFolderId
* @return

View File

@ -119,6 +119,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
/**
* 修改项目名称
*
* @param prjId
* @param newPrjName
* @return
@ -163,6 +164,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
/**
* 删除一个项目做逻辑删除
*
* @param prjId
* @return
*/
@ -198,6 +200,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
/**
* 添加子集
*
* @param parentId
* @param folderName
* @return
@ -212,6 +215,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
/**
* 查询所有项目
*
* @return
*/
@Override
@ -351,6 +355,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
/**
* 修改子集名称
*
* @param id
* @param newFolderName
* @return

View File

@ -64,6 +64,7 @@ public class PermissionServiceImpl implements PermissionService {
/**
* 根据用户获得角色
*
* @param userId
* @return
*/
@ -75,6 +76,7 @@ public class PermissionServiceImpl implements PermissionService {
/**
* 获得角色权限
*
* @param roleId
* @param fileId
* @return
@ -90,6 +92,7 @@ public class PermissionServiceImpl implements PermissionService {
/**
* 用户权限列表 转换为 哈希
*
* @param permissionCodes
* @return
*/

View File

@ -20,13 +20,19 @@ import com.electromagnetic.industry.software.manage.pojo.models.UserRole;
import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePageDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePermissionDTO;
import com.electromagnetic.industry.software.manage.service.*;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import com.electromagnetic.industry.software.manage.service.RolePermissionService;
import com.electromagnetic.industry.software.manage.service.RoleService;
import com.electromagnetic.industry.software.manage.service.UserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.PRJ_PARENT_ID;
@ -49,6 +55,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 新建角色
*
* @param roleDTO
* @return
*/
@ -80,6 +87,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 更新角色
*
* @param roleDTO
* @return
*/
@ -113,6 +121,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 删除角色
*
* @param roleId
* @return
*/
@ -135,6 +144,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 查看角色
*
* @param roleId
* @return
*/
@ -180,6 +190,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 通过角色名查看角色
*
* @param roleName
* @return
*/
@ -194,6 +205,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 查看角色列表
*
* @param rolePageDTO
* @return
*/
@ -218,6 +230,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 获取所有角色名
*
* @return
*/
@Transactional
@ -248,6 +261,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
/**
* 权限层级数据扁平化
*
* @param nodes
* @param roleId
* @return

View File

@ -5,7 +5,6 @@ import cn.hutool.core.date.SystemClock;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.ActiveEnum;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
@ -279,6 +278,7 @@ public class UserServiceImpl implements UserService {
/**
* 重置密码
*
* @param userId
*/
@Override

View File

@ -253,8 +253,10 @@
</update>
<select id="selectUserRoles" parameterType="String" resultType="String">
select r.role_name from ed_role r where r.role_id in (
select ur.role_id from ed_users u
select r.role_name
from ed_role r
where r.role_id in (select ur.role_id
from ed_users u
left join ed_user_role ur on u.user_id = ur.user_id
where u.user_id = #{userId})
</select>