274 lines
14 KiB
Go
274 lines
14 KiB
Go
package adminfinance
|
|
|
|
import "time"
|
|
|
|
type DashboardQuery struct {
|
|
StartDate time.Time
|
|
EndDate time.Time
|
|
}
|
|
|
|
type DetailQuery struct {
|
|
OrderNo string
|
|
UserID uint64
|
|
OrderStatus string
|
|
SettlementStatus string
|
|
SettlementMode string
|
|
OfflineSettlementStatus string
|
|
DateType string
|
|
StartDate time.Time
|
|
EndDate time.Time
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
type DisbursementQuery struct {
|
|
SourceType string
|
|
Status string
|
|
DateType string
|
|
BusinessNo string
|
|
Keyword string
|
|
UserID uint64
|
|
StartDate time.Time
|
|
EndDate time.Time
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
type DashboardDTO struct {
|
|
Summary FinanceSummaryDTO `json:"summary"`
|
|
DailyItems []FinanceDailyDTO `json:"daily_items"`
|
|
PickupSummary PickupSummaryDTO `json:"pickup_summary"`
|
|
MohongSummary MohongSummaryDTO `json:"mohong_summary"`
|
|
DisbursementSummary DisbursementSummaryDTO `json:"disbursement_summary"`
|
|
GeneratedAt time.Time `json:"generated_at"`
|
|
}
|
|
|
|
// PickupSummaryDTO 线下提号统计,独立于正常订单口径,数据来自 admin_pickups 表。
|
|
type PickupSummaryDTO struct {
|
|
SettledAmountCent int64 `json:"settled_amount_cent"` // 区间内已完成提号的结算金额合计
|
|
ProfitAmountCent int64 `json:"profit_amount_cent"` // 区间内已完成提号的线下利润合计
|
|
CompletedCount int64 `json:"completed_count"` // 区间内已完成提号笔数
|
|
InProgressCount int64 `json:"in_progress_count"` // 当前提号中笔数(不按时间)
|
|
}
|
|
|
|
// MohongSummaryDTO 撞车商城的交易流水,单独展示,不计入平台利润。
|
|
type MohongSummaryDTO struct {
|
|
FlowAmountCent int64 `json:"flow_amount_cent"`
|
|
RefundAmountCent int64 `json:"refund_amount_cent"`
|
|
NetAmountCent int64 `json:"net_amount_cent"`
|
|
PaidOrderCount int64 `json:"paid_order_count"`
|
|
}
|
|
|
|
// DisbursementSummaryDTO 统计平台实际线下出款及当前待处理金额。
|
|
// 已打款按确认打款时间归入查询区间,待处理不受日期范围限制,反映当前资金待办。
|
|
type DisbursementSummaryDTO struct {
|
|
PaidAmountCent int64 `json:"paid_amount_cent"`
|
|
PaidCount int64 `json:"paid_count"`
|
|
PendingPaymentAmountCent int64 `json:"pending_payment_amount_cent"`
|
|
PendingPaymentCount int64 `json:"pending_payment_count"`
|
|
OfflineSettlementPaidAmountCent int64 `json:"offline_settlement_paid_amount_cent"`
|
|
OfflineSettlementPaidCount int64 `json:"offline_settlement_paid_count"`
|
|
OfflineSettlementPendingAmountCent int64 `json:"offline_settlement_pending_amount_cent"`
|
|
OfflineSettlementPendingCount int64 `json:"offline_settlement_pending_count"`
|
|
WithdrawalAmountCent int64 `json:"withdrawal_amount_cent"`
|
|
WithdrawalFeeAmountCent int64 `json:"withdrawal_fee_amount_cent"`
|
|
WithdrawalPaidAmountCent int64 `json:"withdrawal_paid_amount_cent"`
|
|
WithdrawalPaidCount int64 `json:"withdrawal_paid_count"`
|
|
WithdrawalPendingAmountCent int64 `json:"withdrawal_pending_amount_cent"`
|
|
WithdrawalPendingCount int64 `json:"withdrawal_pending_count"`
|
|
WithdrawalReviewAmountCent int64 `json:"withdrawal_review_amount_cent"`
|
|
WithdrawalReviewCount int64 `json:"withdrawal_review_count"`
|
|
ManualPaidAmountCent int64 `json:"manual_paid_amount_cent"`
|
|
ManualPaidCount int64 `json:"manual_paid_count"`
|
|
}
|
|
|
|
type DisbursementListDTO struct {
|
|
Items []DisbursementItemDTO `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
Summary DisbursementListSummaryDTO `json:"summary"`
|
|
}
|
|
|
|
type DisbursementListSummaryDTO struct {
|
|
RecordCount int64 `json:"record_count"`
|
|
PaidAmountCent int64 `json:"paid_amount_cent"`
|
|
PaidCount int64 `json:"paid_count"`
|
|
PaymentPendingAmountCent int64 `json:"payment_pending_amount_cent"`
|
|
PaymentPendingCount int64 `json:"payment_pending_count"`
|
|
ReviewPendingAmountCent int64 `json:"review_pending_amount_cent"`
|
|
ReviewPendingCount int64 `json:"review_pending_count"`
|
|
WithdrawalFeeAmountCent int64 `json:"withdrawal_fee_amount_cent"`
|
|
}
|
|
|
|
type DisbursementItemDTO struct {
|
|
SourceType string `json:"source_type"`
|
|
SourceID uint64 `json:"source_id"`
|
|
BusinessNo string `json:"business_no"`
|
|
OrderID uint64 `json:"order_id,omitempty"`
|
|
WithdrawalID uint64 `json:"withdrawal_id,omitempty"`
|
|
UserID uint64 `json:"user_id"`
|
|
PayeeName string `json:"payee_name"`
|
|
PayeePhone string `json:"payee_phone"`
|
|
UploaderName string `json:"uploader_name"`
|
|
SourceChannel string `json:"source_channel"`
|
|
AccountType string `json:"account_type"`
|
|
AccountName string `json:"account_name"`
|
|
AccountNo string `json:"account_no"`
|
|
BankName string `json:"bank_name"`
|
|
AmountCent int64 `json:"amount_cent"`
|
|
FeeCent int64 `json:"fee_cent"`
|
|
ActualAmountCent int64 `json:"actual_amount_cent"`
|
|
Status string `json:"status"`
|
|
RawStatus string `json:"raw_status"`
|
|
BusinessCreatedAt *time.Time `json:"business_created_at,omitempty"`
|
|
PaidAt *time.Time `json:"paid_at,omitempty"`
|
|
OperatorID *uint64 `json:"operator_id,omitempty"`
|
|
OperatorName string `json:"operator_name"`
|
|
Remark string `json:"remark"`
|
|
Category string `json:"category"`
|
|
VoucherURL string `json:"voucher_url"`
|
|
VoidedAt *time.Time `json:"voided_at,omitempty"`
|
|
VoidedBy *uint64 `json:"voided_by,omitempty"`
|
|
VoidedByName string `json:"voided_by_name"`
|
|
VoidReason string `json:"void_reason"`
|
|
}
|
|
|
|
type CreateManualDisbursementRequest struct {
|
|
Category string `json:"category"`
|
|
PayeeName string `json:"payee_name"`
|
|
AmountCent int64 `json:"amount_cent"`
|
|
PaidAt time.Time `json:"paid_at"`
|
|
Remark string `json:"remark"`
|
|
VoucherURL string `json:"voucher_url"`
|
|
}
|
|
|
|
type VoidManualDisbursementRequest struct {
|
|
Reason string `json:"reason"`
|
|
}
|
|
|
|
type ManualDisbursementDTO struct {
|
|
ID uint64 `json:"id"`
|
|
DisbursementNo string `json:"disbursement_no"`
|
|
Category string `json:"category"`
|
|
PayeeName string `json:"payee_name"`
|
|
AmountCent int64 `json:"amount_cent"`
|
|
PaidAt time.Time `json:"paid_at"`
|
|
Remark string `json:"remark"`
|
|
VoucherURL string `json:"voucher_url"`
|
|
Status string `json:"status"`
|
|
CreatedBy uint64 `json:"created_by"`
|
|
CreatedByName string `json:"created_by_name"`
|
|
VoidedBy *uint64 `json:"voided_by,omitempty"`
|
|
VoidedByName string `json:"voided_by_name"`
|
|
VoidedAt *time.Time `json:"voided_at,omitempty"`
|
|
VoidReason string `json:"void_reason"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type FinanceSummaryDTO struct {
|
|
TotalFlowAmountCent int64 `json:"total_flow_amount_cent"`
|
|
TotalRefundAmountCent int64 `json:"total_refund_amount_cent"`
|
|
PendingRefundAmountCent int64 `json:"pending_refund_amount_cent"`
|
|
ChannelNetAmountCent int64 `json:"channel_net_amount_cent"`
|
|
// PlatformIncomeAmountCent 为正常订单最终结账利润与已完成线下提号利润之和。
|
|
// 保留原 JSON 字段名,避免影响已接入的管理端客户端。
|
|
PlatformIncomeAmountCent int64 `json:"platform_income_amount_cent"`
|
|
NormalOrderProfitAmountCent int64 `json:"normal_order_profit_amount_cent"`
|
|
PickupProfitAmountCent int64 `json:"pickup_profit_amount_cent"`
|
|
OwnerShouldIncomeAmountCent int64 `json:"owner_should_income_amount_cent"`
|
|
OwnerWalletIncomeAmountCent int64 `json:"owner_wallet_income_amount_cent"`
|
|
OwnerEffectiveSettlementAmountCent int64 `json:"owner_effective_settlement_amount_cent"`
|
|
OfflineSettlementAmountCent int64 `json:"offline_settlement_amount_cent"`
|
|
OfflineSettlementPendingAmountCent int64 `json:"offline_settlement_pending_amount_cent"`
|
|
SettlementDiffAmountCent int64 `json:"settlement_diff_amount_cent"`
|
|
EstimatedIncomeAmountCent int64 `json:"estimated_income_amount_cent"`
|
|
SuccessfulPayCount int64 `json:"successful_pay_count"`
|
|
SuccessfulRefundCount int64 `json:"successful_refund_count"`
|
|
FullRefundCount int64 `json:"full_refund_count"`
|
|
PartialRefundCount int64 `json:"partial_refund_count"`
|
|
PendingRefundCount int64 `json:"pending_refund_count"`
|
|
SettledOrderCount int64 `json:"settled_order_count"`
|
|
PendingSettleOrderCount int64 `json:"pending_settle_order_count"`
|
|
OfflineSettlementPendingCount int64 `json:"offline_settlement_pending_count"`
|
|
FinancialExceptionCount int64 `json:"financial_exception_count"`
|
|
}
|
|
|
|
type FinanceDailyDTO struct {
|
|
Date string `json:"date"`
|
|
TotalFlowAmountCent int64 `json:"total_flow_amount_cent"`
|
|
TotalRefundAmountCent int64 `json:"total_refund_amount_cent"`
|
|
PendingRefundAmountCent int64 `json:"pending_refund_amount_cent"`
|
|
ChannelNetAmountCent int64 `json:"channel_net_amount_cent"`
|
|
PlatformIncomeAmountCent int64 `json:"platform_income_amount_cent"`
|
|
OwnerShouldIncomeAmountCent int64 `json:"owner_should_income_amount_cent"`
|
|
OwnerWalletIncomeAmountCent int64 `json:"owner_wallet_income_amount_cent"`
|
|
OwnerEffectiveSettlementAmountCent int64 `json:"owner_effective_settlement_amount_cent"`
|
|
OfflineSettlementAmountCent int64 `json:"offline_settlement_amount_cent"`
|
|
OfflineSettlementPendingAmountCent int64 `json:"offline_settlement_pending_amount_cent"`
|
|
SettlementDiffAmountCent int64 `json:"settlement_diff_amount_cent"`
|
|
EstimatedIncomeAmountCent int64 `json:"estimated_income_amount_cent"`
|
|
SuccessfulPayCount int64 `json:"successful_pay_count"`
|
|
SuccessfulRefundCount int64 `json:"successful_refund_count"`
|
|
FullRefundCount int64 `json:"full_refund_count"`
|
|
PartialRefundCount int64 `json:"partial_refund_count"`
|
|
PendingRefundCount int64 `json:"pending_refund_count"`
|
|
SettledOrderCount int64 `json:"settled_order_count"`
|
|
PickupCompletedCount int64 `json:"pickup_completed_count"`
|
|
SalesCount int64 `json:"sales_count"`
|
|
PaidOrderCount int64 `json:"paid_order_count"`
|
|
OfflineSettlementPendingCount int64 `json:"offline_settlement_pending_count"`
|
|
OfflineSettlementPaidAmountCent int64 `json:"offline_settlement_paid_amount_cent"`
|
|
OfflineSettlementPaidCount int64 `json:"offline_settlement_paid_count"`
|
|
WithdrawalPaidAmountCent int64 `json:"withdrawal_paid_amount_cent"`
|
|
WithdrawalPaidCount int64 `json:"withdrawal_paid_count"`
|
|
ManualPaidAmountCent int64 `json:"manual_paid_amount_cent"`
|
|
ManualPaidCount int64 `json:"manual_paid_count"`
|
|
DisbursementPaidAmountCent int64 `json:"disbursement_paid_amount_cent"`
|
|
DisbursementPaidCount int64 `json:"disbursement_paid_count"`
|
|
}
|
|
|
|
type PaginatedResult struct {
|
|
Items interface{} `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
type FinanceDetailDTO struct {
|
|
OrderID uint64 `json:"order_id"`
|
|
OrderNo string `json:"order_no"`
|
|
OrderStatus string `json:"order_status"`
|
|
SettlementStatus string `json:"settlement_status"`
|
|
RefundStatus string `json:"refund_status"`
|
|
HandoffMode string `json:"handoff_mode"`
|
|
SettlementMode string `json:"settlement_mode"`
|
|
OfflineSettlementStatus string `json:"offline_settlement_status"`
|
|
OfflineSettlementAmountCent int64 `json:"offline_settlement_amount_cent"`
|
|
RenterID uint64 `json:"renter_id"`
|
|
RenterPhone string `json:"renter_phone"`
|
|
RenterNickname string `json:"renter_nickname"`
|
|
OwnerID uint64 `json:"owner_id"`
|
|
OwnerPhone string `json:"owner_phone"`
|
|
OwnerNickname string `json:"owner_nickname"`
|
|
OrderRentAmountCent int64 `json:"order_rent_amount_cent"`
|
|
OrderDepositAmountCent int64 `json:"order_deposit_amount_cent"`
|
|
CheckoutRentAmountCent int64 `json:"checkout_rent_amount_cent"`
|
|
CheckoutRenterRefundCent int64 `json:"checkout_renter_refund_cent"`
|
|
CheckoutOwnerIncomeCent int64 `json:"checkout_owner_income_cent"`
|
|
CheckoutPlatformFeeCent int64 `json:"checkout_platform_fee_cent"`
|
|
OwnerWalletIncomeAmountCent int64 `json:"owner_wallet_income_amount_cent"`
|
|
OwnerEffectiveSettlementAmountCent int64 `json:"owner_effective_settlement_amount_cent"`
|
|
PaidAmountCent int64 `json:"paid_amount_cent"`
|
|
RefundedAmountCent int64 `json:"refunded_amount_cent"`
|
|
RefundingAmountCent int64 `json:"refunding_amount_cent"`
|
|
FailedRefundAmountCent int64 `json:"failed_refund_amount_cent"`
|
|
ChannelNetAmountCent int64 `json:"channel_net_amount_cent"`
|
|
PlatformNetAmountCent int64 `json:"platform_net_amount_cent"`
|
|
SettlementDiffAmountCent int64 `json:"settlement_diff_amount_cent"`
|
|
FinanceStatus string `json:"finance_status"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
SettledAt *time.Time `json:"settled_at,omitempty"`
|
|
OfflineSettledAt *time.Time `json:"offline_settled_at,omitempty"`
|
|
}
|