From 82624affb0251b75b62b35567d3eb260c06efe78 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 23 三月 2026 12:48:07 +0800
Subject: [PATCH] #ai 代码优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiPromptServiceImpl.java |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiPromptServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiPromptServiceImpl.java
index ba072da..02b3398 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiPromptServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiPromptServiceImpl.java
@@ -7,6 +7,8 @@
 import com.vincent.rsf.server.ai.dto.AiPromptPreviewRequest;
 import com.vincent.rsf.server.ai.entity.AiPrompt;
 import com.vincent.rsf.server.ai.mapper.AiPromptMapper;
+import com.vincent.rsf.server.ai.store.AiConfigCacheStore;
+import com.vincent.rsf.server.ai.store.AiConversationCacheStore;
 import com.vincent.rsf.server.ai.service.AiPromptService;
 import com.vincent.rsf.server.system.enums.StatusType;
 import lombok.RequiredArgsConstructor;
@@ -18,6 +20,8 @@
 public class AiPromptServiceImpl extends ServiceImpl<AiPromptMapper, AiPrompt> implements AiPromptService {
 
     private final AiPromptRenderSupport aiPromptRenderSupport;
+    private final AiConfigCacheStore aiConfigCacheStore;
+    private final AiConversationCacheStore aiConversationCacheStore;
 
     @Override
     public AiPrompt getActivePrompt(String code, Long tenantId) {
@@ -71,6 +75,47 @@
         );
     }
 
+    @Override
+    public boolean save(AiPrompt entity) {
+        boolean saved = super.save(entity);
+        if (saved && entity != null && entity.getTenantId() != null) {
+            aiConfigCacheStore.evictTenantConfigCaches(entity.getTenantId());
+            aiConversationCacheStore.evictTenantRuntimeCaches(entity.getTenantId());
+        }
+        return saved;
+    }
+
+    @Override
+    public boolean updateById(AiPrompt entity) {
+        boolean updated = super.updateById(entity);
+        if (updated && entity != null && entity.getTenantId() != null) {
+            aiConfigCacheStore.evictTenantConfigCaches(entity.getTenantId());
+            aiConversationCacheStore.evictTenantRuntimeCaches(entity.getTenantId());
+        }
+        return updated;
+    }
+
+    @Override
+    public boolean removeByIds(java.util.Collection<?> list) {
+        java.util.List<java.io.Serializable> ids = list == null ? java.util.List.of() : list.stream()
+                .filter(java.util.Objects::nonNull)
+                .map(item -> (java.io.Serializable) item)
+                .toList();
+        java.util.List<AiPrompt> records = this.listByIds(ids);
+        boolean removed = super.removeByIds(list);
+        if (removed) {
+            records.stream()
+                    .map(AiPrompt::getTenantId)
+                    .filter(java.util.Objects::nonNull)
+                    .distinct()
+                    .forEach(tenantId -> {
+                        aiConfigCacheStore.evictTenantConfigCaches(tenantId);
+                        aiConversationCacheStore.evictTenantRuntimeCaches(tenantId);
+                    });
+        }
+        return removed;
+    }
+
     private void ensureRequiredFields(AiPrompt aiPrompt) {
         if (!StringUtils.hasText(aiPrompt.getName())) {
             throw new CoolException("Prompt 鍚嶇О涓嶈兘涓虹┖");

--
Gitblit v1.9.1