feature: 添加开启知识库角色,用户可见个人知识库及角色分配知识库

This commit is contained in:
violateer
2025-08-15 20:41:59 +08:00
committed by Administrator
parent ebc13c06af
commit 0cdba56a07
4 changed files with 15 additions and 16 deletions

View File

@@ -162,7 +162,7 @@ tenant:
- sys_user_role - sys_user_role
knowledge-role: knowledge-role:
enable: false enable: true
# MyBatisPlus配置 # MyBatisPlus配置
# https://baomidou.com/config/ # https://baomidou.com/config/

View File

@@ -31,7 +31,7 @@ public interface IKnowledgeInfoService {
/** /**
* 查询知识库列表 * 查询知识库列表
*/ */
TableDataInfo<KnowledgeInfoVo> queryPageListByRole(PageQuery pageQuery); TableDataInfo<KnowledgeInfoVo> queryPageListByRole(KnowledgeInfoBo bo, PageQuery pageQuery);
/** /**
* 查询知识库列表 * 查询知识库列表

View File

@@ -7,7 +7,6 @@ import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.ruoyi.chat.config.KnowledgeRoleConfig; import org.ruoyi.chat.config.KnowledgeRoleConfig;
import org.ruoyi.common.core.domain.R; import org.ruoyi.common.core.domain.R;
import org.ruoyi.common.core.domain.model.LoginUser;
import org.ruoyi.common.core.validate.AddGroup; import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.excel.utils.ExcelUtil; import org.ruoyi.common.excel.utils.ExcelUtil;
import org.ruoyi.common.log.annotation.Log; import org.ruoyi.common.log.annotation.Log;
@@ -27,14 +26,7 @@ import org.ruoyi.service.IKnowledgeAttachService;
import org.ruoyi.service.IKnowledgeFragmentService; import org.ruoyi.service.IKnowledgeFragmentService;
import org.ruoyi.service.IKnowledgeInfoService; import org.ruoyi.service.IKnowledgeInfoService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -90,8 +82,8 @@ public class KnowledgeController extends BaseController {
bo.setUid(LoginHelper.getUserId()); bo.setUid(LoginHelper.getUserId());
return knowledgeInfoService.queryPageList(bo, pageQuery); return knowledgeInfoService.queryPageList(bo, pageQuery);
} else { } else {
// TODO 自己创建的知识库+角色分配的知识库 bo.setUid(LoginHelper.getUserId());
return knowledgeInfoService.queryPageListByRole(pageQuery); return knowledgeInfoService.queryPageListByRole(bo, pageQuery);
} }
} }

View File

@@ -89,7 +89,7 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
* 根据知识库角色查询知识库列表 * 根据知识库角色查询知识库列表
*/ */
@Override @Override
public TableDataInfo<KnowledgeInfoVo> queryPageListByRole(PageQuery pageQuery) { public TableDataInfo<KnowledgeInfoVo> queryPageListByRole(KnowledgeInfoBo bo, PageQuery pageQuery) {
// 查询用户关联角色 // 查询用户关联角色
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
if (StringUtils.isEmpty(loginUser.getKroleGroupIds()) || StringUtils.isEmpty(loginUser.getKroleGroupType())) { if (StringUtils.isEmpty(loginUser.getKroleGroupIds()) || StringUtils.isEmpty(loginUser.getKroleGroupType())) {
@@ -122,8 +122,15 @@ public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
return new TableDataInfo<>(); return new TableDataInfo<>();
} }
LambdaQueryWrapper<KnowledgeInfo> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<KnowledgeInfo> lqw = buildQueryWrapper(bo);
lqw.in(KnowledgeInfo::getId, knowledgeRoleRelations.stream().map(KnowledgeRoleRelation::getKnowledgeId).filter(Objects::nonNull).collect(Collectors.toList())); // 在查询用户创建的知识库条件下,拼接角色分配知识库
lqw.or(q -> q.in(
KnowledgeInfo::getId,
knowledgeRoleRelations.stream()
.map(KnowledgeRoleRelation::getKnowledgeId)
.filter(Objects::nonNull)
.collect(Collectors.toList())
));
Page<KnowledgeInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<KnowledgeInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }