补充退款列表应当让本店铺的人看见
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s

This commit is contained in:
2026-08-18 11:44:30 +08:00
parent 586a1cccd5
commit c8052df8eb
16 changed files with 289 additions and 16 deletions

View File

@@ -3,6 +3,7 @@ package retention
import (
"context"
"database/sql"
"time"
"gorm.io/gorm"
@@ -55,17 +56,17 @@ func Load(ctx context.Context, db *gorm.DB, sources ...Source) (Info, error) {
}
func sourceBoundary(ctx context.Context, db *gorm.DB, source Source, location *time.Location) (time.Time, bool, error) {
var cleanedEnd *time.Time
var cleanedEnd sql.NullTime
if err := db.WithContext(ctx).Model(&model.LogArchiveRun{}).
Where("source = ? AND cleaned_at IS NOT NULL", source).
Select("MAX(range_end)").Scan(&cleanedEnd).Error; err != nil {
return time.Time{}, false, errors.Wrap(errors.CodeDatabaseError, err, "查询审计留存清理边界失败")
}
if cleanedEnd != nil {
return cleanedEnd.In(location), true, nil
if cleanedEnd.Valid {
return cleanedEnd.Time.In(location), true, nil
}
var earliest *time.Time
var earliest sql.NullTime
table, column := "tb_audit_event", "occurred_at"
if source == SourceIntegration {
table, column = "tb_integration_log", "created_at"
@@ -73,8 +74,8 @@ func sourceBoundary(ctx context.Context, db *gorm.DB, source Source, location *t
if err := db.WithContext(ctx).Table(table).Select("MIN(" + column + ")").Scan(&earliest).Error; err != nil {
return time.Time{}, false, errors.Wrap(errors.CodeDatabaseError, err, "查询审计在线数据边界失败")
}
if earliest != nil {
return earliest.In(location), false, nil
if earliest.Valid {
return earliest.Time.In(location), false, nil
}
now := time.Now().In(location)
return time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, location), false, nil