From a34b9a6418a8874dc0851cb4e19d189339dd5133 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 04 Aug 2025 15:23:35 +0800 Subject: [PATCH] feat(ai): 添加 AI 用户答题功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java index 4ece58c..ede9b9c 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java @@ -1,9 +1,22 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberAnswer; +import cc.mrbird.febs.ai.entity.AiMemberAnswerItem; +import cc.mrbird.febs.ai.entity.AiProduct; +import cc.mrbird.febs.ai.entity.AiProductQuestion; import cc.mrbird.febs.ai.mapper.AiMemberAnswerMapper; +import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberAnswerDto; +import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberAnswerVo; +import cc.mrbird.febs.ai.service.AiMemberAnswerItemService; import cc.mrbird.febs.ai.service.AiMemberAnswerService; +import cc.mrbird.febs.ai.service.AiProductQuestionService; +import cc.mrbird.febs.ai.service.AiProductService; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.utils.LoginUserUtil; +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; @@ -24,6 +37,43 @@ public class AiMemberAnswerServiceImpl extends ServiceImpl<AiMemberAnswerMapper, AiMemberAnswer> implements AiMemberAnswerService { private final AiMemberAnswerMapper aiMemberAnswerMapper; + private final AiMemberAnswerItemService aiMemberAnswerItemService; + private final AiProductService aiProductService; + private final AiProductQuestionService aiProductQuestionService; + @Override + public FebsResponse startAnswer(ApiMemberAnswerDto dto) { + String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); + + String productId = dto.getId(); + AiProduct aiProduct = aiProductService.getById(productId); + if(ObjectUtil.isNull(aiProduct)){ + throw new RuntimeException("产品不存在"); + } + //验证产品分类下是否有题目 + String productCategoryId = aiProduct.getProductCategoryId(); + LambdaQueryWrapper<AiProductQuestion> questionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class); + questionLambdaQueryWrapper.eq(AiProductQuestion::getProductCategoryId,productCategoryId); + questionLambdaQueryWrapper.eq(AiProductQuestion::getState,1); + questionLambdaQueryWrapper.last("limit 1"); + List<AiProductQuestion> aiProductQuestions = aiProductQuestionService.getListByQuery(questionLambdaQueryWrapper); + if(CollUtil.isEmpty(aiProductQuestions)){ + // todo 没有题目采用AI生成题目 + throw new RuntimeException("产品没有题目"); + } + ApiMemberAnswerVo apiMemberAnswerVo = new ApiMemberAnswerVo(); + AiMemberAnswer aiMemberAnswer = new AiMemberAnswer(); + aiMemberAnswer.setProductId(aiProduct.getId()); + aiMemberAnswer.setMemberId(memberUuid); + aiMemberAnswer.setQuestionCnt(aiProduct.getQuestionCount()); + aiMemberAnswer.setScore(0); + aiMemberAnswer.setCorrectCnt(0); + aiMemberAnswer.setState(0); + aiMemberAnswerMapper.insert(aiMemberAnswer); + +// apiMemberAnswerVo.setTitle(); + + return new FebsResponse().success().data(apiMemberAnswerVo); + } } -- Gitblit v1.9.1