新增其他线下出款记账

This commit is contained in:
yml2213
2026-07-26 17:13:08 +08:00
parent dbe0cda2c6
commit 379536e5c5
16 changed files with 1125 additions and 35 deletions
@@ -35,10 +35,19 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
)`).Error; err != nil {
t.Fatalf("创建提现表失败: %v", err)
}
if err := db.Exec(`CREATE TABLE manual_disbursements (
id INTEGER PRIMARY KEY,
status TEXT NOT NULL,
amount_cent INTEGER NOT NULL,
paid_at DATETIME NOT NULL
)`).Error; err != nil {
t.Fatalf("创建其他线下出款表失败: %v", err)
}
loc := timeutil.ShanghaiLocation()
inRangeOffline := time.Date(2026, 7, 1, 10, 0, 0, 0, loc)
inRangeWithdrawal := time.Date(2026, 7, 2, 11, 0, 0, 0, loc)
inRangeManual := time.Date(2026, 7, 3, 12, 0, 0, 0, loc)
outOfRange := time.Date(2026, 6, 30, 23, 59, 0, 0, loc)
for _, args := range [][]any{
@@ -54,6 +63,16 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
t.Fatalf("写入订单失败: %v", err)
}
}
for _, args := range [][]any{
{1, "paid", 2500, inRangeManual},
{2, "paid", 1000, outOfRange},
{3, "voided", 6000, inRangeManual},
} {
if err := db.Exec(`INSERT INTO manual_disbursements
(id, status, amount_cent, paid_at) VALUES (?, ?, ?, ?)`, args...).Error; err != nil {
t.Fatalf("写入其他线下出款失败: %v", err)
}
}
for _, args := range [][]any{
{1, "completed", 10000, 100, 9900, inRangeWithdrawal},
{2, "completed", 5000, 0, 5000, outOfRange},
@@ -77,8 +96,8 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
if err != nil {
t.Fatalf("disbursementSummary() error = %v", err)
}
if summary.PaidAmountCent != 21900 || summary.PaidCount != 2 {
t.Fatalf("实际出款 = %d/%d, want 21900/2", summary.PaidAmountCent, summary.PaidCount)
if summary.PaidAmountCent != 24400 || summary.PaidCount != 3 {
t.Fatalf("实际出款 = %d/%d, want 24400/3", summary.PaidAmountCent, summary.PaidCount)
}
if summary.OfflineSettlementPaidAmountCent != 12000 || summary.OfflineSettlementPaidCount != 1 {
t.Fatalf("代管打款 = %d/%d, want 12000/1", summary.OfflineSettlementPaidAmountCent, summary.OfflineSettlementPaidCount)
@@ -86,6 +105,9 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
if summary.WithdrawalAmountCent != 10000 || summary.WithdrawalFeeAmountCent != 100 || summary.WithdrawalPaidAmountCent != 9900 {
t.Fatalf("提现申请/手续费/实付 = %d/%d/%d, want 10000/100/9900", summary.WithdrawalAmountCent, summary.WithdrawalFeeAmountCent, summary.WithdrawalPaidAmountCent)
}
if summary.ManualPaidAmountCent != 2500 || summary.ManualPaidCount != 1 {
t.Fatalf("其他线下出款 = %d/%d, want 2500/1", summary.ManualPaidAmountCent, summary.ManualPaidCount)
}
if summary.PendingPaymentAmountCent != 12800 || summary.PendingPaymentCount != 2 {
t.Fatalf("待出款 = %d/%d, want 12800/2", summary.PendingPaymentAmountCent, summary.PendingPaymentCount)
}
@@ -97,8 +119,8 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
if err != nil {
t.Fatalf("dailyDisbursements() error = %v", err)
}
if len(daily) != 2 {
t.Fatalf("每日出款行数 = %d, want 2", len(daily))
if len(daily) != 3 {
t.Fatalf("每日出款行数 = %d, want 3", len(daily))
}
if daily[0].Date != "2026-07-01" || daily[0].OfflineSettlementPaidAmountCent != 12000 {
t.Fatalf("第一日代管出款 = %+v", daily[0])
@@ -106,4 +128,7 @@ func TestDisbursementStatisticsUseActualPaymentTimeAndAmount(t *testing.T) {
if daily[1].Date != "2026-07-02" || daily[1].WithdrawalPaidAmountCent != 9900 {
t.Fatalf("第二日提现出款 = %+v", daily[1])
}
if daily[2].Date != "2026-07-03" || daily[2].ManualPaidAmountCent != 2500 {
t.Fatalf("第三日其他线下出款 = %+v", daily[2])
}
}