47 lines
2.8 KiB
SQL
47 lines
2.8 KiB
SQL
-- ============================================
|
||
-- 代理短链表
|
||
-- 说明:存储推广链接和邀请链接的短链映射关系
|
||
--
|
||
-- 功能说明:
|
||
-- 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 = '代理短链表'; |