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)
74 lines
3.6 KiB
SQL
74 lines
3.6 KiB
SQL
-- +goose Up
|
|
|
|
CREATE TABLE ad_tracking_links (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
name VARCHAR(128) NOT NULL COMMENT '推广名称',
|
|
code VARCHAR(64) NOT NULL COMMENT '自定义短码后缀',
|
|
channel_type VARCHAR(64) NOT NULL DEFAULT 'other' COMMENT '渠道场景类型: cybercafe/campus/offline_promo/partner/online_ad/other',
|
|
target_url VARCHAR(512) NOT NULL DEFAULT 'https://hao858.com/' COMMENT '目标跳转落地页',
|
|
status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态: active启用/disabled停用',
|
|
cost_cent BIGINT NOT NULL DEFAULT 0 COMMENT '投放预算或成本(分)',
|
|
notes VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注说明',
|
|
created_by BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建管理员ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_ad_tracking_links_code (code),
|
|
KEY idx_ad_tracking_links_status (status),
|
|
KEY idx_ad_tracking_links_channel (channel_type),
|
|
KEY idx_ad_tracking_links_created (created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='广告与推广追踪链接';
|
|
|
|
CREATE TABLE ad_tracking_clicks (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
link_id BIGINT UNSIGNED NOT NULL COMMENT '推广链接ID',
|
|
code VARCHAR(64) NOT NULL COMMENT '推广短码',
|
|
ip VARCHAR(64) NOT NULL DEFAULT '' COMMENT '访问客户端IP',
|
|
user_agent VARCHAR(512) NOT NULL DEFAULT '' COMMENT '客户端UA',
|
|
device_type VARCHAR(32) NOT NULL DEFAULT 'unknown' COMMENT '设备类型: pc/mobile/tablet/unknown',
|
|
os VARCHAR(32) NOT NULL DEFAULT 'unknown' COMMENT '操作系统',
|
|
browser VARCHAR(32) NOT NULL DEFAULT 'unknown' COMMENT '浏览器',
|
|
referer VARCHAR(512) NOT NULL DEFAULT '' COMMENT '来源Referer',
|
|
visitor_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '访客终端唯一ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
KEY idx_ad_tracking_clicks_link_created (link_id, created_at),
|
|
KEY idx_ad_tracking_clicks_code_created (code, created_at),
|
|
KEY idx_ad_tracking_clicks_ip_created (ip, created_at),
|
|
KEY idx_ad_tracking_clicks_visitor (visitor_id, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推广链接跳转点击流水';
|
|
|
|
ALTER TABLE users ADD COLUMN register_track_code VARCHAR(64) NULL DEFAULT NULL COMMENT '注册来源推广短码';
|
|
ALTER TABLE users ADD KEY idx_users_register_track_code (register_track_code);
|
|
|
|
ALTER TABLE rental_orders ADD COLUMN source_track_code VARCHAR(64) NULL DEFAULT NULL COMMENT '订单来源推广短码';
|
|
ALTER TABLE rental_orders ADD KEY idx_rental_orders_source_track_code (source_track_code);
|
|
|
|
INSERT INTO permissions (code, name, resource, action) VALUES
|
|
('ad_tracking:manage', '管理推广链接与数据追踪', 'ad_tracking', 'manage')
|
|
ON DUPLICATE KEY UPDATE
|
|
name = VALUES(name),
|
|
resource = VALUES(resource),
|
|
action = VALUES(action);
|
|
|
|
INSERT IGNORE INTO role_permissions (role_id, permission_id)
|
|
SELECT r.id, p.id FROM roles r, permissions p
|
|
WHERE r.code IN ('super_admin', 'operator') AND p.code = 'ad_tracking:manage';
|
|
|
|
-- +goose Down
|
|
|
|
DELETE rp FROM role_permissions rp
|
|
JOIN permissions p ON p.id = rp.permission_id
|
|
WHERE p.code = 'ad_tracking:manage';
|
|
|
|
DELETE FROM permissions WHERE code = 'ad_tracking:manage';
|
|
|
|
ALTER TABLE rental_orders DROP KEY idx_rental_orders_source_track_code;
|
|
ALTER TABLE rental_orders DROP COLUMN source_track_code;
|
|
|
|
ALTER TABLE users DROP KEY idx_users_register_track_code;
|
|
ALTER TABLE users DROP COLUMN register_track_code;
|
|
|
|
DROP TABLE IF EXISTS ad_tracking_clicks;
|
|
DROP TABLE IF EXISTS ad_tracking_links;
|