refactor(config): 统一使用应用服务器时间

- 删除 dao.Now(),不再额外执行 SELECT NOW(3)
- 配置写入、历史记录和增量游标全部使用 time.Now()
- 移除数据库时间获取失败的错误分支
This commit is contained in:
2026-09-21 21:11:34 +08:00
parent 28c727501f
commit 185e458b45
4 changed files with 9 additions and 69 deletions
+1 -7
View File
@@ -4,7 +4,6 @@ import (
"crypto/rand"
"encoding/hex"
"kenaito-conf/server/internal/dao"
"kenaito-conf/server/internal/logger"
"kenaito-conf/server/internal/middleware"
"kenaito-conf/server/internal/model"
"net/http"
@@ -259,12 +258,7 @@ func (h *AppHandler) Delete(c *gin.Context) {
return
}
now, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[AppHandler.Delete] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "删除失败"})
return
}
now := time.Now()
app.Enabled = false
app.UpdatedBy = userInfo.Name
+4 -24
View File
@@ -202,12 +202,7 @@ func (h *ConfigHandler) Add(c *gin.Context) {
}
}
now, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[ConfigHandler.Add] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "保存失败"})
return
}
now := time.Now()
config := model.AppConfig{
GroupId: req.GroupId,
@@ -278,12 +273,7 @@ func (h *ConfigHandler) Update(c *gin.Context) {
return
}
now, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[ConfigHandler.Update] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "保存失败"})
return
}
now := time.Now()
// save history
h.saveHistory(&config, userInfo.Name, "update", now)
@@ -317,12 +307,7 @@ func (h *ConfigHandler) Delete(c *gin.Context) {
return
}
now, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[ConfigHandler.Delete] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "删除失败"})
return
}
now := time.Now()
// 记录删除前的配置内容
h.saveHistory(&config, userInfo.Name, "delete", now)
@@ -433,12 +418,7 @@ func (h *ConfigHandler) Rollback(c *gin.Context) {
return
}
now, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[ConfigHandler.Rollback] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "回滚失败"})
return
}
now := time.Now()
// 记录回滚前的配置内容
h.saveHistory(&config, userInfo.Name, "rollback", now)
+4 -15
View File
@@ -96,13 +96,8 @@ func (h *ConfigApiHandler) FetchAllConfigs(c *gin.Context) {
return
}
// 游标上界取查询前的数据库时间,保证查询期间发生的更新会在下次增量中返回
upperBound, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[FetchAllConfigs] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "服务暂时不可用"})
return
}
// 游标上界取查询前的当前时间,保证查询期间发生的更新会在下次增量中返回
upperBound := time.Now()
result := make(map[string]interface{})
var configIds []int
@@ -195,14 +190,8 @@ func (h *ConfigApiHandler) FetchChangedConfigs(c *gin.Context) {
lastUpdateTime := time.UnixMilli(req.LastTime)
// 以数据库时间为本次查询的固定上界,避免查询与游标生成之间的竞态,
// 同时避免多实例应用服务器的时钟偏差。
upperBound, err := dao.Now()
if err != nil {
logger.SugaredLogger.Errorf("[FetchChangedConfigs] get database time error: %v", err)
c.JSON(http.StatusInternalServerError, model.WrapperResponse{Code: 500, Msg: "服务暂时不可用"})
return
}
// 以当前时间为本次查询的固定上界,避免查询与游标生成之间的竞态
upperBound := time.Now()
result := make(map[string]string)
var configIds []int