refactor(config): 统一使用应用服务器时间
- 删除 dao.Now(),不再额外执行 SELECT NOW(3) - 配置写入、历史记录和增量游标全部使用 time.Now() - 移除数据库时间获取失败的错误分支
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user