Files
hfb_jysh/backend/internal/modules/adtracking/dto.go
T

76 lines
2.6 KiB
Go

package adtracking
import "time"
type TrackingLinkItem struct {
ID uint64 `json:"id"`
Name string `json:"name"`
Code string `json:"code"`
ChannelType string `json:"channel_type"`
TargetURL string `json:"target_url"`
ShortURL string `json:"short_url"`
Status string `json:"status"`
CostCent int64 `json:"cost_cent"`
Notes string `json:"notes"`
CreatedBy uint64 `json:"created_by"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 统计指标
ClickPV int64 `json:"click_pv"`
ClickUV int64 `json:"click_uv"`
ClickIP int64 `json:"click_ip"`
RegisterCount int64 `json:"register_count"`
OrderCount int64 `json:"order_count"`
PaidOrderCount int64 `json:"paid_order_count"`
PaidGMVCent int64 `json:"paid_gmv_cent"`
ConversionRate float64 `json:"conversion_rate"` // 下单转化率 (OrderCount / max(ClickUV, 1))
}
type CreateTrackingLinkRequest struct {
Name string `json:"name" binding:"required,min=1,max=128"`
Code string `json:"code" binding:"required,min=2,max=64"`
ChannelType string `json:"channel_type"`
TargetURL string `json:"target_url"`
CostCent int64 `json:"cost_cent"`
Notes string `json:"notes" binding:"max=500"`
}
type UpdateTrackingLinkRequest struct {
Name string `json:"name" binding:"required,min=1,max=128"`
ChannelType string `json:"channel_type"`
TargetURL string `json:"target_url"`
CostCent int64 `json:"cost_cent"`
Notes string `json:"notes" binding:"max=500"`
}
type UpdateLinkStatusRequest struct {
Status string `json:"status" binding:"required,oneof=active disabled"`
}
type ListTrackingLinksQuery struct {
Keyword string `form:"keyword"`
ChannelType string `form:"channel_type"`
Status string `form:"status"`
Page int `form:"page,default=1"`
PageSize int `form:"page_size,default=20"`
}
type TrackingOverviewStats struct {
TotalLinks int64 `json:"total_links"`
ActiveLinks int64 `json:"active_links"`
TotalPV int64 `json:"total_pv"`
TotalUV int64 `json:"total_uv"`
TotalIP int64 `json:"total_ip"`
TotalRegisters int64 `json:"total_registers"`
TotalOrders int64 `json:"total_orders"`
TotalPaidOrders int64 `json:"total_paid_orders"`
TotalPaidGMVCent int64 `json:"total_paid_gmv_cent"`
TodayPV int64 `json:"today_pv"`
TodayUV int64 `json:"today_uv"`
TodayRegisters int64 `json:"today_registers"`
TodayOrders int64 `json:"today_orders"`
TodayPaidGMVCent int64 `json:"today_paid_gmv_cent"`
}