Merge branch 'main' into feature/distribution-system
合入 main 的推广追踪(adtracking)模块,并解决与分销业务的 8 处冲突。 冲突解决原则:两边的字段、菜单与路由全部保留,不删任何一方。 后端: - model/order.go:保留分销字段注释块,追加 SourceTrackCode - model/user.go:追加 RegisterTrackCode;TokenVersion 默认值保持 1 (与本库 users.token_version 列默认值一致) - auth/repository.go:两处建号结构体同时写入 RegisterTrackCode 与 TokenVersion - order/dto.go:OrderDTO 同时暴露 distribution_site_id 与 source_track_code; CreateRequest 同时接受 distribution_site_code 与 track_code - order/presenter.go:同时映射 DistributionSiteID 与 SourceTrackCode 前端: - orders/api/orders.ts:createOrder 同时携带 distribution_site_code 与 track_code - layouts/AdminLayout.vue:分销管理菜单组与推广追踪菜单组并列保留 - router/adminRoutes.ts:分销 4 条路由与 tracking-links 路由并列保留 迁移:feature 侧 000064-000067 已在前一提交顺延为 000065-000068, 为 main 的 000064_ad_tracking 让号,合并后编号 000063→000068 连续无重复。
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- +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;
|
||||
Reference in New Issue
Block a user