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/AiProductQuestionService.java                       |    2 +
 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java              |   17 ++++++++
 src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java |    6 +++
 src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html                |   41 ++++++++++++++++++++
 4 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java b/src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java
index 497dc54..a5b4c6a 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java
@@ -72,6 +72,12 @@
         return aiProductQuestionService.update(dto);
     }
 
+    @PostMapping(value = "stateUpdate/{type}/{ids}")
+    @ControllerEndpoint(operation = "更新", exceptionMessage = "更新失败")
+    public FebsResponse stateUpdate(@PathVariable("ids") String ids, @PathVariable("type") Integer type) {
+        return aiProductQuestionService.stateUpdate(ids, type);
+    }
+
     @GetMapping("delete/{id}")
     @ControllerEndpoint(operation = "删除", exceptionMessage = "操作失败")
     public FebsResponse delete(
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
index 23e0259..9b74e0f 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
@@ -33,6 +33,8 @@
 
     FebsResponse update(AiProductQuestion dto);
 
+    FebsResponse stateUpdate(String ids, Integer type);
+
     FebsResponse delete(String id);
 
     List<AiProductQuestion> questionTree(String companyId);
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 2e1550e..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,9 +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;
@@ -155,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)){
diff --git a/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html b/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
index 20c91ec..4ae131f 100644
--- a/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
+++ b/src/main/resources/templates/febs/views/modules/ai/productQuestion/list.html
@@ -52,7 +52,9 @@
 <script type="text/html" id="productQuestionToolbar">
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:add" lay-event="productQuestionAdd">手动新增</button>
-        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionAiAdd">AI新增</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:add" lay-event="productQuestionAdd">手动新增</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionStateOpen">状态启用</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain" shiro:hasPermission="productQuestionList:aiAdd" lay-event="productQuestionStateClose">状态禁用</button>
     </div>
 </script>
 
@@ -205,8 +207,45 @@
                     }
                 });
             }
+            if (layEvent === 'productQuestionStateOpen') {
+                var checkData = table.checkStatus('productQuestionTable').data;
+                if (checkData.length <= 0) {
+                    febs.alert.warn('请选择');
+                    return;
+                }
+                febs.modal.confirm('状态', '启用?', function () {
+                    var ids = [];
+                    layui.each(checkData, function (key, item) {
+                        ids.push(item.id)
+                    });
+                    productQuestionStateUpdate(ids.join(','), 1);
+                });
+            }
+            if (layEvent === 'productQuestionStateClose') {
+
+                var checkData = table.checkStatus('productQuestionTable').data;
+                if (checkData.length <= 0) {
+                    febs.alert.warn('请选择');
+                    return;
+                }
+                febs.modal.confirm('状态', '禁用?', function () {
+                    var ids = [];
+                    layui.each(checkData, function (key, item) {
+                        ids.push(item.id)
+                    });
+                    productQuestionStateUpdate(ids.join(','), 0);
+                });
+            }
         });
 
+
+
+        function productQuestionStateUpdate(ids, type) {
+            febs.post(ctx + 'admin/productQuestion/stateUpdate/' + type + "/"+ ids, null, function () {
+                febs.alert.success('重置成功');
+            });
+        }
+
         function initProductQuestionTable() {
             tableIns = febs.table.init({
                 elem: $view.find('table'),

--
Gitblit v1.9.1