package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberRoleProduct; import cc.mrbird.febs.ai.entity.AiProduct; 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.req.productPoint.ApiProductPointPageDto; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointInfoVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointListVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.ai.service.*; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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; import org.springframework.stereotype.Service; 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; private final AiProductCategoryService aiProductCategoryService; @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 productPointList(ApiProductPointPageDto dto) { if(StrUtil.isEmpty(dto.getCategoryId())){ String categoryId = aiProductCategoryService.getDefaultProductCategoryId(); dto.setCategoryId(categoryId); } // 创建分页对象,传入当前页和每页大小 Page page = new Page<>(dto.getPageNow(), dto.getPageSize()); Page pageListByQuery = aiProductPointMapper.selectPageListByQuery(page, dto); return new FebsResponse().success().data(pageListByQuery); } @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.setFeedImg(entity.getFeedImg()); apiProductPointInfoVo.setTitle(entity.getTitle()); apiProductPointInfoVo.setDescription(entity.getDescription()); } return new FebsResponse().success().data(apiProductPointInfoVo); } }