package admindashboard import "time" type DashboardDTO struct { Metrics MetricsDTO `json:"metrics"` Pending PendingDTO `json:"pending"` ListingDaily ListingDailyOverviewDTO `json:"listing_daily"` RecentOrders []RecentOrderDTO `json:"recent_orders"` RecentDisputes []RecentDisputeDTO `json:"recent_disputes"` GeneratedAt time.Time `json:"generated_at"` } type MetricsDTO struct { TotalUsers int64 `json:"total_users"` VerifiedUsers int64 `json:"verified_users"` TotalListings int64 `json:"total_listings"` PublishedListings int64 `json:"published_listings"` TotalOrders int64 `json:"total_orders"` RentingOrders int64 `json:"renting_orders"` TodayOrders int64 `json:"today_orders"` TodayLedgerAmountCent int64 `json:"today_ledger_amount_cent"` } // ListingDailyOverviewDTO 商品上下架统计:今日三组 + 近 7 日趋势。 type ListingDailyOverviewDTO struct { Today ListingDayStatsDTO `json:"today"` Trend []ListingDayStatsDTO `json:"trend"` TodayChannels []ListingChannelDayStatsDTO `json:"today_channels"` ChannelTrend []ListingChannelDayStatsDTO `json:"channel_trend"` TodayUploaders []ListingUploaderDayStatsDTO `json:"today_uploaders"` UploaderTrend []ListingUploaderDayStatsDTO `json:"uploader_trend"` Days int `json:"days"` Timezone string `json:"timezone"` } type ListingDayStatsDTO struct { Date string `json:"date"` // YYYY-MM-DD(上海时区) PublishedCount int64 `json:"published_count"` ActiveOfflineCount int64 `json:"active_offline_count"` // 号主 + 后台主动下架 TradeLeaveCount int64 `json:"trade_leave_count"` // rented / completed / sealed / 交易侧归档下架 } type ListingChannelDayStatsDTO struct { Date string `json:"date"` // YYYY-MM-DD(上海时区) SourceChannel string `json:"source_channel"` PublishedCount int64 `json:"published_count"` ActiveOfflineCount int64 `json:"active_offline_count"` TradeLeaveCount int64 `json:"trade_leave_count"` } type ListingUploaderDayStatsDTO struct { Date string `json:"date"` // YYYY-MM-DD(上海时区) UploaderID uint64 `json:"uploader_id"` UploaderName string `json:"uploader_name"` UploadCount int64 `json:"upload_count"` } type PendingDTO struct { ListingReviews int64 `json:"listing_reviews"` Disputes int64 `json:"disputes"` PendingHandoffs int64 `json:"pending_handoffs"` PendingReturnConfirms int64 `json:"pending_return_confirms"` } type RecentOrderDTO struct { ID uint64 `json:"id"` OrderNo string `json:"order_no"` Title string `json:"title"` RenterID uint64 `json:"renter_id"` OwnerID uint64 `json:"owner_id"` Status string `json:"status"` RentAmountCent int64 `json:"rent_amount_cent"` DepositAmountCent int64 `json:"deposit_amount_cent"` CreatedAt time.Time `json:"created_at"` } type RecentDisputeDTO struct { ID uint64 `json:"id"` OrderID uint64 `json:"order_id"` OrderNo string `json:"order_no"` Title string `json:"title"` Type string `json:"type"` Status string `json:"status"` InitiatorID uint64 `json:"initiator_id"` CreatedAt time.Time `json:"created_at"` }