From d41b554acfb33c4e3ada201e15a71d33d5bdf7ff Mon Sep 17 00:00:00 2001 From: maguodong Date: Sat, 28 Mar 2026 15:34:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(database):=20=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=A8=A1=E5=9E=8B=E6=9F=A5=E8=AF=A2=E5=90=8E?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=88=B3=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 BaseModel 中实现 AfterFind 钩子函数,用于查询后更新 UpdateTime 字段 - 集成 time 包支持时间操作 - 配置 GORM NowFunc 使用本地时间,确保时间戳准确性 - 统一数据库操作的时间处理逻辑,提高数据一致性 --- database/database.go | 4 ++++ database/model/base.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/database/database.go b/database/database.go index 3a0e89c..fa4134a 100644 --- a/database/database.go +++ b/database/database.go @@ -3,6 +3,7 @@ package database import ( "database/sql" "fmt" + "time" "git.magicany.cc/black1552/gin-base/config" "git.magicany.cc/black1552/gin-base/log" @@ -40,6 +41,9 @@ func init() { // 构建 GORM 配置 gormConfig := &gorm.Config{ SkipDefaultTransaction: true, + NowFunc: func() time.Time { + return time.Now().Local() + }, // 命名策略:保持与模型一致,避免字段/表名转换问题 NamingStrategy: schema.NamingStrategy{ SingularTable: true, // 表名禁用复数形式(例如 User 对应 user 表,而非 users) diff --git a/database/model/base.go b/database/model/base.go index 5df2ccd..75e27ff 100644 --- a/database/model/base.go +++ b/database/model/base.go @@ -26,3 +26,8 @@ func (b *BaseModel) BeforeUpdate(tx *gorm.DB) error { b.UpdateTime = time.Now() return nil } + +func (b *BaseModel) AfterFind(tx *gorm.DB) error { + b.UpdateTime = time.Now() + return nil +}