Administrator
2025-08-04 a34b9a6418a8874dc0851cb4e19d189339dd5133
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);
    }
}