diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysFileController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileController.java index 0ecef7b1d..d2c287236 100644 --- a/klp-admin/src/main/java/com/klp/web/controller/system/SysFileController.java +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileController.java @@ -71,8 +71,9 @@ public class SysFileController extends BaseController { @Log(title = "文件主信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody SysFileBo bo) { - return toAjax(iSysFileService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody SysFileBo bo) { + iSysFileService.insertByBo(bo); + return R.ok(bo.getFileId()); } /** @@ -96,4 +97,12 @@ public class SysFileController extends BaseController { @PathVariable Long[] fileIds) { return toAjax(iSysFileService.deleteWithValidByIds(Arrays.asList(fileIds), true)); } + + /** + * 查询与我相关的文件(私有文件且当前用户在可见用户列表中) + */ + @GetMapping("/relatedToMe") + public TableDataInfo relatedToMe(SysFileBo bo, PageQuery pageQuery) { + return iSysFileService.queryPageListRelatedToMe(bo, pageQuery); + } } diff --git a/klp-system/src/main/java/com/klp/system/service/ISysFileService.java b/klp-system/src/main/java/com/klp/system/service/ISysFileService.java index 1b268f2d0..1cd0a32da 100644 --- a/klp-system/src/main/java/com/klp/system/service/ISysFileService.java +++ b/klp-system/src/main/java/com/klp/system/service/ISysFileService.java @@ -46,4 +46,9 @@ public interface ISysFileService { * 校验并批量删除文件主信息信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询与我相关的文件(私有文件且当前用户在可见用户列表中) + */ + TableDataInfo queryPageListRelatedToMe(SysFileBo bo, PageQuery pageQuery); } diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java index 63b01b84d..b06095d64 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java @@ -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 queryPageListRelatedToMe(SysFileBo bo, PageQuery pageQuery) { + Long currentUserId = LoginHelper.getUserId(); + // 查询当前用户可见的私有文件ID列表 + LambdaQueryWrapper vuLqw = Wrappers.lambdaQuery(); + vuLqw.eq(SysFileVisibleUser::getUserId, currentUserId); + List visibleList = visibleUserMapper.selectList(vuLqw); + List fileIds = visibleList.stream().map(SysFileVisibleUser::getFileId).distinct().collect(Collectors.toList()); + + if (fileIds.isEmpty()) { + return TableDataInfo.build(new Page<>()); + } + + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + lqw.in(SysFile::getFileId, fileIds); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + /** * 保存前的数据校验 */ diff --git a/klp-ui/src/api/system/file.js b/klp-ui/src/api/system/file.js new file mode 100644 index 000000000..c184ddda3 --- /dev/null +++ b/klp-ui/src/api/system/file.js @@ -0,0 +1,99 @@ +import request from '@/utils/request' + +// 查询文件列表 +export function listFile(query) { + return request({ + url: '/system/file/list', + method: 'get', + params: query + }) +} + +// 查询文件详细 +export function getFile(fileId) { + return request({ + url: '/system/file/' + fileId, + method: 'get' + }) +} + +// 新增文件 +export function addFile(data) { + return request({ + url: '/system/file', + method: 'post', + data: data + }) +} + +// 修改文件 +export function updateFile(data) { + return request({ + url: '/system/file', + method: 'put', + data: data + }) +} + +// 删除文件 +export function delFile(fileIds) { + return request({ + url: '/system/file/' + fileIds, + method: 'delete' + }) +} + +// 导出文件列表 +export function exportFile(query) { + return request({ + url: '/system/file/export', + method: 'post', + params: query + }) +} + +// 查询与我相关的文件 +export function listRelatedToMe(query) { + return request({ + url: '/system/file/relatedToMe', + method: 'get', + params: query + }) +} + +// ============ 文件可见用户关联 ============ + +// 查询可见用户列表 +export function listVisibleUser(query) { + return request({ + url: '/system/fileVisibleUser/list', + method: 'get', + params: query + }) +} + +// 新增可见用户关联 +export function addVisibleUser(data) { + return request({ + url: '/system/fileVisibleUser', + method: 'post', + data: data + }) +} + +// 删除可见用户关联 +export function delVisibleUser(visibleIds) { + return request({ + url: '/system/fileVisibleUser/' + visibleIds, + method: 'delete' + }) +} + +// 按文件ID查询可见用户列表 +export function listVisibleUserByFileId(fileId) { + return request({ + url: '/system/fileVisibleUser/list', + method: 'get', + params: { fileId: fileId } + }) +} diff --git a/klp-ui/src/views/system/file/index.vue b/klp-ui/src/views/system/file/index.vue new file mode 100644 index 000000000..b91fefc3a --- /dev/null +++ b/klp-ui/src/views/system/file/index.vue @@ -0,0 +1,735 @@ + + + + +