feat(file): 添加文件管理功能和相关接口

- 新增文件上传、编辑、删除等基础功能
- 实现文件可见范围控制(公开/私有)
- 添加与我相关的文件查询功能
- 集成用户选择组件用于设置文件可见用户
- 实现文件统计展示功能
- 完善文件操作权限验证机制
- 添加文件预览和下载功能
- 优化文件列表分页和搜索功能
This commit is contained in:
2026-06-30 10:24:40 +08:00
parent d4b5bc7041
commit b93f953327
5 changed files with 878 additions and 2 deletions

View File

@@ -46,4 +46,9 @@ public interface ISysFileService {
* 校验并批量删除文件主信息信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 查询与我相关的文件(私有文件且当前用户在可见用户列表中)
*/
TableDataInfo<SysFileVo> queryPageListRelatedToMe(SysFileBo bo, PageQuery pageQuery);
}

View File

@@ -6,18 +6,22 @@ import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.helper.LoginHelper;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.system.domain.bo.SysFileBo;
import com.klp.system.domain.vo.SysFileVo;
import com.klp.system.domain.SysFile;
import com.klp.system.domain.SysFileVisibleUser;
import com.klp.system.mapper.SysFileMapper;
import com.klp.system.mapper.SysFileVisibleUserMapper;
import com.klp.system.service.ISysFileService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 文件主信息Service业务层处理
@@ -30,6 +34,7 @@ import java.util.Collection;
public class SysFileServiceImpl implements ISysFileService {
private final SysFileMapper baseMapper;
private final SysFileVisibleUserMapper visibleUserMapper;
/**
* 查询文件主信息
@@ -69,6 +74,7 @@ public class SysFileServiceImpl implements ISysFileService {
lqw.eq(StringUtils.isNotBlank(bo.getDept()), SysFile::getDept, bo.getDept());
lqw.eq(StringUtils.isNotBlank(bo.getFileType()), SysFile::getFileType, bo.getFileType());
lqw.eq(bo.getScopeType() != null, SysFile::getScopeType, bo.getScopeType());
lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), SysFile::getCreateBy, bo.getCreateBy());
return lqw;
}
@@ -96,6 +102,28 @@ public class SysFileServiceImpl implements ISysFileService {
return baseMapper.updateById(update) > 0;
}
/**
* 查询与我相关的文件(私有文件且当前用户在可见用户列表中)
*/
@Override
public TableDataInfo<SysFileVo> queryPageListRelatedToMe(SysFileBo bo, PageQuery pageQuery) {
Long currentUserId = LoginHelper.getUserId();
// 查询当前用户可见的私有文件ID列表
LambdaQueryWrapper<SysFileVisibleUser> vuLqw = Wrappers.lambdaQuery();
vuLqw.eq(SysFileVisibleUser::getUserId, currentUserId);
List<SysFileVisibleUser> visibleList = visibleUserMapper.selectList(vuLqw);
List<Long> fileIds = visibleList.stream().map(SysFileVisibleUser::getFileId).distinct().collect(Collectors.toList());
if (fileIds.isEmpty()) {
return TableDataInfo.build(new Page<>());
}
LambdaQueryWrapper<SysFile> lqw = buildQueryWrapper(bo);
lqw.in(SysFile::getFileId, fileIds);
Page<SysFileVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 保存前的数据校验
*/