From 1e35772e6e401dd9a0f6fe80299c9109edbb13c7 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 02 Feb 2026 13:51:44 +0800
Subject: [PATCH] feat(ai): 添加产品问答状态批量更新功能

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 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 d125cf8..2352f24 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
@@ -9,8 +9,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;
@@ -55,7 +59,14 @@
     public IPage<AiProductQuestion> listInPage(AiProductQuestion dto, QueryRequest request) {
         Page<AiProductQuestion> page = new Page<>(request.getPageNum(), request.getPageSize());
         LambdaQueryWrapper<AiProductQuestion> query = Wrappers.lambdaQuery(AiProductQuestion.class);
+        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;
     }
@@ -99,6 +110,7 @@
         for (AiProductQuestionItem item : dto.getAiProductQuestionItems()){
             item.setId(UUID.getSimpleUUIDString());
             item.setProductQuestionId(entity.getId());
+            item.setCompanyId(dto.getCompanyId());
             item.setTitle(entity.getTitle());
             item.setCreatedTime(new Date());
             aiProductQuestionItemService.getBaseMapper().insert(item);
@@ -125,7 +137,6 @@
         if (ObjectUtil.isNotNull( entity)){
             this.update(null,
                     Wrappers.lambdaUpdate(AiProductQuestion.class)
-                            .set(AiProductQuestion::getCompanyId, dto.getCompanyId())
                             .set(AiProductQuestion::getProductCategoryId, dto.getProductCategoryId())
                             .set(AiProductQuestion::getTitle, dto.getTitle())
                             .set(AiProductQuestion::getDifficulty, dto.getDifficulty())
@@ -147,6 +158,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)){
@@ -161,9 +186,13 @@
     }
 
     @Override
-    public List<AiProductQuestion> questionTree() {
+    public List<AiProductQuestion> questionTree(String companyId) {
+        LambdaQueryWrapper<AiProductQuestion> query = Wrappers.lambdaQuery(AiProductQuestion.class);
+        if (StrUtil.isNotEmpty(companyId)){
+            query.eq(AiProductQuestion::getCompanyId, companyId);
+        }
 
-        return aiProductQuestionMapper.selectList(null);
+        return aiProductQuestionMapper.selectList(query);
     }
 
     @Override
@@ -190,6 +219,7 @@
 
             AiProductQuestion aiProductQuestion = new AiProductQuestion();
             aiProductQuestion.setId(UUID.getSimpleUUIDString());
+            aiProductQuestion.setCompanyId(dto.getCompanyId());
             aiProductQuestion.setProductCategoryId(productCategoryId);
             aiProductQuestion.setTitle(title);
             aiProductQuestion.setDifficulty(difficulty);
@@ -205,6 +235,7 @@
                 System.out.println("分析: " + answer.getStr("analysis"));
                 AiProductQuestionItem aiProductQuestionItem = new AiProductQuestionItem();
                 aiProductQuestionItem.setId(UUID.getSimpleUUIDString());
+                aiProductQuestionItem.setCompanyId(dto.getCompanyId());
                 aiProductQuestionItem.setProductQuestionId(aiProductQuestion.getId());
                 aiProductQuestionItem.setTitle(aiProductQuestion.getTitle());
                 aiProductQuestionItem.setAnswer(answer.getStr("answer"));

--
Gitblit v1.9.1