feat(withdrawal): 增加提现审核对账与历史记录
This commit is contained in:
@@ -59,6 +59,108 @@ type WithdrawalDetailDTO struct {
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
// WithdrawalListItemDTO 是后台提现分页列表使用的轻量 DTO。
|
||||
// 收款二维码、完整收款账号、审核和打款详情只在打开详情时查询。
|
||||
type WithdrawalListItemDTO struct {
|
||||
ID uint64 `json:"id"`
|
||||
WithdrawNo string `json:"withdraw_no"`
|
||||
UserID uint64 `json:"user_id"`
|
||||
DistributionSiteID uint64 `json:"distribution_site_id"`
|
||||
DistributionSiteName string `json:"distribution_site_name"`
|
||||
UserNickname string `json:"user_nickname"`
|
||||
UserPhone string `json:"user_phone"`
|
||||
AmountCent int64 `json:"amount_cent"`
|
||||
FeeCent int64 `json:"fee_cent"`
|
||||
ActualAmountCent int64 `json:"actual_amount_cent"`
|
||||
AccountType string `json:"account_type"`
|
||||
AccountName string `json:"account_name"`
|
||||
AccountNo string `json:"account_no"`
|
||||
BankName string `json:"bank_name"`
|
||||
Status string `json:"status"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// WithdrawalReviewSummaryDTO 汇总审核员核对提现时最关心的用户财务口径。
|
||||
// wallet_actual_income_cent 汇总普通钱包结算订单及站内钱包提号的有效结算额;
|
||||
// platform_managed_income_cent 汇总平台代管订单和平台代管提号的线下结算额。
|
||||
// reconcile_difference_amount_cent = 钱包收入 - 已打款 - 待处理提现。
|
||||
type WithdrawalReviewSummaryDTO struct {
|
||||
OwnerOrderCount int64 `json:"owner_order_count"`
|
||||
OwnerPickupCount int64 `json:"owner_pickup_count"`
|
||||
FinalizedOrderCount int64 `json:"finalized_order_count"`
|
||||
WalletActualIncomeCent int64 `json:"wallet_actual_income_cent"`
|
||||
PickupIncomeCent int64 `json:"pickup_income_cent"`
|
||||
WalletPickupIncomeCent int64 `json:"wallet_pickup_income_cent"`
|
||||
PlatformManagedPickupIncomeCent int64 `json:"platform_managed_pickup_income_cent"`
|
||||
PlatformManagedIncomeCent int64 `json:"platform_managed_income_cent"`
|
||||
WithdrawalCount int64 `json:"withdrawal_count"`
|
||||
WithdrawnAmountCent int64 `json:"withdrawn_amount_cent"`
|
||||
PendingWithdrawalAmountCent int64 `json:"pending_withdrawal_amount_cent"`
|
||||
RejectedWithdrawalCount int64 `json:"rejected_withdrawal_count"`
|
||||
ReconcileDifferenceAmountCent int64 `json:"reconcile_difference_amount_cent"`
|
||||
}
|
||||
|
||||
type WithdrawalReviewOrderDTO struct {
|
||||
ID uint64 `json:"id"`
|
||||
OrderNo string `json:"order_no"`
|
||||
ListingNo string `json:"listing_no"`
|
||||
Title string `json:"title"`
|
||||
Status string `json:"status"`
|
||||
SettlementStatus string `json:"settlement_status"`
|
||||
SettlementMode string `json:"settlement_mode"`
|
||||
RentAmountCent int64 `json:"rent_amount_cent"`
|
||||
OwnerActualIncomeCent *int64 `json:"owner_actual_income_cent,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
SettledAt *time.Time `json:"settled_at,omitempty"`
|
||||
}
|
||||
|
||||
type WithdrawalReviewPickupDTO struct {
|
||||
ID uint64 `json:"id"`
|
||||
PickupNo string `json:"pickup_no"`
|
||||
ListingNo string `json:"listing_no"`
|
||||
Title string `json:"title"`
|
||||
Status string `json:"status"`
|
||||
SettlementMode string `json:"settlement_mode"`
|
||||
OfflineSettlementStatus string `json:"offline_settlement_status"`
|
||||
SettleAmountCent int64 `json:"settle_amount_cent"`
|
||||
SettleAdjustmentCent int64 `json:"settle_adjustment_cent"`
|
||||
EffectiveSettleAmountCent int64 `json:"effective_settle_amount_cent"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
type WithdrawalReviewHistoryDTO struct {
|
||||
ID uint64 `json:"id"`
|
||||
WithdrawNo string `json:"withdraw_no"`
|
||||
AmountCent int64 `json:"amount_cent"`
|
||||
FeeCent int64 `json:"fee_cent"`
|
||||
ActualAmountCent int64 `json:"actual_amount_cent"`
|
||||
Status string `json:"status"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
ReviewedAt *time.Time `json:"reviewed_at,omitempty"`
|
||||
PaidAt *time.Time `json:"paid_at,omitempty"`
|
||||
}
|
||||
|
||||
type WithdrawalReviewContextQuery struct {
|
||||
OrderPage int `form:"order_page"`
|
||||
PickupPage int `form:"pickup_page"`
|
||||
WithdrawalPage int `form:"withdrawal_page"`
|
||||
PageSize int `form:"page_size"`
|
||||
}
|
||||
|
||||
type WithdrawalReviewContextDTO struct {
|
||||
Summary WithdrawalReviewSummaryDTO `json:"summary"`
|
||||
Orders []WithdrawalReviewOrderDTO `json:"orders"`
|
||||
OrderPage int `json:"order_page"`
|
||||
OrderPageSize int `json:"order_page_size"`
|
||||
Pickups []WithdrawalReviewPickupDTO `json:"pickups"`
|
||||
PickupPage int `json:"pickup_page"`
|
||||
PickupPageSize int `json:"pickup_page_size"`
|
||||
Withdrawals []WithdrawalReviewHistoryDTO `json:"withdrawals"`
|
||||
WithdrawalPage int `json:"withdrawal_page"`
|
||||
WithdrawalPageSize int `json:"withdrawal_page_size"`
|
||||
}
|
||||
|
||||
type CreateWithdrawalRequest struct {
|
||||
PaymentAccountID uint64 `json:"payment_account_id" binding:"required"`
|
||||
AmountCent int64 `json:"amount_cent" binding:"required,gt=0"`
|
||||
@@ -82,10 +184,10 @@ type PaginatedResult struct {
|
||||
}
|
||||
|
||||
type AdminPaginatedResult struct {
|
||||
Items []WithdrawalDetailDTO `json:"items"`
|
||||
Total int64 `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
Items []WithdrawalListItemDTO `json:"items"`
|
||||
Total int64 `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
|
||||
type AdminListQuery struct {
|
||||
|
||||
Reference in New Issue
Block a user