修复后台分页刷新并优化财务查询
This commit is contained in:
@@ -98,42 +98,29 @@ func (r *Repository) disbursementSummary(ctx context.Context, query DashboardQue
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var withdrawalPaid struct {
|
||||
AmountCent int64
|
||||
FeeAmountCent int64
|
||||
ActualAmountCent int64
|
||||
Count int64
|
||||
// 付款、处理中、待审核三类提现在一次条件聚合中完成,避免同一张表重复扫描。
|
||||
var withdrawal struct {
|
||||
PaidAmountCent int64
|
||||
PaidFeeAmountCent int64
|
||||
PaidActualAmountCent int64
|
||||
PaidCount int64
|
||||
PendingAmountCent int64
|
||||
PendingCount int64
|
||||
ReviewAmountCent int64
|
||||
ReviewCount int64
|
||||
}
|
||||
if err := db.Table("withdrawal_requests").
|
||||
Select(`COALESCE(SUM(amount_cent), 0) AS amount_cent,
|
||||
COALESCE(SUM(fee_cent), 0) AS fee_amount_cent,
|
||||
COALESCE(SUM(actual_amount_cent), 0) AS actual_amount_cent,
|
||||
COUNT(id) AS count`).
|
||||
Where("status = ?", "completed").
|
||||
Where("paid_at >= ? AND paid_at <= ?", query.StartDate, query.EndDate).
|
||||
Scan(&withdrawalPaid).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var withdrawalPending struct {
|
||||
ActualAmountCent int64
|
||||
Count int64
|
||||
}
|
||||
if err := db.Table("withdrawal_requests").
|
||||
Select(`COALESCE(SUM(actual_amount_cent), 0) AS actual_amount_cent, COUNT(id) AS count`).
|
||||
Where("status = ?", "processing").
|
||||
Scan(&withdrawalPending).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var withdrawalReview struct {
|
||||
ActualAmountCent int64
|
||||
Count int64
|
||||
}
|
||||
if err := db.Table("withdrawal_requests").
|
||||
Select(`COALESCE(SUM(actual_amount_cent), 0) AS actual_amount_cent, COUNT(id) AS count`).
|
||||
Where("status = ?", "pending").
|
||||
Scan(&withdrawalReview).Error; err != nil {
|
||||
if err := db.Table("withdrawal_requests").Select(`
|
||||
COALESCE(SUM(CASE WHEN status = 'completed' AND paid_at >= ? AND paid_at <= ? THEN amount_cent ELSE 0 END), 0) AS paid_amount_cent,
|
||||
COALESCE(SUM(CASE WHEN status = 'completed' AND paid_at >= ? AND paid_at <= ? THEN fee_cent ELSE 0 END), 0) AS paid_fee_amount_cent,
|
||||
COALESCE(SUM(CASE WHEN status = 'completed' AND paid_at >= ? AND paid_at <= ? THEN actual_amount_cent ELSE 0 END), 0) AS paid_actual_amount_cent,
|
||||
COALESCE(SUM(CASE WHEN status = 'completed' AND paid_at >= ? AND paid_at <= ? THEN 1 ELSE 0 END), 0) AS paid_count,
|
||||
COALESCE(SUM(CASE WHEN status = 'processing' THEN actual_amount_cent ELSE 0 END), 0) AS pending_amount_cent,
|
||||
COALESCE(SUM(CASE WHEN status = 'processing' THEN 1 ELSE 0 END), 0) AS pending_count,
|
||||
COALESCE(SUM(CASE WHEN status = 'pending' THEN actual_amount_cent ELSE 0 END), 0) AS review_amount_cent,
|
||||
COALESCE(SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END), 0) AS review_count`,
|
||||
query.StartDate, query.EndDate, query.StartDate, query.EndDate,
|
||||
query.StartDate, query.EndDate, query.StartDate, query.EndDate).
|
||||
Scan(&withdrawal).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -150,22 +137,22 @@ func (r *Repository) disbursementSummary(ctx context.Context, query DashboardQue
|
||||
}
|
||||
|
||||
return &DisbursementSummaryDTO{
|
||||
PaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent + withdrawalPaid.ActualAmountCent + manualPaid.AmountCent,
|
||||
PaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count + withdrawalPaid.Count + manualPaid.Count,
|
||||
PendingPaymentAmountCent: offlinePending.AmountCent + pickupPending.AmountCent + pickupAdjustmentPending.AmountCent + withdrawalPending.ActualAmountCent,
|
||||
PendingPaymentCount: offlinePending.Count + pickupPending.Count + pickupAdjustmentPending.Count + withdrawalPending.Count,
|
||||
PaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent + withdrawal.PaidActualAmountCent + manualPaid.AmountCent,
|
||||
PaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count + withdrawal.PaidCount + manualPaid.Count,
|
||||
PendingPaymentAmountCent: offlinePending.AmountCent + pickupPending.AmountCent + pickupAdjustmentPending.AmountCent + withdrawal.PendingAmountCent,
|
||||
PendingPaymentCount: offlinePending.Count + pickupPending.Count + pickupAdjustmentPending.Count + withdrawal.PendingCount,
|
||||
OfflineSettlementPaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent,
|
||||
OfflineSettlementPaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count,
|
||||
OfflineSettlementPendingAmountCent: offlinePending.AmountCent,
|
||||
OfflineSettlementPendingCount: offlinePending.Count,
|
||||
WithdrawalAmountCent: withdrawalPaid.AmountCent,
|
||||
WithdrawalFeeAmountCent: withdrawalPaid.FeeAmountCent,
|
||||
WithdrawalPaidAmountCent: withdrawalPaid.ActualAmountCent,
|
||||
WithdrawalPaidCount: withdrawalPaid.Count,
|
||||
WithdrawalPendingAmountCent: withdrawalPending.ActualAmountCent,
|
||||
WithdrawalPendingCount: withdrawalPending.Count,
|
||||
WithdrawalReviewAmountCent: withdrawalReview.ActualAmountCent,
|
||||
WithdrawalReviewCount: withdrawalReview.Count,
|
||||
WithdrawalAmountCent: withdrawal.PaidAmountCent,
|
||||
WithdrawalFeeAmountCent: withdrawal.PaidFeeAmountCent,
|
||||
WithdrawalPaidAmountCent: withdrawal.PaidActualAmountCent,
|
||||
WithdrawalPaidCount: withdrawal.PaidCount,
|
||||
WithdrawalPendingAmountCent: withdrawal.PendingAmountCent,
|
||||
WithdrawalPendingCount: withdrawal.PendingCount,
|
||||
WithdrawalReviewAmountCent: withdrawal.ReviewAmountCent,
|
||||
WithdrawalReviewCount: withdrawal.ReviewCount,
|
||||
ManualPaidAmountCent: manualPaid.AmountCent,
|
||||
ManualPaidCount: manualPaid.Count,
|
||||
}, nil
|
||||
|
||||
Reference in New Issue
Block a user