From a99344813f450cb6c810f19fa6cf4d3027c9b187 Mon Sep 17 00:00:00 2001 From: violateer <1828257089@qq.com> Date: Sun, 20 Jul 2025 10:05:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/model/LoginUser.java | 10 + .../java/org/ruoyi/domain/KnowledgeRole.java | 62 +++ .../org/ruoyi/domain/KnowledgeRoleGroup.java | 49 ++ .../ruoyi/domain/KnowledgeRoleRelation.java | 54 +++ .../org/ruoyi/domain/bo/KnowledgeRoleBo.java | 54 +++ .../ruoyi/domain/bo/KnowledgeRoleGroupBo.java | 42 ++ .../domain/bo/KnowledgeRoleRelationBo.java | 49 ++ .../ruoyi/domain/vo/KnowledgeRoleGroupVo.java | 71 +++ .../domain/vo/KnowledgeRoleRelationVo.java | 52 ++ .../org/ruoyi/domain/vo/KnowledgeRoleVo.java | 89 ++++ .../mapper/KnowledgeRoleGroupMapper.java | 15 + .../org/ruoyi/mapper/KnowledgeRoleMapper.java | 15 + .../mapper/KnowledgeRoleRelationMapper.java | 38 ++ .../ruoyi/service/IKnowledgeInfoService.java | 5 + .../service/IKnowledgeRoleGroupService.java | 48 ++ .../IKnowledgeRoleRelationService.java | 48 ++ .../ruoyi/service/IKnowledgeRoleService.java | 48 ++ .../impl/KnowledgeRoleGroupServiceImpl.java | 109 +++++ .../KnowledgeRoleRelationServiceImpl.java | 133 ++++++ .../impl/KnowledgeRoleServiceImpl.java | 213 +++++++++ .../java/org/ruoyi/system/domain/SysUser.java | 28 +- .../org/ruoyi/system/domain/bo/SysUserBo.java | 22 +- .../org/ruoyi/system/domain/vo/SysUserVo.java | 18 +- .../main/resources/mapper/SysUserMapper.xml | 95 +++- .../knowledge/KnowledgeController.java | 220 +++++---- .../knowledge/KnowledgeRoleController.java | 99 ++++ .../KnowledgeRoleGroupController.java | 99 ++++ .../knowledge/KnowledgeInfoServiceImpl.java | 449 ++++++++++-------- .../ruoyi/system/service/SysLoginService.java | 4 +- script/sql/update/knowledge-role.sql | 83 ++++ 30 files changed, 1985 insertions(+), 336 deletions(-) create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRole.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleGroup.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleRelation.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleBo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleGroupBo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleRelationBo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleGroupVo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleRelationVo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleVo.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleGroupMapper.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleMapper.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleRelationMapper.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleGroupService.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleRelationService.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleService.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleGroupServiceImpl.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleRelationServiceImpl.java create mode 100644 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/knowledge/KnowledgeRoleController.java create mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/knowledge/KnowledgeRoleGroupController.java create mode 100644 script/sql/update/knowledge-role.sql diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/domain/model/LoginUser.java index 58462035..d6d429ee 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/domain/model/LoginUser.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/domain/model/LoginUser.java @@ -117,6 +117,16 @@ public class LoginUser implements Serializable { */ private Long roleId; + /** + * 关联角色类型 + */ + private String kroleGroupType; + + /** + * 关联角色id + */ + private String kroleGroupIds; + /** * 获取登录id */ diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRole.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRole.java new file mode 100644 index 00000000..dbb7d61c --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRole.java @@ -0,0 +1,62 @@ +package org.ruoyi.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.core.domain.BaseEntity; + +import java.io.Serial; +import java.util.List; + +/** + * 知识库角色对象 knowledge_role + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("knowledge_role") +public class KnowledgeRole extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 知识库角色id + */ + @TableId(value = "id") + private Long id; + + /** + * 知识库角色组id + */ + private Long groupId; + + /** + * 知识库角色name + */ + private String name; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + + + /** + * 知识库id列表 + */ + @TableField(exist = false) + private List knowledgeIds; + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleGroup.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleGroup.java new file mode 100644 index 00000000..02fb0241 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleGroup.java @@ -0,0 +1,49 @@ +package org.ruoyi.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.core.domain.BaseEntity; + +import java.io.Serial; + +/** + * 知识库角色组对象 knowledge_role_group + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("knowledge_role_group") +public class KnowledgeRoleGroup extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 知识库角色组id + */ + @TableId(value = "id") + private Long id; + + /** + * 知识库角色组name + */ + private String name; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleRelation.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleRelation.java new file mode 100644 index 00000000..4c044290 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeRoleRelation.java @@ -0,0 +1,54 @@ +package org.ruoyi.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.core.domain.BaseEntity; + +import java.io.Serial; + +/** + * 知识库角色与知识库关联对象 knowledge_role_relation + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("knowledge_role_relation") +public class KnowledgeRoleRelation extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 知识库角色id + */ + private Long knowledgeRoleId; + + /** + * 知识库id + */ + private Long knowledgeId; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleBo.java new file mode 100644 index 00000000..4fd752c6 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleBo.java @@ -0,0 +1,54 @@ +package org.ruoyi.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import org.ruoyi.core.domain.BaseEntity; +import org.ruoyi.domain.KnowledgeRole; + +import java.util.List; + +/** + * 知识库角色业务对象 knowledge_role + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = KnowledgeRole.class, reverseConvertGenerate = false) +public class KnowledgeRoleBo extends BaseEntity { + + /** + * 知识库角色id + */ + @NotNull(message = "知识库角色id不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 知识库角色组id + */ + @NotNull(message = "知识库角色组id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long groupId; + + /** + * 知识库角色name + */ + @NotBlank(message = "知识库角色name不能为空", groups = {AddGroup.class, EditGroup.class}) + private String name; + + /** + * 备注 + */ + private String remark; + + /** + * 知识库id列表 + */ + private List knowledgeIds; + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleGroupBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleGroupBo.java new file mode 100644 index 00000000..de7fa795 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleGroupBo.java @@ -0,0 +1,42 @@ +package org.ruoyi.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import org.ruoyi.core.domain.BaseEntity; +import org.ruoyi.domain.KnowledgeRoleGroup; + +/** + * 知识库角色组业务对象 knowledge_role_group + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = KnowledgeRoleGroup.class, reverseConvertGenerate = false) +public class KnowledgeRoleGroupBo extends BaseEntity { + + /** + * 知识库角色组id + */ + @NotNull(message = "知识库角色组id不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 知识库角色组name + */ + @NotBlank(message = "知识库角色组name不能为空", groups = {AddGroup.class, EditGroup.class}) + private String name; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleRelationBo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleRelationBo.java new file mode 100644 index 00000000..da4ff675 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeRoleRelationBo.java @@ -0,0 +1,49 @@ +package org.ruoyi.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import org.ruoyi.core.domain.BaseEntity; +import org.ruoyi.domain.KnowledgeRoleRelation; + +/** + * 知识库角色与知识库关联业务对象 knowledge_role_relation + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = KnowledgeRoleRelation.class, reverseConvertGenerate = false) +public class KnowledgeRoleRelationBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 备注 + */ + @NotBlank(message = "备注不能为空", groups = {AddGroup.class, EditGroup.class}) + private String remark; + + /** + * 知识库角色id + */ + @NotNull(message = "知识库角色id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long knowledgeRoleId; + + /** + * 知识库id + */ + @NotNull(message = "知识库id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long knowledgeId; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleGroupVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleGroupVo.java new file mode 100644 index 00000000..237b3e74 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleGroupVo.java @@ -0,0 +1,71 @@ +package org.ruoyi.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.ruoyi.domain.KnowledgeRoleGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 知识库角色组视图对象 knowledge_role_group + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = KnowledgeRoleGroup.class) +public class KnowledgeRoleGroupVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 知识库角色组id + */ + @ExcelProperty(value = "知识库角色组id") + private Long id; + + /** + * 知识库角色组name + */ + @ExcelProperty(value = "知识库角色组名称") + private String name; + + /** + * 创建者 + */ + @ExcelProperty(value = "创建者") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新者 + */ + @ExcelProperty(value = "更新时间") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleRelationVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleRelationVo.java new file mode 100644 index 00000000..b76b1e78 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleRelationVo.java @@ -0,0 +1,52 @@ +package org.ruoyi.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.ruoyi.domain.KnowledgeRoleRelation; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 知识库角色与知识库关联视图对象 knowledge_role_relation + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = KnowledgeRoleRelation.class) +public class KnowledgeRoleRelationVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 知识库角色id + */ + @ExcelProperty(value = "知识库角色id") + private Long knowledgeRoleId; + + /** + * 知识库id + */ + @ExcelProperty(value = "知识库id") + private Long knowledgeId; + + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleVo.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleVo.java new file mode 100644 index 00000000..6644d8c9 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeRoleVo.java @@ -0,0 +1,89 @@ +package org.ruoyi.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.ruoyi.domain.KnowledgeRole; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 知识库角色视图对象 knowledge_role + * + * @author ageerle + * @date 2025-07-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = KnowledgeRole.class) +public class KnowledgeRoleVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 知识库角色id + */ + @ExcelProperty(value = "知识库角色id") + private Long id; + + /** + * 知识库角色组id + */ + @ExcelProperty(value = "知识库角色组id") + private Long groupId; + + /** + * 知识库角色name + */ + @ExcelProperty(value = "知识库角色name") + private String name; + + /** + * 创建者 + */ + @ExcelProperty(value = "创建者") + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新者 + */ + @ExcelProperty(value = "更新时间") + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + + /** + * 知识库id列表 + */ + private List knowledgeIds; + + + /** + * 角色组名称 + */ + private String groupName; + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleGroupMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleGroupMapper.java new file mode 100644 index 00000000..c680d86f --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleGroupMapper.java @@ -0,0 +1,15 @@ +package org.ruoyi.mapper; + +import org.ruoyi.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.KnowledgeRoleGroup; +import org.ruoyi.domain.vo.KnowledgeRoleGroupVo; + +/** + * 知识库角色组Mapper接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface KnowledgeRoleGroupMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleMapper.java new file mode 100644 index 00000000..00f621a9 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleMapper.java @@ -0,0 +1,15 @@ +package org.ruoyi.mapper; + +import org.ruoyi.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.KnowledgeRole; +import org.ruoyi.domain.vo.KnowledgeRoleVo; + +/** + * 知识库角色Mapper接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface KnowledgeRoleMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleRelationMapper.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleRelationMapper.java new file mode 100644 index 00000000..516934f2 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeRoleRelationMapper.java @@ -0,0 +1,38 @@ +package org.ruoyi.mapper; + +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.ruoyi.core.mapper.BaseMapperPlus; +import org.ruoyi.domain.KnowledgeRoleRelation; +import org.ruoyi.domain.vo.KnowledgeRoleRelationVo; + +import java.util.List; + +/** + * 知识库角色与知识库关联Mapper接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface KnowledgeRoleRelationMapper extends BaseMapperPlus { + @Select("SELECT knowledge_id FROM knowledge_role_relation WHERE knowledge_role_id = #{knowledgeRoleId}") + List selectKnowledgeIdsByRoleId(@Param("knowledgeRoleId") Long knowledgeRoleId); + + /** + * 根据 roleId 删除所有关联 + */ + @Delete("DELETE FROM knowledge_role_relation WHERE knowledge_role_id = #{knowledgeRoleId}") + void deleteByRoleId(@Param("knowledgeRoleId") Long knowledgeRoleId); + + @Delete({ + "" + }) + void deleteByRoleIds(@Param("knowledgeRoleIds") List knowledgeRoleIds); +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java index 38c41150..3972677d 100644 --- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java @@ -28,6 +28,11 @@ public interface IKnowledgeInfoService { */ TableDataInfo queryPageList(KnowledgeInfoBo bo, PageQuery pageQuery); + /** + * 查询知识库列表 + */ + TableDataInfo queryPageListByRole(PageQuery pageQuery); + /** * 查询知识库列表 */ diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleGroupService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleGroupService.java new file mode 100644 index 00000000..bb3f8cb7 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleGroupService.java @@ -0,0 +1,48 @@ +package org.ruoyi.service; + +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.bo.KnowledgeRoleGroupBo; +import org.ruoyi.domain.vo.KnowledgeRoleGroupVo; + +import java.util.Collection; +import java.util.List; + +/** + * 知识库角色组Service接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface IKnowledgeRoleGroupService { + + /** + * 查询知识库角色组 + */ + KnowledgeRoleGroupVo queryById(Long id); + + /** + * 查询知识库角色组列表 + */ + TableDataInfo queryPageList(KnowledgeRoleGroupBo bo, PageQuery pageQuery); + + /** + * 查询知识库角色组列表 + */ + List queryList(KnowledgeRoleGroupBo bo); + + /** + * 新增知识库角色组 + */ + Boolean insertByBo(KnowledgeRoleGroupBo bo); + + /** + * 修改知识库角色组 + */ + Boolean updateByBo(KnowledgeRoleGroupBo bo); + + /** + * 校验并批量删除知识库角色组信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleRelationService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleRelationService.java new file mode 100644 index 00000000..d8ba3c1c --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleRelationService.java @@ -0,0 +1,48 @@ +package org.ruoyi.service; + +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.bo.KnowledgeRoleRelationBo; +import org.ruoyi.domain.vo.KnowledgeRoleRelationVo; + +import java.util.Collection; +import java.util.List; + +/** + * 知识库角色与知识库关联Service接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface IKnowledgeRoleRelationService { + + /** + * 查询知识库角色与知识库关联 + */ + KnowledgeRoleRelationVo queryById(Long id); + + /** + * 查询知识库角色与知识库关联列表 + */ + TableDataInfo queryPageList(KnowledgeRoleRelationBo bo, PageQuery pageQuery); + + /** + * 查询知识库角色与知识库关联列表 + */ + List queryList(KnowledgeRoleRelationBo bo); + + /** + * 新增知识库角色与知识库关联 + */ + Boolean insertByBo(KnowledgeRoleRelationBo bo); + + /** + * 修改知识库角色与知识库关联 + */ + Boolean updateByBo(KnowledgeRoleRelationBo bo); + + /** + * 校验并批量删除知识库角色与知识库关联信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleService.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleService.java new file mode 100644 index 00000000..d6011022 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeRoleService.java @@ -0,0 +1,48 @@ +package org.ruoyi.service; + +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.bo.KnowledgeRoleBo; +import org.ruoyi.domain.vo.KnowledgeRoleVo; + +import java.util.Collection; +import java.util.List; + +/** + * 知识库角色Service接口 + * + * @author ageerle + * @date 2025-07-19 + */ +public interface IKnowledgeRoleService { + + /** + * 查询知识库角色 + */ + KnowledgeRoleVo queryById(Long id); + + /** + * 查询知识库角色列表 + */ + TableDataInfo queryPageList(KnowledgeRoleBo bo, PageQuery pageQuery); + + /** + * 查询知识库角色列表 + */ + List queryList(KnowledgeRoleBo bo); + + /** + * 新增知识库角色 + */ + Boolean insertByBo(KnowledgeRoleBo bo); + + /** + * 修改知识库角色 + */ + Boolean updateByBo(KnowledgeRoleBo bo); + + /** + * 校验并批量删除知识库角色信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleGroupServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleGroupServiceImpl.java new file mode 100644 index 00000000..9cf2daa2 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleGroupServiceImpl.java @@ -0,0 +1,109 @@ +package org.ruoyi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.ruoyi.common.core.utils.MapstructUtils; +import org.ruoyi.common.core.utils.StringUtils; +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.KnowledgeRoleGroup; +import org.ruoyi.domain.bo.KnowledgeRoleGroupBo; +import org.ruoyi.domain.vo.KnowledgeRoleGroupVo; +import org.ruoyi.mapper.KnowledgeRoleGroupMapper; +import org.ruoyi.service.IKnowledgeRoleGroupService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 知识库角色组Service业务层处理 + * + * @author ageerle + * @date 2025-07-19 + */ +@RequiredArgsConstructor +@Service +public class KnowledgeRoleGroupServiceImpl implements IKnowledgeRoleGroupService { + + private final KnowledgeRoleGroupMapper baseMapper; + + /** + * 查询知识库角色组 + */ + @Override + public KnowledgeRoleGroupVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询知识库角色组列表 + */ + @Override + public TableDataInfo queryPageList(KnowledgeRoleGroupBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询知识库角色组列表 + */ + @Override + public List queryList(KnowledgeRoleGroupBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(KnowledgeRoleGroupBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getName()), KnowledgeRoleGroup::getName, bo.getName()); + return lqw; + } + + /** + * 新增知识库角色组 + */ + @Override + public Boolean insertByBo(KnowledgeRoleGroupBo bo) { + KnowledgeRoleGroup add = MapstructUtils.convert(bo, KnowledgeRoleGroup.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改知识库角色组 + */ + @Override + public Boolean updateByBo(KnowledgeRoleGroupBo bo) { + KnowledgeRoleGroup update = MapstructUtils.convert(bo, KnowledgeRoleGroup.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(KnowledgeRoleGroup entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除知识库角色组 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleRelationServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleRelationServiceImpl.java new file mode 100644 index 00000000..d010803b --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleRelationServiceImpl.java @@ -0,0 +1,133 @@ +package org.ruoyi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.ruoyi.common.core.utils.MapstructUtils; +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.KnowledgeRoleRelation; +import org.ruoyi.domain.bo.KnowledgeRoleRelationBo; +import org.ruoyi.domain.vo.KnowledgeRoleRelationVo; +import org.ruoyi.mapper.KnowledgeRoleRelationMapper; +import org.ruoyi.service.IKnowledgeRoleRelationService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 知识库角色与知识库关联Service业务层处理 + * + * @author ageerle + * @date 2025-07-19 + */ +@RequiredArgsConstructor +@Service +public class KnowledgeRoleRelationServiceImpl implements IKnowledgeRoleRelationService { + + private final KnowledgeRoleRelationMapper baseMapper; + private final KnowledgeRoleRelationMapper knowledgeRoleRelationMapper; + + /** + * 查询知识库角色与知识库关联 + */ + @Override + public KnowledgeRoleRelationVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询知识库角色与知识库关联列表 + */ + @Override + public TableDataInfo queryPageList(KnowledgeRoleRelationBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询知识库角色与知识库关联列表 + */ + @Override + public List queryList(KnowledgeRoleRelationBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(KnowledgeRoleRelationBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getKnowledgeRoleId() != null, KnowledgeRoleRelation::getKnowledgeRoleId, bo.getKnowledgeRoleId()); + lqw.eq(bo.getKnowledgeId() != null, KnowledgeRoleRelation::getKnowledgeId, bo.getKnowledgeId()); + return lqw; + } + + /** + * 新增知识库角色与知识库关联 + */ + @Override + public Boolean insertByBo(KnowledgeRoleRelationBo bo) { + KnowledgeRoleRelation add = MapstructUtils.convert(bo, KnowledgeRoleRelation.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改知识库角色与知识库关联 + */ + @Override + public Boolean updateByBo(KnowledgeRoleRelationBo bo) { + KnowledgeRoleRelation update = MapstructUtils.convert(bo, KnowledgeRoleRelation.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(KnowledgeRoleRelation entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除知识库角色与知识库关联 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + public void saveRoleKnowledgeRelations(Long knowledgeRoleId, List knowledgeIds) { + if (knowledgeRoleId == null) { + throw new IllegalArgumentException("knowledgeRoleId不能为空"); + } + + // 1. 删除旧的关联记录 + knowledgeRoleRelationMapper.deleteByRoleId(knowledgeRoleId); + + // 2. 插入新的关联记录 + if (CollectionUtils.isNotEmpty(knowledgeIds)) { + List insertList = new ArrayList<>(); + knowledgeIds.forEach(knowledgeId -> { + KnowledgeRoleRelation knowledgeRoleRelation = new KnowledgeRoleRelation(); + knowledgeRoleRelation.setKnowledgeId(knowledgeId); + knowledgeRoleRelation.setKnowledgeRoleId(knowledgeRoleId); + insertList.add(knowledgeRoleRelation); + }); + knowledgeRoleRelationMapper.insertBatch(insertList); + } + } +} diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleServiceImpl.java new file mode 100644 index 00000000..7e514e47 --- /dev/null +++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeRoleServiceImpl.java @@ -0,0 +1,213 @@ +package org.ruoyi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.ruoyi.common.core.utils.MapstructUtils; +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.core.page.TableDataInfo; +import org.ruoyi.domain.KnowledgeRole; +import org.ruoyi.domain.KnowledgeRoleGroup; +import org.ruoyi.domain.KnowledgeRoleRelation; +import org.ruoyi.domain.bo.KnowledgeRoleBo; +import org.ruoyi.domain.vo.KnowledgeRoleVo; +import org.ruoyi.mapper.KnowledgeRoleGroupMapper; +import org.ruoyi.mapper.KnowledgeRoleMapper; +import org.ruoyi.mapper.KnowledgeRoleRelationMapper; +import org.ruoyi.service.IKnowledgeRoleService; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 知识库角色Service业务层处理 + * + * @author ageerle + * @date 2025-07-19 + */ +@RequiredArgsConstructor +@Service +public class KnowledgeRoleServiceImpl implements IKnowledgeRoleService { + + private final KnowledgeRoleMapper baseMapper; + private final KnowledgeRoleGroupMapper knowledgeRoleGroupMapper; + private final KnowledgeRoleRelationMapper knowledgeRoleRelationMapper; + private final KnowledgeRoleRelationServiceImpl knowledgeRoleRelationServiceImpl; + + /** + * 查询知识库角色 + */ + @Override + public KnowledgeRoleVo queryById(Long id) { + KnowledgeRoleVo vo = baseMapper.selectVoById(id); + fillKnowledgeIds(vo); + fillKnowledgeRoleGroupName(vo); + return vo; + } + + /** + * 查询知识库角色列表 + */ + @Override + public TableDataInfo queryPageList(KnowledgeRoleBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + + fillKnowledgeIds(result.getRecords()); + fillKnowledgeRoleGroupName(result.getRecords()); + return TableDataInfo.build(result); + } + + /** + * 查询知识库角色列表 + */ + @Override + public List queryList(KnowledgeRoleBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + List knowledgeRoleVos = baseMapper.selectVoList(lqw); + fillKnowledgeIds(knowledgeRoleVos); + fillKnowledgeRoleGroupName(knowledgeRoleVos); + return knowledgeRoleVos; + } + + private LambdaQueryWrapper buildQueryWrapper(KnowledgeRoleBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getGroupId() != null, KnowledgeRole::getGroupId, bo.getGroupId()); + return lqw; + } + + /** + * 新增知识库角色 + */ + @Override + public Boolean insertByBo(KnowledgeRoleBo bo) { + KnowledgeRole add = MapstructUtils.convert(bo, KnowledgeRole.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + + // 生成relation数据 + knowledgeRoleRelationServiceImpl.saveRoleKnowledgeRelations(bo.getId(), bo.getKnowledgeIds()); + } + return flag; + } + + /** + * 修改知识库角色 + */ + @Override + public Boolean updateByBo(KnowledgeRoleBo bo) { + KnowledgeRole update = MapstructUtils.convert(bo, KnowledgeRole.class); + validEntityBeforeSave(update); + int count = baseMapper.updateById(update); + if (count > 0) { + // 生成relation数据 + knowledgeRoleRelationServiceImpl.saveRoleKnowledgeRelations(bo.getId(), bo.getKnowledgeIds()); + } + + return count > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(KnowledgeRole entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除知识库角色 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + int count = baseMapper.deleteBatchIds(ids); + if (count > 0) { + knowledgeRoleRelationMapper.deleteByRoleIds(ids.stream().toList()); + } + + return count > 0; + } + + /** + * 填充 VO 的 knowledgeIds 字段(从中间表查询) + */ + private void fillKnowledgeIds(KnowledgeRoleVo vo) { + if (vo == null) return; + List knowledgeIds = knowledgeRoleRelationMapper.selectKnowledgeIdsByRoleId(vo.getId()); + vo.setKnowledgeIds(knowledgeIds); + } + + private void fillKnowledgeIds(List list) { + if (CollectionUtils.isEmpty(list)) return; + + // 1. 提取所有 roleId + Set roleIds = list.stream() + .map(KnowledgeRoleVo::getId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + if (roleIds.isEmpty()) return; + + // 2. 一次性查询所有 roleId 对应的 knowledgeId 列表 + List relations = knowledgeRoleRelationMapper.selectList( + new LambdaQueryWrapper() + .in(KnowledgeRoleRelation::getKnowledgeRoleId, roleIds) + ); + + // 3. 转为 Map> + Map> roleIdToKnowledgeIds = relations.stream() + .collect(Collectors.groupingBy( + KnowledgeRoleRelation::getKnowledgeRoleId, + Collectors.mapping(KnowledgeRoleRelation::getKnowledgeId, Collectors.toList()) + )); + + // 4. 回填到 VO 中 + for (KnowledgeRoleVo vo : list) { + vo.setKnowledgeIds(roleIdToKnowledgeIds.getOrDefault(vo.getId(), Collections.emptyList())); + } + } + + /** + * 填充 VO 的 knowledgeRoleGroupName 字段 + */ + private void fillKnowledgeRoleGroupName(KnowledgeRoleVo vo) { + if (vo == null || vo.getGroupId() == null) return; + + KnowledgeRoleGroup group = knowledgeRoleGroupMapper.selectById(vo.getGroupId()); + if (group != null) { + vo.setGroupName(group.getName()); + } + } + + private void fillKnowledgeRoleGroupName(List list) { + if (CollectionUtils.isEmpty(list)) return; + + // 1. 提取所有 groupId(去重) + Set groupIds = list.stream() + .map(KnowledgeRoleVo::getGroupId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + if (groupIds.isEmpty()) return; + + // 2. 一次性查出所有角色组信息 + List groupList = knowledgeRoleGroupMapper.selectBatchIds(groupIds); + + // 3. 转为 Map + Map groupNameMap = groupList.stream() + .collect(Collectors.toMap(KnowledgeRoleGroup::getId, KnowledgeRoleGroup::getName)); + + // 4. 回填到每个 VO + for (KnowledgeRoleVo vo : list) { + vo.setGroupName(groupNameMap.get(vo.getGroupId())); + } + } +} diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java index f451e982..a31c42b2 100644 --- a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java +++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java @@ -76,9 +76,9 @@ public class SysUser extends TenantEntity { * 密码 */ @TableField( - insertStrategy = FieldStrategy.NOT_EMPTY, - updateStrategy = FieldStrategy.NOT_EMPTY, - whereStrategy = FieldStrategy.NOT_EMPTY + insertStrategy = FieldStrategy.NOT_EMPTY, + updateStrategy = FieldStrategy.NOT_EMPTY, + whereStrategy = FieldStrategy.NOT_EMPTY ) private String password; @@ -113,13 +113,19 @@ public class SysUser extends TenantEntity { */ private String remark; - /** 普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号或小程序 */ + /** + * 普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号或小程序 + */ private String openId; - /** 用户余额 */ + /** + * 用户余额 + */ private Double userBalance; - /** 用户等级 */ + /** + * 用户等级 + */ private String userGrade; public SysUser(Long userId) { @@ -130,4 +136,14 @@ public class SysUser extends TenantEntity { return UserConstants.SUPER_ADMIN_ID.equals(this.userId); } + /** + * 知识库角色组类型(role/roleGroup) + */ + private String kroleGroupType; + + /** + * 知识库角色组id(role/roleGroup) + */ + private String kroleGroupIds; + } diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java index f8823119..066b24cc 100644 --- a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java +++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserBo.java @@ -120,13 +120,19 @@ public class SysUserBo extends BaseEntity { */ private Long roleId; - /** 普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号或小程序 */ + /** + * 普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号或小程序 + */ private String openId; - /** 用户等级 */ + /** + * 用户等级 + */ private String userGrade; - /** 用户余额 */ + /** + * 用户余额 + */ private Double userBalance; public SysUserBo(Long userId) { @@ -137,4 +143,14 @@ public class SysUserBo extends BaseEntity { return UserConstants.SUPER_ADMIN_ID.equals(this.userId); } + /** + * 知识库角色组类型(role/roleGroup) + */ + private String kroleGroupType; + + /** + * 知识库角色组id(role/roleGroup) + */ + private String kroleGroupIds; + } diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java index fa8eec8b..61a3fe4e 100644 --- a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java +++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/vo/SysUserVo.java @@ -147,9 +147,23 @@ public class SysUserVo implements Serializable { */ private Long roleId; - /** 用户等级 */ + /** + * 用户等级 + */ private String userGrade; - /** 用户余额 */ + /** + * 用户余额 + */ private Double userBalance; + + /** + * 知识库角色组类型(role/roleGroup) + */ + private String kroleGroupType; + + /** + * 知识库角色组id(role/roleGroup) + */ + private String kroleGroupIds; } diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/resources/mapper/SysUserMapper.xml b/ruoyi-modules-api/ruoyi-system-api/src/main/resources/mapper/SysUserMapper.xml index 8d39f481..d5ce95b9 100644 --- a/ruoyi-modules-api/ruoyi-system-api/src/main/resources/mapper/SysUserMapper.xml +++ b/ruoyi-modules-api/ruoyi-system-api/src/main/resources/mapper/SysUserMapper.xml @@ -44,6 +44,8 @@ u.create_by, u.create_time, u.remark, + u.krole_group_type, + u.krole_group_ids, d.dept_id, d.parent_id, d.ancestors, @@ -58,50 +60,99 @@ r.data_scope, r.status as role_status from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_user_role sur on u.user_id = sur.user_id - left join sys_role r on r.role_id = sur.role_id + left join sys_dept d on u.dept_id = d.dept_id + left join sys_user_role sur on u.user_id = sur.user_id + left join sys_role r on r.role_id = sur.role_id update sys_user set nick_name = #{nickName}, wx_avatar = #{wxAvatar} - WHERE user_id = #{userId} + WHERE user_id = #{userId}