test(invitation): 修正返利单测因 DATETIME(0) 小数秒四舍五入导致的天数抖动

MySQL DATETIME(0) 会把小数秒四舍五入,now-2天 可能进位成不足 48 小时而被算作 1 天,导致用例偶发失败;统一 Truncate 到整秒。
This commit is contained in:
yml2213
2026-10-13 15:21:14 +08:00
parent 0082a60b46
commit 9a52dbdb7b
2 changed files with 5 additions and 2 deletions
@@ -341,7 +341,9 @@ func TestAwardSellerSideRebateTxAwardsOncePerSource(t *testing.T) {
t.Fatalf("创建号主失败: %v", err)
}
verifiedAt := time.Now().AddDate(0, 0, -2) // 距结算 2 天 => 首月 60%
// 距结算 2 天 => 首月 60%。
// Truncate 到整秒:DATETIME(0) 会把小数秒四舍五入,带小数时可能进位成不足 48 小时而算作 1 天。
verifiedAt := time.Now().AddDate(0, 0, -2).Truncate(time.Second)
if err := db.Create(&model.UserInvitation{
InviterID: inviter.ID,
InviteeID: seller.ID,
@@ -376,7 +376,8 @@ func TestRepositoryCompletePickupAwardsSellerInvitationRebate(t *testing.T) {
}
listing := seedAvailableListing(t, db, "LST-REBATE-001", "返利提号账号", false)
verifiedAt := time.Now().AddDate(0, 0, -2) // 距提号完成 2 天 => 首月 60% 档
// 距提号完成 2 天 => 首月 60% 档;Truncate 到整秒避免 DATETIME(0) 四舍五入影响天数计算。
verifiedAt := time.Now().AddDate(0, 0, -2).Truncate(time.Second)
if err := db.Create(&model.UserInvitation{
InviterID: inviter.ID,
InviteeID: listing.OwnerID,