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;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
|
/**
|
* AI用户答题记录 Service实现类
|
*
|
* @author yourname
|
* @date 2025-07-29
|
*/
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
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);
|
}
|
}
|