feat(file): 添加文件管理功能和相关接口
- 新增文件上传、编辑、删除等基础功能 - 实现文件可见范围控制(公开/私有) - 添加与我相关的文件查询功能 - 集成用户选择组件用于设置文件可见用户 - 实现文件统计展示功能 - 完善文件操作权限验证机制 - 添加文件预览和下载功能 - 优化文件列表分页和搜索功能
This commit is contained in:
@@ -46,4 +46,9 @@ public interface ISysFileService {
|
||||
* 校验并批量删除文件主信息信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 查询与我相关的文件(私有文件且当前用户在可见用户列表中)
|
||||
*/
|
||||
TableDataInfo<SysFileVo> queryPageListRelatedToMe(SysFileBo bo, PageQuery pageQuery);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user