-- ============================================ -- 代理短链表 -- 说明:存储推广链接和邀请链接的短链映射关系 -- -- 功能说明: -- 1. 支持两种类型:promotion(推广报告)和 invite(邀请好友) -- 2. 为每个链接生成一个短链标识(6位随机字符串) -- 3. 短链格式:https://推广域名/s/{short_code} -- 4. 短链重定向到前端传入的target_path -- -- 执行步骤: -- 1. 执行此 SQL 创建表 -- 2. 使用 goctl 生成 Model:agent_short_link -> AgentShortLinkModel -- 3. 在 servicecontext.go 中添加 AgentShortLinkModel -- ============================================ CREATE TABLE `agent_short_link` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `type` tinyint NOT NULL COMMENT '类型:1=推广报告(promotion),2=邀请好友(invite)', `link_id` bigint DEFAULT NULL COMMENT '推广链接ID(关联agent_link表,仅推广报告类型使用)', `invite_code_id` bigint DEFAULT NULL COMMENT '邀请码ID(关联agent_invite_code表,仅邀请好友类型使用)', `link_identifier` varchar(200) DEFAULT NULL COMMENT '推广链接标识(加密,仅推广报告类型使用)', `invite_code` varchar(50) DEFAULT NULL COMMENT '邀请码(仅邀请好友类型使用)', `short_code` varchar(20) NOT NULL COMMENT '短链标识(6位随机字符串)', `target_path` varchar(500) NOT NULL COMMENT '目标地址(前端传入,如:/agent/promotionInquire/xxx 或 /register?invite_code=xxx)', `promotion_domain` varchar(200) NOT NULL COMMENT '推广域名(生成短链时使用的域名)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `del_state` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态:0=未删除,1=已删除', `version` bigint NOT NULL DEFAULT 0 COMMENT '版本号(乐观锁)', PRIMARY KEY (`id`), UNIQUE KEY `uk_short_code` (`short_code`, `del_state`) COMMENT '短链标识唯一索引', UNIQUE KEY `uk_link_id_type` ( `link_id`, `type`, `del_state` ) COMMENT '同一推广链接同一类型只能有一个有效短链', UNIQUE KEY `uk_invite_code_id_type` ( `invite_code_id`, `type`, `del_state` ) COMMENT '同一邀请码同一类型只能有一个有效短链', KEY `idx_link_identifier` (`link_identifier`) COMMENT '推广链接标识索引', KEY `idx_invite_code` (`invite_code`) COMMENT '邀请码索引', KEY `idx_type` (`type`) COMMENT '类型索引', KEY `idx_create_time` (`create_time`) COMMENT '创建时间索引' ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代理短链表';