- 新建 admin_pickups 表独立于 rental_orders,不污染订单状态机与财务统计口径 - 提号中/已完成/已取消三态:创建锁定账号,完成时给卖家钱包加可用余额并下架 listing,取消解锁账号 - 完成时 listing 置 completed,复用现有 listingLockedForOwnerMutation 拦截再上架 - 管理端提号管理页(列表/创建/完成/取消/可提号账号搜索)+ 卖家端提号记录页 - 财务仪表盘新增线下提号独立统计块,与正常订单口径分离 - 钱包流水 label、状态标签、菜单入口同步补齐 - 优化卖家服务悬浮菜单为一行四个,尺寸与配色对齐买家服务
112 lines
5.4 KiB
Go
112 lines
5.4 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
|
|
DateType string
|
|
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"`
|
|
GeneratedAt time.Time `json:"generated_at"`
|
|
}
|
|
|
|
// PickupSummaryDTO 线下提号统计,独立于正常订单口径,数据来自 admin_pickups 表。
|
|
type PickupSummaryDTO struct {
|
|
SettledAmountCent int64 `json:"settled_amount_cent"` // 区间内已完成提号的结算金额合计
|
|
CompletedCount int64 `json:"completed_count"` // 区间内已完成提号笔数
|
|
InProgressCount int64 `json:"in_progress_count"` // 当前提号中笔数(不按时间)
|
|
}
|
|
|
|
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 int64 `json:"platform_income_amount_cent"`
|
|
OwnerShouldIncomeAmountCent int64 `json:"owner_should_income_amount_cent"`
|
|
OwnerWalletIncomeAmountCent int64 `json:"owner_wallet_income_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"`
|
|
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"`
|
|
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"`
|
|
}
|
|
|
|
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"`
|
|
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"`
|
|
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"`
|
|
}
|