根因: 运行容器默认 UTC 且后端未设时区, time.Now()/gorm 时间戳/DSN loc=Local/手动 Format 全部按 UTC, 导致展示为"美国时间"、月度与每日 边界错位。修复: - main.go 在 database.Init 前固定 time.Local=Asia/Shanghai (DSN loc=Local 随之一致, 一处生效覆盖全部业务点) - pending_school.go 今日判断改北京时间当日0点(原 Truncate 按UTC午夜偏移8h) - Dockerfile/build.yml/compose 加 TZ=Asia/Shanghai 双保险 配套: 存量 datetime 列已 +8h 迁移(备份 /root/cpdaily-backup-pre-tz-*.sql)
This commit is contained in:
@@ -196,7 +196,9 @@ func ReportFailedLogin(c *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
// 1. 检查该校是否有今天登录过的账号(说明学校可正常使用,忽略本次报告)
|
||||
today := time.Now().Truncate(24 * time.Hour)
|
||||
// 注意:Truncate(24h) 按 UTC 午夜截断会偏移 8 小时,必须按北京时间当日 0 点
|
||||
now := time.Now()
|
||||
today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
var todayLoginCount int64
|
||||
database.DB.Model(&model.SysUser{}).
|
||||
Where("school_id = ? AND last_login_at >= ?", req.SchoolID, today).
|
||||
|
||||
Reference in New Issue
Block a user