From 18fdf89338e84e1cab48c2795631777e22b05b81 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 03 Sep 2025 14:37:54 +0800 Subject: [PATCH] feat(ai): 添加灵通角色设定PROMPT功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java | 168 +++++++++++++++++--------------------------------------- 1 files changed, 51 insertions(+), 117 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java index 22bc4e1..47ccb3b 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerItemServiceImpl.java @@ -1,16 +1,31 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberAnswerItem; +import cc.mrbird.febs.ai.entity.AiProductQuestionItem; import cc.mrbird.febs.ai.mapper.AiMemberAnswerItemMapper; +import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberAnswerPreviousDto; +import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberAnswerWrongPageDto; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerPreviousItemVo; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerPreviousVo; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerWrongVo; +import cc.mrbird.febs.ai.res.product.ApiProductVo; import cc.mrbird.febs.ai.service.AiMemberAnswerItemService; +import cc.mrbird.febs.ai.service.AiProductQuestionItemService; +import cc.mrbird.febs.common.entity.FebsResponse; +import cn.hutool.core.collection.CollUtil; 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 org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * AI用户答题记录子表 Service实现类 @@ -24,131 +39,50 @@ public class AiMemberAnswerItemServiceImpl extends ServiceImpl<AiMemberAnswerItemMapper, AiMemberAnswerItem> implements AiMemberAnswerItemService { private final AiMemberAnswerItemMapper aiMemberAnswerItemMapper; + private final AiProductQuestionItemService aiProductQuestionItemService; @Override - public AiMemberAnswerItem getById(String id) { - return this.getById(id); + public Page<ApiMemberAnswerPreviousVo> getPageListByQuery(Page<ApiMemberAnswerPreviousVo> page, ApiMemberAnswerPreviousDto dto) { + return aiMemberAnswerItemMapper.selectPageListByQuery(page, dto); } @Override - public List<AiMemberAnswerItem> getByAnswerId(String answerId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getAnswerId, answerId); - queryWrapper.orderByAsc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } + public FebsResponse wrongPage(ApiMemberAnswerWrongPageDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiMemberAnswerWrongVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiMemberAnswerWrongVo> pageListByQuery = aiMemberAnswerItemMapper.getWrongPageListByQuery(page, dto); + List<ApiMemberAnswerWrongVo> records = pageListByQuery.getRecords(); + if (CollUtil.isNotEmpty(records)){ + Set<String> collect = records.stream().map(ApiMemberAnswerWrongVo::getProductQuestionId).collect(Collectors.toSet()); - @Override - public List<AiMemberAnswerItem> getByMemberId(String memberId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getMemberId, memberId); - queryWrapper.orderByDesc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } + LambdaQueryWrapper<AiProductQuestionItem> questionItemQuery = Wrappers.lambdaQuery(AiProductQuestionItem.class); + questionItemQuery.in(AiProductQuestionItem::getProductQuestionId,collect); + List<AiProductQuestionItem> listByQuery = aiProductQuestionItemService.getListByQuery(questionItemQuery); - @Override - public List<AiMemberAnswerItem> getByProductId(String productId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getProductId, productId); - queryWrapper.orderByDesc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } + if (CollUtil.isNotEmpty(listByQuery)){ + //利用stream流,操作集合listByQuery,返回一个map对象,key为productQuestionId,value为List<AiProductQuestionItem>对象 + Map<String, List<AiProductQuestionItem>> questionItemMap = + listByQuery.stream().collect(Collectors.groupingBy(AiProductQuestionItem::getProductQuestionId)); - @Override - public List<AiMemberAnswerItem> getByProductQuestionParentId(String productQuestionParentId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getProductQuestionParentId, productQuestionParentId); - queryWrapper.orderByAsc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } + for (ApiMemberAnswerWrongVo record : records){ + String productQuestionId = record.getProductQuestionId(); - @Override - public List<AiMemberAnswerItem> getByProductQuestionId(String productQuestionId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getProductQuestionId, productQuestionId); - queryWrapper.orderByAsc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } - - @Override - public List<AiMemberAnswerItem> getByMemberAnswerState(Integer memberAnswerState) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getMemberAnswerState, memberAnswerState); - queryWrapper.orderByDesc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } - - @Override - public List<AiMemberAnswerItem> getByIsCollected(Integer isCollected) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getIsCollected, isCollected); - queryWrapper.orderByDesc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } - - @Override - public List<AiMemberAnswerItem> getByCompanyIdAndMemberId(String companyId, String memberId) { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getCompanyId, companyId); - queryWrapper.eq(AiMemberAnswerItem::getMemberId, memberId); - queryWrapper.orderByDesc(AiMemberAnswerItem::getCreatedTime); - return this.list(queryWrapper); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean saveAnswerItem(AiMemberAnswerItem aiMemberAnswerItem) { - try { - return this.save(aiMemberAnswerItem); - } catch (Exception e) { - log.error("保存答题记录项失败: ", e); - return false; + List<AiProductQuestionItem> questionItemList = questionItemMap.get(productQuestionId); + List<ApiMemberAnswerPreviousItemVo> answerList = new ArrayList<>(); + if (CollUtil.isNotEmpty(questionItemList)){ + for (AiProductQuestionItem questionItem : questionItemList){ + ApiMemberAnswerPreviousItemVo itemVo = new ApiMemberAnswerPreviousItemVo(); + itemVo.setId(questionItem.getId()); + itemVo.setAnswer(questionItem.getAnswer()); + itemVo.setAnswerAnalysis(questionItem.getAnswerAnalysis()); + itemVo.setCorrectAnswer(questionItem.getCorrectAnswer()); + answerList.add(itemVo); + } + } + record.setAnswerList(answerList); + } + } } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean saveBatchAnswerItems(List<AiMemberAnswerItem> answerItems) { - try { - return this.saveBatch(answerItems); - } catch (Exception e) { - log.error("批量保存答题记录项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean updateAnswerItem(AiMemberAnswerItem aiMemberAnswerItem) { - try { - return this.updateById(aiMemberAnswerItem); - } catch (Exception e) { - log.error("更新答题记录项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean deleteById(String id) { - try { - return this.removeById(id); - } catch (Exception e) { - log.error("删除答题记录项失败: ", e); - return false; - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean deleteByAnswerId(String answerId) { - try { - LambdaQueryWrapper<AiMemberAnswerItem> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AiMemberAnswerItem::getAnswerId, answerId); - return this.remove(queryWrapper); - } catch (Exception e) { - log.error("根据答题记录ID删除答题记录项失败: ", e); - return false; - } + return new FebsResponse().success().data(pageListByQuery); } } -- Gitblit v1.9.1