From e8c7a97949f5a582ca5e3e5d787bf64f5fa01767 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 20 Mar 2026 10:41:49 +0800
Subject: [PATCH] 9智能体、智能体分类权限到单个用户

---
 src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentLink.java               |   20 ++++++++++
 src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentCategoryLinkMapper.java |    7 +++
 src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentLinkMapper.java         |    7 +++
 src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentCategoryLink.java       |   13 ++++++
 src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java       |   51 +++++++++++++++++++++++--
 5 files changed, 94 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentCategoryLink.java b/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentCategoryLink.java
new file mode 100644
index 0000000..2eb9714
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentCategoryLink.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.yinhe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("ai_agent_category_link")
+public class YHAiAgentCategoryLink extends YhBaseEntity {
+    private String id;
+    private String companyId;
+    private String agentCategoryId;
+    private String memberUuid;
+}
diff --git a/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentLink.java b/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentLink.java
new file mode 100644
index 0000000..bbe7f05
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/yinhe/entity/YHAiAgentLink.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.yinhe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("ai_agent_link")
+public class YHAiAgentLink extends YhBaseEntity {
+
+
+    /** 主键 */
+    private String id;
+
+    /** 公司ID */
+    private String companyId;
+
+    private String agentId;
+
+    private String memberUuid;
+}
diff --git a/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentCategoryLinkMapper.java b/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentCategoryLinkMapper.java
new file mode 100644
index 0000000..7f3a9e4
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentCategoryLinkMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.yinhe.mapper;
+
+import cc.mrbird.febs.yinhe.entity.YHAiAgentCategoryLink;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface YHAiAgentCategoryLinkMapper extends BaseMapper<YHAiAgentCategoryLink> {
+}
diff --git a/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentLinkMapper.java b/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentLinkMapper.java
new file mode 100644
index 0000000..e94337d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/yinhe/mapper/YHAiAgentLinkMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.yinhe.mapper;
+
+import cc.mrbird.febs.yinhe.entity.YHAiAgentLink;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface YHAiAgentLinkMapper extends BaseMapper<YHAiAgentLink> {
+}
diff --git a/src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java b/src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java
index 8e21916..ec880ab 100644
--- a/src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java
@@ -48,6 +48,8 @@
     private final YHAiAgentStartQuestionMapper yhAiAgentStartQuestionMapper;
     private final YHAiAgentKnowledgeMapper yhAiAgentKnowledgeMapper;
     private final YHAiKnowledgeMapper yhAiKnowledgeMapper;
+    private final YHAiAgentLinkMapper yhAiAgentLinkMapper;
+    private final YHAiAgentCategoryLinkMapper yhAiAgentCategoryLinkMapper;
 
     private final YhSysAgentCategoryMapper yhSysAgentCategoryMapper;
     private final YHSysAgentStartQuestionMapper yhSysAgentStartQuestionMapper;
@@ -94,9 +96,25 @@
         YhAiMember yhAiMember = yhAiMemberMapper.selectOne(Wrappers.lambdaQuery(YhAiMember.class).eq(YhAiMember::getMemberUuid, memberUuid));
         String companyId = yhAiMember.getCompanyId();
 
-        List<YHCategoryVo> yhCategoryVos = new ArrayList<>();
+
+        List<YHCategoryVo> vos = new ArrayList<>();
+
+        List<YHAiAgentCategoryLink> yhAiAgentCategoryLinks = yhAiAgentCategoryLinkMapper.selectList(
+                Wrappers.lambdaQuery(YHAiAgentCategoryLink.class)
+                        .eq(YHAiAgentCategoryLink::getCompanyId, companyId)
+                        .eq(YHAiAgentCategoryLink::getMemberUuid, memberUuid)
+        );
+        if (CollUtil.isEmpty(yhAiAgentCategoryLinks)){
+            return new FebsResponse().success().data(vos);
+        }
+
+        List<String> yhAiAgentCategoryLinksIds = new ArrayList<>();
+        for (YHAiAgentCategoryLink yhAiAgentCategoryLink : yhAiAgentCategoryLinks) {
+            yhAiAgentCategoryLinksIds.add(yhAiAgentCategoryLink.getAgentCategoryId());
+        }
 
         LambdaQueryWrapper<YHAiAgentCategory> query = Wrappers.lambdaQuery(YHAiAgentCategory.class);
+        query.in(YHAiAgentCategory::getId,yhAiAgentCategoryLinksIds);
         query.eq(YHAiAgentCategory::getCompanyId,companyId);
         query.eq(YHAiAgentCategory::getState,1);
         if (ObjectUtil.isNotEmpty(dto.getHotState())){
@@ -110,11 +128,11 @@
                 YHCategoryVo yhCategoryVo = new YHCategoryVo();
                 yhCategoryVo.setName(yhAiAgentCategory.getName());
                 yhCategoryVo.setId(yhAiAgentCategory.getId());
-                yhCategoryVos.add(yhCategoryVo);
+                vos.add(yhCategoryVo);
             }
         }
 
-        return new FebsResponse().success().data(yhCategoryVos);
+        return new FebsResponse().success().data(vos);
     }
 
     @Override
@@ -124,7 +142,22 @@
         String companyId = yhAiMember.getCompanyId();
 
         ArrayList<YHAgentVo> yhAgentVos = new ArrayList<>();
+
+        List<YHAiAgentLink> yhAiAgentLinks = yhAiAgentLinkMapper.selectList(
+                Wrappers.lambdaQuery(YHAiAgentLink.class)
+                        .eq(YHAiAgentLink::getCompanyId, companyId)
+                        .eq(YHAiAgentLink::getMemberUuid, memberUuid)
+        );
+        if (CollUtil.isEmpty(yhAiAgentLinks)){
+            return new FebsResponse().success().data(yhAgentVos);
+        }
+        List<String> yhAiAgentLinksIds = new ArrayList<>();
+        for (YHAiAgentLink yhAiAgentLink : yhAiAgentLinks) {
+            yhAiAgentLinksIds.add(yhAiAgentLink.getAgentId());
+        }
+
         LambdaQueryWrapper<YHAiAgent> query = Wrappers.lambdaQuery(YHAiAgent.class);
+        query.in(YHAiAgent::getId,yhAiAgentLinksIds);
         query.eq(YHAiAgent::getCompanyId,companyId);
         query.eq(YHAiAgent::getState,1);
         if (ObjectUtil.isNotEmpty(dto.getAgentCategoryId())){
@@ -151,9 +184,19 @@
     public FebsResponse agentInfo(YHAgentInitDto dto) {
 
         String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
-        YHAgentInitVo yhAgentInitVo = new YHAgentInitVo();
 
         String id = dto.getId();
+
+        YHAgentInitVo yhAgentInitVo = new YHAgentInitVo();
+
+        List<YHAiAgentLink> yhAiAgentLinks = yhAiAgentLinkMapper.selectList(
+                Wrappers.lambdaQuery(YHAiAgentLink.class)
+                        .eq(YHAiAgentLink::getAgentId, id)
+                        .eq(YHAiAgentLink::getMemberUuid, memberUuid)
+        );
+        if (CollUtil.isEmpty(yhAiAgentLinks)){
+            throw new FebsException("无权限");
+        }
         YHAiAgent yhAiAgent = yhAiAgentMapper.selectById(id);
         if (ObjectUtil.isNotEmpty(yhAiAgent)){
             yhAgentInitVo.setId(yhAiAgent.getId());

--
Gitblit v1.9.1