package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiProductPoint; import cc.mrbird.febs.ai.entity.AiProductPointLink; import cc.mrbird.febs.ai.mapper.AiProductPointMapper; import cc.mrbird.febs.ai.req.productPoint.ApiProductPointInfoDto; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointInfoVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.ai.service.AiProductPointLinkService; import cc.mrbird.febs.ai.service.AiProductPointService; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * AI产品知识点 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiProductPointServiceImpl extends ServiceImpl implements AiProductPointService { private final AiProductPointMapper aiProductPointMapper; private final AiProductPointLinkService aiProductPointLinkService; @Override public AiProductPoint getById(String id) { return aiProductPointMapper.selectById( id); } @Override public List getListByPointIds(Set collect) { return aiProductPointMapper.selectBatchIds( collect); } @Override public List listByProductId(String productId) { List vos = new ArrayList<>(); LambdaQueryWrapper pointLinkQUery = Wrappers.lambdaQuery(AiProductPointLink.class); pointLinkQUery.eq(AiProductPointLink::getProductId, productId); List linkList = aiProductPointLinkService.getListByProductId(pointLinkQUery); if (CollUtil.isEmpty(linkList)){ return vos; } Set collect = linkList.stream().map(AiProductPointLink::getProductPointId).collect(Collectors.toSet()); List list = this.getListByPointIds(collect); if (CollUtil.isEmpty(list)){ return vos; } for (AiProductPoint point : list){ ApiProductPointVo vo = new ApiProductPointVo(); vo.setId(point.getId()); vo.setTitle(point.getTitle()); vos.add(vo); } return vos; } @Override public FebsResponse productPointInfo(ApiProductPointInfoDto dto) { ApiProductPointInfoVo apiProductPointInfoVo = new ApiProductPointInfoVo(); String id = dto.getId(); AiProductPoint entity = this.getById(id); if (ObjectUtil.isNotNull( entity)){ apiProductPointInfoVo.setIsNormal(entity.getIsNormal()); apiProductPointInfoVo.setFinderUserName(entity.getFinderUserName()); apiProductPointInfoVo.setFeedId(entity.getFeedId()); apiProductPointInfoVo.setTitle(entity.getTitle()); apiProductPointInfoVo.setDescription(entity.getDescription()); } return new FebsResponse().success().data(apiProductPointInfoVo); } }