Files
hfb_sys/backend/internal/modules/adtracking/model.go
T
yml2213 2b11d70ebe feat(adtracking): 新增推广链接追踪与数据大盘,支持自定义短码、注册与下单归因及二维码物料生成
1. 数据库新增 000064_ad_tracking.sql 迁移,创建 ad_tracking_links 和 ad_tracking_clicks 表,并在 users、rental_orders 增加归因字段
2. 后端新增 adtracking 模块,挂载 GET /r/:code 302 智能重定向、点击流水异步记录、转化率/GMV聚合统计及管理接口
3. 用户认证 (auth) 与订单创建 (order) 链路贯通,实现注册用户与订单成交推广短码全链路归因
4. 前端管理后台左侧新增【推广追踪】目录,支持大盘指标总览、推广链接 CRUD、状态启停、一键复制短链及二维码下载 (PNG)
2026-09-10 11:05:47 +08:00

42 lines
2.3 KiB
Go

package adtracking
import (
"time"
)
type AdTrackingLink struct {
ID uint64 `gorm:"primaryKey" json:"id"`
Name string `gorm:"size:128;not null" json:"name"`
Code string `gorm:"size:64;not null;uniqueIndex:uk_ad_tracking_links_code" json:"code"`
ChannelType string `gorm:"size:64;not null;default:'other';index:idx_ad_tracking_links_channel" json:"channel_type"`
TargetURL string `gorm:"size:512;not null;default:'https://hao858.com/'" json:"target_url"`
Status string `gorm:"size:16;not null;default:'active';index:idx_ad_tracking_links_status" json:"status"`
CostCent int64 `gorm:"not null;default:0" json:"cost_cent"`
Notes string `gorm:"size:500;not null;default:''" json:"notes"`
CreatedBy uint64 `gorm:"not null;default:0" json:"created_by"`
CreatedAt time.Time `gorm:"index:idx_ad_tracking_links_created" json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func (AdTrackingLink) TableName() string {
return "ad_tracking_links"
}
type AdTrackingClick struct {
ID uint64 `gorm:"primaryKey" json:"id"`
LinkID uint64 `gorm:"not null;index:idx_ad_tracking_clicks_link_created,priority:1" json:"link_id"`
Code string `gorm:"size:64;not null;index:idx_ad_tracking_clicks_code_created,priority:1" json:"code"`
IP string `gorm:"size:64;not null;default:'';index:idx_ad_tracking_clicks_ip_created,priority:1" json:"ip"`
UserAgent string `gorm:"size:512;not null;default:''" json:"user_agent"`
DeviceType string `gorm:"size:32;not null;default:'unknown'" json:"device_type"`
OS string `gorm:"size:32;not null;default:'unknown'" json:"os"`
Browser string `gorm:"size:32;not null;default:'unknown'" json:"browser"`
Referer string `gorm:"size:512;not null;default:''" json:"referer"`
VisitorID string `gorm:"size:64;not null;default:'';index:idx_ad_tracking_clicks_visitor,priority:1" json:"visitor_id"`
CreatedAt time.Time `gorm:"index:idx_ad_tracking_clicks_link_created,priority:2;index:idx_ad_tracking_clicks_code_created,priority:2;index:idx_ad_tracking_clicks_ip_created,priority:2;index:idx_ad_tracking_clicks_visitor,priority:2" json:"created_at"`
}
func (AdTrackingClick) TableName() string {
return "ad_tracking_clicks"
}