Administrator
2026-02-12 ac9f19fc498970d7ac71c0e874c520c0e1d8ee32
feat(ai): 添加产品问答任务状态更新功能

- 在 AiProductQuestionController 中新增 jobStateUpdate 接口
- 在 AiProductQuestionService 中定义 jobStateUpdate 方法
- 在 AiProductQuestionServiceImpl 中实现任务状态更新逻辑
- 在前端页面中添加停止按钮并实现状态更新交互
- 集成 Layui 表格工具栏事件处理和确认弹窗功能
- 添加批量选择和 ID 处理逻辑以支持多任务状态更新
4 files modified
55 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/ai/productQuestion/jobList.html 33 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java
@@ -112,6 +112,12 @@
        return aiProductQuestionService.stateUpdate(ids, type);
    }
    @PostMapping(value = "jobStateUpdate/{ids}")
    @ControllerEndpoint(operation = "更新", exceptionMessage = "操作失败")
    public FebsResponse jobStateUpdate(@PathVariable("ids") String ids) {
        return aiProductQuestionService.jobStateUpdate(ids);
    }
    @PostMapping(value = "productQuestionDelete/{ids}")
    @ControllerEndpoint(operation = "删除", exceptionMessage = "操作失败")
    public FebsResponse productQuestionDelete(@PathVariable("ids") String ids) {
src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
@@ -41,6 +41,8 @@
    FebsResponse stateUpdate(String ids, Integer type);
    FebsResponse jobStateUpdate(String ids);
    FebsResponse delete(String id);
    FebsResponse productQuestionDelete(String ids);
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
@@ -222,6 +222,20 @@
    }
    @Override
    public FebsResponse jobStateUpdate(String ids) {
        if (StrUtil.isEmpty(ids)) {
            throw new FebsException("参数错误");
        }
        List<String> idList = StrUtil.split(ids, ',');
        aiProductQuestionJobMapper.update(null,
                Wrappers.lambdaUpdate(AiProductQuestionJob.class)
                        .set(AiProductQuestionJob::getState, 2)
                        .set(AiProductQuestionJob::getUpdatedTime, new Date())
                        .in(AiProductQuestionJob::getId, idList));
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public FebsResponse delete(String id) {
        AiProductQuestion entity = this.getById(id);
        if(ObjectUtil.isNotNull( entity)){
src/main/resources/templates/febs/views/modules/ai/productQuestion/jobList.html
@@ -49,6 +49,12 @@
    </div>
</div>
<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:aiAdd" lay-event="productQuestionJobStateClose">停止</button>
    </div>
</script>
<script type="text/html" id="difficultyFormat">
    {{# if(d.difficulty == 1) { }}
    <span>简单</span>
@@ -127,6 +133,33 @@
        // 表格初始化
        initproductQuestionJobTable();
        // 初始化表格操作栏各个按钮功能
        table.on('toolbar(productQuestionJobToolbar)', function (obj) {
            let data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'productQuestionJobStateClose') {
                var checkData = table.checkStatus('productQuestionJobTable').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)
                    });
                    productQuestionJobStateClose(ids.join(','));
                });
            }
        });
        function productQuestionJobStateClose(ids) {
            febs.post(ctx + 'admin/productQuestion/jobStateUpdate/' + ids, null, function () {
                febs.alert.success('操作成功');
            });
        }
        function initproductQuestionJobTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),