Administrator
4 days ago 9f9d459dfbec9ae4a5eac64f858042909ef5201f
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;
@@ -85,17 +90,49 @@
        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 +144,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 +203,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 +251,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 +270,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 +305,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 +321,7 @@
    @Override
    public FebsResponse initSend(YHSendInitDto dto) {
        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
        String memberUuid = YHLoginUserUtil.getLoginUser().getMemberUuid();
        YHSendInitVo vo = new YHSendInitVo();
@@ -441,4 +495,92 @@
        }
        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<>();
        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();
        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);
    }
}