From a0975d3f7bfbe66b6a9dc6967079db6b6ff5a3e3 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 02 Feb 2026 14:27:29 +0800
Subject: [PATCH] feat(ai): 添加AI产品题目生成任务功能

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
index 06a3247..7c51450 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.ai.service.impl;
 
 import cc.mrbird.febs.ai.entity.*;
+import cc.mrbird.febs.ai.mapper.AiProductQuestionJobMapper;
 import cc.mrbird.febs.ai.mapper.AiProductQuestionMapper;
 import cc.mrbird.febs.ai.req.AiProductQuestionAiDto;
 import cc.mrbird.febs.ai.service.AiProductQuestionItemService;
@@ -9,9 +10,12 @@
 import cc.mrbird.febs.ai.util.UUID;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.mall.entity.MallMember;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -43,6 +47,7 @@
 public class AiProductQuestionServiceImpl extends ServiceImpl<AiProductQuestionMapper, AiProductQuestion> implements AiProductQuestionService {
 
     private final AiProductQuestionMapper aiProductQuestionMapper;
+    private final AiProductQuestionJobMapper aiProductQuestionJobMapper;
     private final AiProductQuestionItemService aiProductQuestionItemService;
     private final AiService aiService;
 
@@ -59,8 +64,27 @@
         if (StrUtil.isNotEmpty(dto.getCompanyId())){
             query.eq(AiProductQuestion::getCompanyId, dto.getCompanyId());
         }
+        if (StrUtil.isNotEmpty(dto.getProductCategoryId())){
+            query.eq(AiProductQuestion::getProductCategoryId, dto.getProductCategoryId());
+        }
         query.ne(AiProductQuestion::getState, 2);
+        query.orderByDesc(AiProductQuestion::getCreatedTime);
         Page<AiProductQuestion> pages = aiProductQuestionMapper.selectPage(page, query);
+        return pages;
+    }
+
+    @Override
+    public IPage<AiProductQuestionJob> listJobInPage(AiProductQuestionJob dto, QueryRequest request) {
+        Page<AiProductQuestionJob> page = new Page<>(request.getPageNum(), request.getPageSize());
+        LambdaQueryWrapper<AiProductQuestionJob> query = Wrappers.lambdaQuery(AiProductQuestionJob.class);
+        if (StrUtil.isNotEmpty(dto.getCompanyId())){
+            query.eq(AiProductQuestionJob::getCompanyId, dto.getCompanyId());
+        }
+        if (StrUtil.isNotEmpty(dto.getProductCategoryId())){
+            query.eq(AiProductQuestionJob::getProductCategoryId, dto.getProductCategoryId());
+        }
+        query.orderByDesc(AiProductQuestionJob::getCreatedTime);
+        Page<AiProductQuestionJob> pages = aiProductQuestionJobMapper.selectPage(page, query);
         return pages;
     }
 
@@ -151,6 +175,20 @@
     }
 
     @Override
+    public FebsResponse stateUpdate(String ids, Integer type) {
+        if (StrUtil.isEmpty(ids)) {
+            throw new FebsException("参数错误");
+        }
+        List<String> idList = StrUtil.split(ids, ',');
+        this.update(null,
+                Wrappers.lambdaUpdate(AiProductQuestion.class)
+                        .set(AiProductQuestion::getState, type)
+                        .set(AiProductQuestion::getUpdatedTime, new Date())
+                        .in(AiProductQuestion::getId, idList));
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
     public FebsResponse delete(String id) {
         AiProductQuestion entity = this.getById(id);
         if(ObjectUtil.isNotNull( entity)){
@@ -227,6 +265,26 @@
         return new FebsResponse().success().message("操作成功");
     }
 
+    @Override
+    public FebsResponse aiAddV2(AiProductQuestionAiDto dto) {
+        String companyId = dto.getCompanyId();
+        String productCategoryId = dto.getProductCategoryId();
+        Integer questionCnt = dto.getQuestionCnt();
+        String query = dto.getQuery();
+        Integer difficulty = dto.getDifficulty();
+        Date createdTime = new Date();
+        AiProductQuestionJob aiProductQuestionJob = new AiProductQuestionJob();
+        aiProductQuestionJob.setId(UUID.getSimpleUUIDString());
+        aiProductQuestionJob.setCompanyId(companyId);
+        aiProductQuestionJob.setProductCategoryId(productCategoryId);
+        aiProductQuestionJob.setTitle(query);
+        aiProductQuestionJob.setQuestionCnt(questionCnt);
+        aiProductQuestionJob.setDifficulty(difficulty);
+        aiProductQuestionJob.setCreatedTime(createdTime);
+        aiProductQuestionJobMapper.insert(aiProductQuestionJob);
+        return new FebsResponse().success().message("操作成功");
+    }
+
     /**
      * 解析AI返回的包含问题和答案的JSON字符串
      * @param aiResponse AI返回的原始响应字符串

--
Gitblit v1.9.1