From b8712ea489de9903a2ebf81a447a789f9394ff40 Mon Sep 17 00:00:00 2001 From: wanghanlin <1533525126@qq.com> Date: Fri, 26 Jun 2026 14:47:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B1=86=E5=8C=85=E5=A4=9A=E6=A8=A1=E6=80=81?= =?UTF-8?q?=E5=90=91=E9=87=8F=E6=A8=A1=E5=9E=8B=E8=83=BD=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AiModelConfigService.java | 33 +++++++++++++++++++ src/main/resources/application.yml | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/wok/supportbot/service/AiModelConfigService.java b/src/main/java/com/wok/supportbot/service/AiModelConfigService.java index 55a99fa..87b4467 100644 --- a/src/main/java/com/wok/supportbot/service/AiModelConfigService.java +++ b/src/main/java/com/wok/supportbot/service/AiModelConfigService.java @@ -148,6 +148,8 @@ public class AiModelConfigService { deactivateByAppType(config.getAppType()); } aiModelConfigMapper.insert(config); + // JSONB 字段 MyBatis Plus typeHandler 可能不触发,用 JdbcTemplate 显式写入保证可靠 + persistExtraConfig(config.getId(), config.getExtraConfig()); log.info("新建 AI 模型配置: name={}, appType={}, modelName={}", config.getName(), config.getAppType(), config.getModelName()); return config; @@ -184,6 +186,8 @@ public class AiModelConfigService { // 设置 ID 确保更新正确 config.setId(id); aiModelConfigMapper.updateById(config); + // JSONB 字段 MyBatis Plus typeHandler 可能不触发,用 JdbcTemplate 显式写入保证可靠 + persistExtraConfig(id, config.getExtraConfig()); log.info("更新 AI 模型配置: id={}", id); return aiModelConfigMapper.selectById(id); } @@ -265,4 +269,33 @@ public class AiModelConfigService { } return apiKey.substring(0, 4) + "****" + apiKey.substring(apiKey.length() - 4); } + + /** + * 显式持久化 extraConfig JSONB 字段 + * MyBatis Plus 的 insert/updateById 对带 typeHandler 的 JSONB 字段可能不触发写入, + * 使用 JdbcTemplate 显式更新保证数据可靠落库。 + * + * @param id 配置ID + * @param extraConfig 扩展配置 Map + */ + private void persistExtraConfig(Long id, Map extraConfig) { + if (id == null) { + return; + } + try { + String json; + if (extraConfig == null || extraConfig.isEmpty()) { + json = "{}"; + } else { + com.fasterxml.jackson.databind.ObjectMapper om = new com.fasterxml.jackson.databind.ObjectMapper(); + json = om.writeValueAsString(extraConfig); + } + jdbcTemplate.update( + "UPDATE ai_model_config SET extra_config = ?::jsonb WHERE id = ?", + json, id); + log.debug("持久化 extraConfig: id={}, extraConfig={}", id, json); + } catch (Exception e) { + log.warn("持久化 extraConfig 失败: id={}, error={}", id, e.getMessage()); + } + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8b2d206..77d74aa 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -98,6 +98,6 @@ logging: level: root: INFO com.wok.supportbot: DEBUG - org.springframework.ai: DEBUG + org.springframework.ai: INFO pattern: console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"