mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-17 13:53:41 +00:00
Merge pull request #170 from violateer/feature_fix_k_role_20280815
feature: 添加开启知识库角色,用户可见个人知识库及角色分配知识库
This commit is contained in:
@@ -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/
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public interface IKnowledgeInfoService {
|
|||||||
/**
|
/**
|
||||||
* 查询知识库列表
|
* 查询知识库列表
|
||||||
*/
|
*/
|
||||||
TableDataInfo<KnowledgeInfoVo> queryPageListByRole(PageQuery pageQuery);
|
TableDataInfo<KnowledgeInfoVo> queryPageListByRole(KnowledgeInfoBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询知识库列表
|
* 查询知识库列表
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,63 +21,80 @@ SET FOREIGN_KEY_CHECKS = 0;
|
|||||||
-- Table structure for knowledge_role
|
-- Table structure for knowledge_role
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
DROP TABLE IF EXISTS `knowledge_role`;
|
DROP TABLE IF EXISTS `knowledge_role`;
|
||||||
CREATE TABLE `knowledge_role` (
|
CREATE TABLE `knowledge_role`
|
||||||
`id` bigint NOT NULL COMMENT '知识库角色id',
|
(
|
||||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色name',
|
`id` bigint NOT NULL COMMENT '知识库角色id',
|
||||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色name',
|
||||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
`group_id` bigint NULL DEFAULT NULL COMMENT '知识库角色组id',
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
`group_id` bigint NULL DEFAULT NULL COMMENT '知识库角色组id',
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '知识库角色表' ROW_FORMAT = DYNAMIC;
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
CHARACTER SET = utf8mb4
|
||||||
|
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色表'
|
||||||
|
ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for knowledge_role_group
|
-- Table structure for knowledge_role_group
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
DROP TABLE IF EXISTS `knowledge_role_group`;
|
DROP TABLE IF EXISTS `knowledge_role_group`;
|
||||||
CREATE TABLE `knowledge_role_group` (
|
CREATE TABLE `knowledge_role_group`
|
||||||
`id` bigint NOT NULL COMMENT '知识库角色组id',
|
(
|
||||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色组name',
|
`id` bigint NOT NULL COMMENT '知识库角色组id',
|
||||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '知识库角色组name',
|
||||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '知识库角色组表' ROW_FORMAT = DYNAMIC;
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
CHARACTER SET = utf8mb4
|
||||||
|
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色组表'
|
||||||
|
ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for knowledge_role_relation
|
-- Table structure for knowledge_role_relation
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
DROP TABLE IF EXISTS `knowledge_role_relation`;
|
DROP TABLE IF EXISTS `knowledge_role_relation`;
|
||||||
CREATE TABLE `knowledge_role_relation` (
|
CREATE TABLE `knowledge_role_relation`
|
||||||
`id` bigint NOT NULL COMMENT 'id',
|
(
|
||||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
`id` bigint NOT NULL COMMENT 'id',
|
||||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||||
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
`create_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||||
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
`update_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
`knowledge_role_id` bigint NULL DEFAULT NULL COMMENT '知识库角色id',
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
`knowledge_id` bigint NULL DEFAULT NULL COMMENT '知识库id',
|
`knowledge_role_id` bigint NULL DEFAULT NULL COMMENT '知识库角色id',
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
`knowledge_id` bigint NULL DEFAULT NULL COMMENT '知识库id',
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '知识库角色与知识库关联表' ROW_FORMAT = DYNAMIC;
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB
|
||||||
|
CHARACTER SET = utf8mb4
|
||||||
|
COLLATE = utf8mb4_general_ci COMMENT = '知识库角色与知识库关联表'
|
||||||
|
ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
|
||||||
-- 菜单
|
-- 菜单
|
||||||
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1946483381643743233, '知识库角色管理', 1775500307898949634, '12', 'knowledgeRole', 'operator/knowledgeRole/index', NULL, 1, 0, 'C', '0', '0', NULL, 'ri:user-3-fill', 103, 1, '2025-07-19 16:41:17', NULL, NULL, '知识库角色管理');
|
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`,
|
||||||
|
`is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`,
|
||||||
|
`create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES (1946483381643743233, '知识库角色管理', 1775500307898949634, '12', 'knowledgeRole',
|
||||||
|
'operator/knowledgeRole/index', NULL, 1, 0, 'C', '0', '0', NULL, 'ri:user-3-fill', 103, 1,
|
||||||
|
'2025-07-19 16:41:17', NULL, NULL, '知识库角色管理');
|
||||||
|
|
||||||
-- 用户表添加字段
|
-- 用户表添加字段
|
||||||
ALTER TABLE sys_user
|
ALTER TABLE sys_user
|
||||||
ADD COLUMN `krole_group_type` VARCHAR(50) COMMENT '关联知识库角色/角色组',
|
ADD COLUMN `krole_group_type` VARCHAR(50) COMMENT '关联知识库角色/角色组',
|
||||||
ADD COLUMN `krole_group_id` TEXT COMMENT '关联知识库角色/角色组id';
|
ADD COLUMN `krole_group_ids` TEXT COMMENT '关联知识库角色/角色组id';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user