88 lines
3.5 KiB
Go
88 lines
3.5 KiB
Go
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"`
|
|
}
|