Administrator
2025-08-04 b2eec14bf5a5924d17640e484810f75663c1f38b
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
@@ -3,11 +3,14 @@
import cc.mrbird.febs.ai.entity.AiMemberRole;
import cc.mrbird.febs.ai.entity.AiProductPoint;
import cc.mrbird.febs.ai.entity.AiProductQuestion;
import cc.mrbird.febs.ai.entity.AiProductQuestionItem;
import cc.mrbird.febs.ai.mapper.AiProductQuestionMapper;
import cc.mrbird.febs.ai.service.AiProductQuestionItemService;
import cc.mrbird.febs.ai.service.AiProductQuestionService;
import cc.mrbird.febs.ai.util.UUID;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
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.metadata.IPage;
@@ -34,6 +37,7 @@
public class AiProductQuestionServiceImpl extends ServiceImpl<AiProductQuestionMapper, AiProductQuestion> implements AiProductQuestionService {
    private final AiProductQuestionMapper aiProductQuestionMapper;
    private final AiProductQuestionItemService aiProductQuestionItemService;
    @Override
    public AiProductQuestion getById(String id) {
@@ -45,6 +49,7 @@
    public IPage<AiProductQuestion> listInPage(AiProductQuestion dto, QueryRequest request) {
        Page<AiProductQuestion> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<AiProductQuestion> query = Wrappers.lambdaQuery(AiProductQuestion.class);
        query.ne(AiProductQuestion::getState, 2);
        Page<AiProductQuestion> pages = aiProductQuestionMapper.selectPage(page, query);
        return pages;
    }
@@ -65,6 +70,16 @@
    @Override
    public FebsResponse add(AiProductQuestion dto) {
        List<AiProductQuestionItem> aiProductQuestionItems = dto.getAiProductQuestionItems();
        if(CollUtil.isEmpty(aiProductQuestionItems)){
            return new FebsResponse().fail().message("请添加答案选项");
        }
        //stream流操作aiProductQuestionItems,返回aiProductQuestionItems是否存在中correctAnswer为1的元素
        boolean hasCorrectAnswer = aiProductQuestionItems.stream().anyMatch(item -> item != null && item.getCorrectAnswer() != null && item.getCorrectAnswer() == 1);
        if (!hasCorrectAnswer) {
            return new FebsResponse().fail().message("请添加一项为正确的答案");
        }
        AiProductQuestion entity = new AiProductQuestion();
        entity.setId(UUID.getSimpleUUIDString());
        entity.setCompanyId(dto.getCompanyId());
@@ -73,13 +88,34 @@
        entity.setDifficulty(dto.getDifficulty());
        entity.setCreatedTime(new Date());
        this.save(entity);
        for (AiProductQuestionItem item : dto.getAiProductQuestionItems()){
            item.setId(UUID.getSimpleUUIDString());
            item.setProductQuestionId(entity.getId());
            item.setTitle(entity.getTitle());
            item.setCreatedTime(new Date());
            aiProductQuestionItemService.getBaseMapper().insert(item);
        }
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public FebsResponse update(AiProductQuestion dto) {
        String id = dto.getId();
        AiProductQuestion entity = this.getById(id);
        List<AiProductQuestionItem> aiProductQuestionItems = dto.getAiProductQuestionItems();
        if(CollUtil.isEmpty(aiProductQuestionItems)){
            return new FebsResponse().fail().message("请添加答案选项");
        }
        //stream流操作aiProductQuestionItems,返回aiProductQuestionItems是否存在中correctAnswer为1的元素
        boolean hasCorrectAnswer = aiProductQuestionItems.stream().anyMatch(item -> item != null && item.getCorrectAnswer() != null && item.getCorrectAnswer() == 1);
        if (!hasCorrectAnswer) {
            return new FebsResponse().fail().message("请添加一项为正确的答案");
        }
        if (ObjectUtil.isNotNull( entity)){
            this.update(null,
                    Wrappers.lambdaUpdate(AiProductQuestion.class)
@@ -90,6 +126,16 @@
                            .set(AiProductQuestion::getUpdatedTime, new Date())
                            .eq(AiProductQuestion::getId, id)
            );
            aiProductQuestionItemService.deleteByQuestionId(id);
            for (AiProductQuestionItem item : dto.getAiProductQuestionItems()){
                item.setId(UUID.getSimpleUUIDString());
                item.setProductQuestionId(entity.getId());
                item.setTitle(entity.getTitle());
                item.setCreatedTime(new Date());
                aiProductQuestionItemService.getBaseMapper().insert(item);
            }
        }
        return new FebsResponse().success().message("操作成功");
    }