修复后台分页刷新并优化财务查询
This commit is contained in:
@@ -98,42 +98,29 @@ func (r *Repository) disbursementSummary(ctx context.Context, query DashboardQue
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var withdrawalPaid struct {
|
// 付款、处理中、待审核三类提现在一次条件聚合中完成,避免同一张表重复扫描。
|
||||||
AmountCent int64
|
var withdrawal struct {
|
||||||
FeeAmountCent int64
|
PaidAmountCent int64
|
||||||
ActualAmountCent int64
|
PaidFeeAmountCent int64
|
||||||
Count int64
|
PaidActualAmountCent int64
|
||||||
|
PaidCount int64
|
||||||
|
PendingAmountCent int64
|
||||||
|
PendingCount int64
|
||||||
|
ReviewAmountCent int64
|
||||||
|
ReviewCount int64
|
||||||
}
|
}
|
||||||
if err := db.Table("withdrawal_requests").
|
if err := db.Table("withdrawal_requests").Select(`
|
||||||
Select(`COALESCE(SUM(amount_cent), 0) AS amount_cent,
|
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(fee_cent), 0) AS fee_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(actual_amount_cent), 0) AS actual_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,
|
||||||
COUNT(id) AS count`).
|
COALESCE(SUM(CASE WHEN status = 'completed' AND paid_at >= ? AND paid_at <= ? THEN 1 ELSE 0 END), 0) AS paid_count,
|
||||||
Where("status = ?", "completed").
|
COALESCE(SUM(CASE WHEN status = 'processing' THEN actual_amount_cent ELSE 0 END), 0) AS pending_amount_cent,
|
||||||
Where("paid_at >= ? AND paid_at <= ?", query.StartDate, query.EndDate).
|
COALESCE(SUM(CASE WHEN status = 'processing' THEN 1 ELSE 0 END), 0) AS pending_count,
|
||||||
Scan(&withdrawalPaid).Error; err != nil {
|
COALESCE(SUM(CASE WHEN status = 'pending' THEN actual_amount_cent ELSE 0 END), 0) AS review_amount_cent,
|
||||||
return nil, err
|
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).
|
||||||
var withdrawalPending struct {
|
Scan(&withdrawal).Error; err != nil {
|
||||||
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 {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,22 +137,22 @@ func (r *Repository) disbursementSummary(ctx context.Context, query DashboardQue
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &DisbursementSummaryDTO{
|
return &DisbursementSummaryDTO{
|
||||||
PaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent + withdrawalPaid.ActualAmountCent + manualPaid.AmountCent,
|
PaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent + withdrawal.PaidActualAmountCent + manualPaid.AmountCent,
|
||||||
PaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count + withdrawalPaid.Count + manualPaid.Count,
|
PaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count + withdrawal.PaidCount + manualPaid.Count,
|
||||||
PendingPaymentAmountCent: offlinePending.AmountCent + pickupPending.AmountCent + pickupAdjustmentPending.AmountCent + withdrawalPending.ActualAmountCent,
|
PendingPaymentAmountCent: offlinePending.AmountCent + pickupPending.AmountCent + pickupAdjustmentPending.AmountCent + withdrawal.PendingAmountCent,
|
||||||
PendingPaymentCount: offlinePending.Count + pickupPending.Count + pickupAdjustmentPending.Count + withdrawalPending.Count,
|
PendingPaymentCount: offlinePending.Count + pickupPending.Count + pickupAdjustmentPending.Count + withdrawal.PendingCount,
|
||||||
OfflineSettlementPaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent,
|
OfflineSettlementPaidAmountCent: offlinePaid.AmountCent + pickupPaid.AmountCent + pickupAdjustmentPaid.AmountCent,
|
||||||
OfflineSettlementPaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count,
|
OfflineSettlementPaidCount: offlinePaid.Count + pickupPaid.Count + pickupAdjustmentPaid.Count,
|
||||||
OfflineSettlementPendingAmountCent: offlinePending.AmountCent,
|
OfflineSettlementPendingAmountCent: offlinePending.AmountCent,
|
||||||
OfflineSettlementPendingCount: offlinePending.Count,
|
OfflineSettlementPendingCount: offlinePending.Count,
|
||||||
WithdrawalAmountCent: withdrawalPaid.AmountCent,
|
WithdrawalAmountCent: withdrawal.PaidAmountCent,
|
||||||
WithdrawalFeeAmountCent: withdrawalPaid.FeeAmountCent,
|
WithdrawalFeeAmountCent: withdrawal.PaidFeeAmountCent,
|
||||||
WithdrawalPaidAmountCent: withdrawalPaid.ActualAmountCent,
|
WithdrawalPaidAmountCent: withdrawal.PaidActualAmountCent,
|
||||||
WithdrawalPaidCount: withdrawalPaid.Count,
|
WithdrawalPaidCount: withdrawal.PaidCount,
|
||||||
WithdrawalPendingAmountCent: withdrawalPending.ActualAmountCent,
|
WithdrawalPendingAmountCent: withdrawal.PendingAmountCent,
|
||||||
WithdrawalPendingCount: withdrawalPending.Count,
|
WithdrawalPendingCount: withdrawal.PendingCount,
|
||||||
WithdrawalReviewAmountCent: withdrawalReview.ActualAmountCent,
|
WithdrawalReviewAmountCent: withdrawal.ReviewAmountCent,
|
||||||
WithdrawalReviewCount: withdrawalReview.Count,
|
WithdrawalReviewCount: withdrawal.ReviewCount,
|
||||||
ManualPaidAmountCent: manualPaid.AmountCent,
|
ManualPaidAmountCent: manualPaid.AmountCent,
|
||||||
ManualPaidCount: manualPaid.Count,
|
ManualPaidCount: manualPaid.Count,
|
||||||
}, nil
|
}, nil
|
||||||
|
|||||||
@@ -404,7 +404,7 @@ function defaultEndDate() {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="currentPageSize"
|
v-model:page-size="currentPageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="handlePageChange"
|
@page-change="handlePageChange"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -673,7 +673,7 @@ function accountTypeLabel(type: string) {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="currentPageSize"
|
v-model:page-size="currentPageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="loadItems"
|
@page-change="loadItems"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ function statusType(status: string): 'success' | 'danger' {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="currentPageSize"
|
v-model:page-size="currentPageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="loadItems"
|
@page-change="loadItems"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -356,7 +356,7 @@ function jsonText(value: unknown) {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="currentPageSize"
|
v-model:page-size="currentPageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="handlePageChange"
|
@page-change="handlePageChange"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ function directionLabel(direction: string) {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="currentPageSize"
|
v-model:page-size="currentPageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="handlePageChange"
|
@page-change="handlePageChange"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -469,7 +469,7 @@ function money(cent: number | undefined | null) {
|
|||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
v-model:page-size="pageSize"
|
v-model:page-size="pageSize"
|
||||||
:total="total"
|
:total="total"
|
||||||
@change="loadWithdrawals"
|
@page-change="loadWithdrawals"
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user