feat: 实现配置删除通知机制(deletedKeys)

- 服务端 fetchChangedConfigs 接口新增 deletedKeys 字段,返回已删除配置的 key 列表
- Go/Node.js/Python/Spring Boot 客户端支持解析 deletedKeys 并删除本地配置
- Spring Boot 客户端新增 removeConfigs 方法,同步更新 Spring Environment
This commit is contained in:
2026-06-17 21:07:51 +08:00
parent 82523b9236
commit 639475b730
6 changed files with 104 additions and 0 deletions
+27
View File
@@ -9,6 +9,7 @@ import (
"net"
"net/http"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
@@ -172,6 +173,32 @@ func (h *ConfigApiHandler) FetchChangedConfigs(c *gin.Context) {
result := make(map[string]string)
var configIds []int
// 查询已删除的配置(enabled=0 且 updated_at > lastTime),返回 deletedKeys
var deletedKeys []string
if !req.IgnoreGlobal && app.GroupId != nil {
var deletedGlobalConfigs []model.AppConfig
dao.Engine.Where("env = ? AND version = ? AND enabled = 0 AND group_id = ? AND (app_id is null OR app_id = 0) AND updated_at > ?",
req.Env, version, *app.GroupId, lastUpdateTime).Find(&deletedGlobalConfigs)
for _, cfg := range deletedGlobalConfigs {
kvMap := h.parseService.ParseConfigToKVMap(&cfg)
for k := range kvMap {
deletedKeys = append(deletedKeys, k)
}
}
}
var deletedAppConfigs []model.AppConfig
dao.Engine.Where("env = ? AND version = ? AND enabled = 0 AND app_id = ? AND updated_at > ?",
req.Env, version, app.Id, lastUpdateTime).Find(&deletedAppConfigs)
for _, cfg := range deletedAppConfigs {
kvMap := h.parseService.ParseConfigToKVMap(&cfg)
for k := range kvMap {
deletedKeys = append(deletedKeys, k)
}
}
if len(deletedKeys) > 0 {
result["deletedKeys"] = strings.Join(deletedKeys, ",")
}
// load global changed configs
if !req.IgnoreGlobal && app.GroupId != nil {
var globalConfigs []model.AppConfig