From 248f8116f4ef74f63429c54915498eba6634bb61 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 24 Mar 2026 10:46:13 +0800
Subject: [PATCH] fix(yinhe): 修复公司级别限制logo的比较逻辑

---
 src/main/java/cc/mrbird/febs/yinhe/service/impl/YhAiServiceImpl.java |  278 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 242 insertions(+), 36 deletions(-)

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 8645a08..1ded724 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
@@ -1,12 +1,12 @@
 package cc.mrbird.febs.yinhe.service.impl;
 
+import cc.mrbird.febs.ai.res.product.ApiProductVo;
 import cc.mrbird.febs.ai.strategy.LlmStrategyFactory;
 import cc.mrbird.febs.ai.strategy.enumerates.LlmStrategyEnum;
 import cc.mrbird.febs.ai.utils.UUID;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
-import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.YHLoginUserUtil;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -22,6 +22,7 @@
 import com.alibaba.dashscope.common.Role;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -39,12 +40,16 @@
 
     private final YhAiMemberMapper yhAiMemberMapper;
     private final YHAiCompanyMapper yhAiCompanyMapper;
+    private final YHAiBannerMapper yhAiBannerMapper;
+    private final YHAiLogoMapper yhAiLogoMapper;
 
     private final YHAiAgentCategoryMapper yhAiAgentCategoryMapper;
     private final YHAiAgentMapper yhAiAgentMapper;
     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;
@@ -81,21 +86,60 @@
             yhMemberVo.setCompanyId(yhAiCompany.getId());
             yhMemberVo.setCompanyName(yhAiCompany.getName());
             yhMemberVo.setPhone(yhAiMember.getPhone());
+
+            String levelCode = yhAiCompany.getLevelCode();
+            YHSysCompanyLevel yhSysCompanyLevel = yhSysCompanyLevelMapper.selectOne(
+                    Wrappers.lambdaQuery(YHSysCompanyLevel.class)
+                            .eq(YHSysCompanyLevel::getCode, levelCode)
+            );
+            yhMemberVo.setLimitLogo(yhSysCompanyLevel.getLimitLogo());
         }
         return new FebsResponse().success().data(yhMemberVo);
     }
 
+    private boolean isDefaultCompany(String companyId){
+        String companyCode = yhAiCompanyMapper.selectDictLabel("xcx_register_default","default");
+        YHAiCompany yhAiCompany = yhAiCompanyMapper.selectOne(
+                Wrappers.lambdaQuery(YHAiCompany.class)
+                        .eq(YHAiCompany::getId, companyId)
+        );
+        if (ObjectUtil.isEmpty(yhAiCompany)){
+            return false;
+        }
+        return companyCode.equals(yhAiCompany.getCode());
+    }
+
     @Override
     public FebsResponse categoryList(YHCategoryDto dto) {
-        String companyId = YHLoginUserUtil.getLoginUser().getCompanyId();
-        List<YHCategoryVo> yhCategoryVos = new ArrayList<>();
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
+        YhAiMember yhAiMember = yhAiMemberMapper.selectOne(Wrappers.lambdaQuery(YhAiMember.class).eq(YhAiMember::getMemberUuid, memberUuid));
+        String companyId = yhAiMember.getCompanyId();
 
+        boolean defaultCompany = isDefaultCompany(companyId);
+
+        List<YHCategoryVo> vos = new ArrayList<>();
         LambdaQueryWrapper<YHAiAgentCategory> query = Wrappers.lambdaQuery(YHAiAgentCategory.class);
+
+        List<String> yhAiAgentCategoryLinksIds = new ArrayList<>();
+
+        log.info("开始查询智能体分类{}",defaultCompany);
+        if (!defaultCompany){
+            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);
+            }
+            for (YHAiAgentCategoryLink yhAiAgentCategoryLink : yhAiAgentCategoryLinks) {
+                yhAiAgentCategoryLinksIds.add(yhAiAgentCategoryLink.getAgentCategoryId());
+            }
+            query.in(YHAiAgentCategory::getId,yhAiAgentCategoryLinksIds);
+        }
+
         query.eq(YHAiAgentCategory::getCompanyId,companyId);
         query.eq(YHAiAgentCategory::getState,1);
-        if (ObjectUtil.isNotEmpty(dto.getId())){
-            query.eq(YHAiAgentCategory::getId,dto.getId());
-        }
         if (ObjectUtil.isNotEmpty(dto.getHotState())){
             query.eq(YHAiAgentCategory::getHotState,dto.getHotState());
         }
@@ -107,19 +151,40 @@
                 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
     public FebsResponse agentList(YHAgentDto dto) {
-        String companyId = YHLoginUserUtil.getLoginUser().getCompanyId();
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
+        YhAiMember yhAiMember = yhAiMemberMapper.selectOne(Wrappers.lambdaQuery(YhAiMember.class).eq(YhAiMember::getMemberUuid, memberUuid));
+        String companyId = yhAiMember.getCompanyId();
 
         ArrayList<YHAgentVo> yhAgentVos = new ArrayList<>();
+
         LambdaQueryWrapper<YHAiAgent> query = Wrappers.lambdaQuery(YHAiAgent.class);
+
+        boolean defaultCompany = isDefaultCompany(companyId);
+        if (!defaultCompany){
+
+            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());
+            }
+            query.in(YHAiAgent::getId,yhAiAgentLinksIds);
+        }
         query.eq(YHAiAgent::getCompanyId,companyId);
         query.eq(YHAiAgent::getState,1);
         if (ObjectUtil.isNotEmpty(dto.getAgentCategoryId())){
@@ -145,10 +210,26 @@
     @Override
     public FebsResponse agentInfo(YHAgentInitDto dto) {
 
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
         String companyId = YHLoginUserUtil.getLoginUser().getCompanyId();
-        YHAgentInitVo yhAgentInitVo = new YHAgentInitVo();
 
         String id = dto.getId();
+
+        YHAgentInitVo yhAgentInitVo = new YHAgentInitVo();
+
+
+        boolean defaultCompany = isDefaultCompany(companyId);
+        if (!defaultCompany){
+            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());
@@ -177,9 +258,6 @@
 
         LambdaQueryWrapper<YhSysAgentCategory> query = Wrappers.lambdaQuery(YhSysAgentCategory.class);
         query.eq(YhSysAgentCategory::getState,1);
-        if (ObjectUtil.isNotEmpty(dto.getId())){
-            query.eq(YhSysAgentCategory::getId,dto.getId());
-        }
         if (ObjectUtil.isNotEmpty(dto.getHotState())){
             query.eq(YhSysAgentCategory::getHotState,dto.getHotState());
         }
@@ -199,27 +277,10 @@
 
     @Override
     public FebsResponse agentSysList(YHSysAgentDto dto) {
-        ArrayList<YHSysAgentVo> vos = new ArrayList<>();
-        LambdaQueryWrapper<YHSysAgent> query = Wrappers.lambdaQuery(YHSysAgent.class);
-        query.eq(YHSysAgent::getState,1);
-        if (ObjectUtil.isNotEmpty(dto.getAgentCategoryId())){
-            query.eq(YHSysAgent::getAgentCategoryId,dto.getAgentCategoryId());
-        }
-        query.orderByDesc(YHSysAgent::getCreateTime);
-
-        List<YHSysAgent> list = yhSysAgentMapper.selectList(query);
-        if (CollUtil.isNotEmpty(list)){
-
-            for (YHSysAgent entity : list) {
-                YHSysAgentVo vo = new YHSysAgentVo();
-                vo.setId(entity.getId());
-                vo.setName(entity.getName());
-                vo.setDescription(entity.getDescription());
-                vo.setIconImg(entity.getIconImg());
-                vos.add(vo);
-            }
-        }
-        return new FebsResponse().success().data(vos);
+        // 创建分页对象,传入当前页和每页大小
+        Page<YHSysAgentVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        Page<YHSysAgentVo> pageListByQuery = yhSysAgentMapper.getPageListByQuery(page, dto);
+        return new FebsResponse().success().data(pageListByQuery);
     }
 
     @Override
@@ -251,7 +312,7 @@
 
     @Override
     public FebsResponse logout() {
-        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
 
         String redisKey = AppContants.XCX_LOGIN_PREFIX + memberUuid;
         String existToken = redisUtils.getString(redisKey);
@@ -267,7 +328,7 @@
 
     @Override
     public FebsResponse initSend(YHSendInitDto dto) {
-        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
 
         YHSendInitVo vo = new YHSendInitVo();
 
@@ -441,4 +502,149 @@
         }
         return messages;
     }
+
+    @Override
+    public FebsResponse bannerList() {
+        List<YHBannerVo> vos = new ArrayList<>();
+        List<YHAiBanner> list = yhAiBannerMapper.selectList(
+                Wrappers.lambdaQuery(YHAiBanner.class)
+                        .eq(YHAiBanner::getState, 1)
+                        .isNull(YHAiBanner::getCompanyId)
+                        .orderByDesc(YHAiBanner::getSort)
+        );
+        if (CollUtil.isNotEmpty(list)){
+            for (YHAiBanner aiBanner : list){
+                YHBannerVo vo = new YHBannerVo();
+                vo.setName(aiBanner.getName());
+                vo.setImageUrl(aiBanner.getImageUrl());
+                vo.setSort(aiBanner.getSort());
+                vos.add(vo);
+            }
+        }
+        return new FebsResponse().success().data(vos);
+    }
+
+    @Override
+    public FebsResponse logoInfo() {
+        YHLogoVo yhLogoVo = new YHLogoVo();
+
+        List<YHAiLogo> yhAiLogos = yhAiLogoMapper.selectList(
+                Wrappers.lambdaQuery(YHAiLogo.class)
+                        .eq(YHAiLogo::getState, 1)
+                        .isNull(YHAiLogo::getCompanyId)
+        );
+        if (CollUtil.isNotEmpty(yhAiLogos)){
+            YHAiLogo yhAiLogo = yhAiLogos.get(0);
+            yhLogoVo.setName(yhAiLogo.getName());
+            yhLogoVo.setImageUrl(yhAiLogo.getImageUrl());
+            yhLogoVo.setDesription(yhAiLogo.getDesription());
+        }
+
+        return new FebsResponse().success().data(yhLogoVo);
+    }
+
+    @Override
+    public FebsResponse loginBannerList() {
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
+        YhAiMember yhAiMember = yhAiMemberMapper.selectOne(Wrappers.lambdaQuery(YhAiMember.class).eq(YhAiMember::getMemberUuid, memberUuid));
+        String companyId = yhAiMember.getCompanyId();
+
+
+
+        List<YHBannerVo> vos = new ArrayList<>();
+
+        YHAiCompany yhAiCompany = yhAiCompanyMapper.selectById(companyId);
+        String levelCode = yhAiCompany.getLevelCode();
+        if (StrUtil.isNotEmpty(levelCode)){
+            YHSysCompanyLevel sysCompanyLevel = yhSysCompanyLevelMapper.selectOne(
+                    Wrappers.lambdaQuery(YHSysCompanyLevel.class)
+                            .eq(YHSysCompanyLevel::getCode, levelCode)
+            );
+
+            Integer limitLogo = sysCompanyLevel.getLimitLogo();
+            if (1 == limitLogo){
+                List<YHAiBanner> list = yhAiBannerMapper.selectList(
+                        Wrappers.lambdaQuery(YHAiBanner.class)
+                                .eq(YHAiBanner::getState, 1)
+                                .isNull(YHAiBanner::getCompanyId)
+                                .orderByDesc(YHAiBanner::getSort)
+                );
+                if (CollUtil.isNotEmpty(list)){
+                    for (YHAiBanner aiBanner : list){
+                        YHBannerVo vo = new YHBannerVo();
+                        vo.setName(aiBanner.getName());
+                        vo.setImageUrl(aiBanner.getImageUrl());
+                        vo.setSort(aiBanner.getSort());
+                        vos.add(vo);
+                    }
+                }
+                return new FebsResponse().success().data(vos);
+            }
+        }
+        List<YHAiBanner> list = yhAiBannerMapper.selectList(
+                Wrappers.lambdaQuery(YHAiBanner.class)
+                        .eq(YHAiBanner::getState, 1)
+                        .eq(YHAiBanner::getCompanyId, companyId)
+                        .orderByAsc(YHAiBanner::getSort)
+        );
+        if (CollUtil.isNotEmpty(list)){
+            for (YHAiBanner aiBanner : list){
+                YHBannerVo vo = new YHBannerVo();
+                vo.setName(aiBanner.getName());
+                vo.setImageUrl(aiBanner.getImageUrl());
+                vo.setSort(aiBanner.getSort());
+                vos.add(vo);
+            }
+        }
+        return new FebsResponse().success().data(vos);
+    }
+
+    @Override
+    public FebsResponse loginLogoInfo() {
+        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
+        YhAiMember yhAiMember = yhAiMemberMapper.selectOne(Wrappers.lambdaQuery(YhAiMember.class).eq(YhAiMember::getMemberUuid, memberUuid));
+        String companyId = yhAiMember.getCompanyId();
+
+        YHLogoVo yhLogoVo = new YHLogoVo();
+
+        YHAiCompany yhAiCompany = yhAiCompanyMapper.selectById(companyId);
+        String levelCode = yhAiCompany.getLevelCode();
+        if (StrUtil.isNotEmpty(levelCode)){
+            YHSysCompanyLevel sysCompanyLevel = yhSysCompanyLevelMapper.selectOne(
+                    Wrappers.lambdaQuery(YHSysCompanyLevel.class)
+                            .eq(YHSysCompanyLevel::getCode, levelCode)
+            );
+
+            Integer limitLogo = sysCompanyLevel.getLimitLogo();
+            if (1 == limitLogo){
+                List<YHAiLogo> yhAiLogos = yhAiLogoMapper.selectList(
+                        Wrappers.lambdaQuery(YHAiLogo.class)
+                                .eq(YHAiLogo::getState, 1)
+                                .isNull(YHAiLogo::getCompanyId)
+                );
+                if (CollUtil.isNotEmpty(yhAiLogos)){
+                    YHAiLogo yhAiLogo = yhAiLogos.get(0);
+                    yhLogoVo.setName(yhAiLogo.getName());
+                    yhLogoVo.setImageUrl(yhAiLogo.getImageUrl());
+                    yhLogoVo.setDesription(yhAiLogo.getDesription());
+                }
+
+                return new FebsResponse().success().data(yhLogoVo);
+            }
+        }
+
+        List<YHAiLogo> yhAiLogos = yhAiLogoMapper.selectList(
+                Wrappers.lambdaQuery(YHAiLogo.class)
+                        .eq(YHAiLogo::getState, 1)
+                        .eq(YHAiLogo::getCompanyId, companyId)
+        );
+        if (CollUtil.isNotEmpty(yhAiLogos)){
+            YHAiLogo yhAiLogo = yhAiLogos.get(0);
+            yhLogoVo.setName(yhAiLogo.getName());
+            yhLogoVo.setImageUrl(yhAiLogo.getImageUrl());
+            yhLogoVo.setDesription(yhAiLogo.getDesription());
+        }
+
+        return new FebsResponse().success().data(yhLogoVo);
+    }
 }

--
Gitblit v1.9.1