601 lines
30 KiB
SQL
601 lines
30 KiB
SQL
-- ============================================================================
|
||
-- 流量池系统 V2 数据库迁移脚本
|
||
-- 版本: V2.0
|
||
-- 日期: 2026-01-30
|
||
-- 说明:
|
||
-- 1. 将旧流量池表重命名为 _v1 后缀(保留历史数据)
|
||
-- 2. 创建全新的流量池表结构
|
||
-- 3. 标签系统由独立系统维护,本脚本不包含标签相关表
|
||
-- ============================================================================
|
||
|
||
-- ============================================================================
|
||
-- 第一部分:旧表重命名(添加 _v1 后缀标识)
|
||
-- ============================================================================
|
||
|
||
-- 重命名前先检查表是否存在,避免报错
|
||
-- 旧流量池总表 → ck_traffic_pool_v1
|
||
RENAME TABLE `ck_traffic_pool` TO `ck_traffic_pool_v1`;
|
||
|
||
-- 旧流量来源表 → ck_traffic_source_v1
|
||
RENAME TABLE `ck_traffic_source` TO `ck_traffic_source_v1`;
|
||
|
||
-- 旧流量池包表 → ck_traffic_source_package_v1
|
||
RENAME TABLE `ck_traffic_source_package` TO `ck_traffic_source_package_v1`;
|
||
|
||
-- 旧流量池包成员表 → ck_traffic_source_package_item_v1
|
||
RENAME TABLE `ck_traffic_source_package_item` TO `ck_traffic_source_package_item_v1`;
|
||
|
||
-- 旧流量标签表 → ck_traffic_tag_v1
|
||
RENAME TABLE `ck_traffic_tag` TO `ck_traffic_tag_v1`;
|
||
|
||
-- 旧流量用户信息表 → ck_traffic_profile_v1
|
||
RENAME TABLE `ck_traffic_profile` TO `ck_traffic_profile_v1`;
|
||
|
||
-- 旧流量订单表 → ck_traffic_order_v1
|
||
RENAME TABLE `ck_traffic_order` TO `ck_traffic_order_v1`;
|
||
|
||
|
||
-- ============================================================================
|
||
-- 第二部分:创建新流量池表
|
||
-- ============================================================================
|
||
|
||
-- ----------------------------
|
||
-- 1. 流量池总表 ck_traffic_pool
|
||
-- 用途:存储全局唯一的流量标识,不区分公司
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool`;
|
||
CREATE TABLE `ck_traffic_pool` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量唯一标识(微信ID优先)',
|
||
`identifierType` tinyint(2) NOT NULL DEFAULT 1 COMMENT '标识类型:1=微信ID,2=微信号,3=手机号',
|
||
`wechatId` varchar(64) DEFAULT NULL COMMENT '微信ID',
|
||
`wechatAlias` varchar(64) DEFAULT NULL COMMENT '微信号',
|
||
`mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||
`nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
|
||
`avatar` varchar(500) DEFAULT NULL COMMENT '头像URL',
|
||
`gender` tinyint(1) DEFAULT 0 COMMENT '性别:0=未知,1=男,2=女',
|
||
`region` varchar(100) DEFAULT NULL COMMENT '地区',
|
||
`country` varchar(50) DEFAULT NULL COMMENT '国家',
|
||
`province` varchar(50) DEFAULT NULL COMMENT '省份',
|
||
`city` varchar(50) DEFAULT NULL COMMENT '城市',
|
||
`signature` varchar(500) DEFAULT NULL COMMENT '个性签名',
|
||
`firstSeenTime` int(11) DEFAULT NULL COMMENT '首次出现时间',
|
||
`lastSeenTime` int(11) DEFAULT NULL COMMENT '最后活跃时间',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_identifier` (`identifier`),
|
||
KEY `idx_wechatId` (`wechatId`),
|
||
KEY `idx_wechatAlias` (`wechatAlias`),
|
||
KEY `idx_mobile` (`mobile`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池总表(全局唯一)';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 2. 公司流量详情表 ck_traffic_pool_company
|
||
-- 用途:存储流量在各公司的详细信息,支持多租户
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_company`;
|
||
CREATE TABLE `ck_traffic_pool_company` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`poolId` int(11) UNSIGNED NOT NULL COMMENT '流量池总表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
|
||
-- 归属信息
|
||
`ownerWechatId` varchar(64) DEFAULT NULL COMMENT '归属客服微信ID',
|
||
`ownerAccountId` int(11) DEFAULT NULL COMMENT '归属客服账号ID(s2_wechat_account.id)',
|
||
`ownerUserId` int(11) DEFAULT NULL COMMENT '归属操盘手ID',
|
||
|
||
-- 好友关联
|
||
`wechatFriendId` int(11) DEFAULT NULL COMMENT '微信好友ID(s2_wechat_friend.id)',
|
||
`friendStatus` tinyint(2) DEFAULT 0 COMMENT '好友状态:0=未加,1=待通过,2=已通过,3=已删除,4=被删除',
|
||
`friendPassTime` int(11) DEFAULT NULL COMMENT '好友通过时间',
|
||
|
||
-- 客户属性
|
||
`realName` varchar(50) DEFAULT NULL COMMENT '真实姓名',
|
||
`idCard` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||
`birthday` date DEFAULT NULL COMMENT '生日',
|
||
`address` varchar(255) DEFAULT NULL COMMENT '地址',
|
||
`company` varchar(100) DEFAULT NULL COMMENT '所在公司',
|
||
`position` varchar(50) DEFAULT NULL COMMENT '职位',
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||
`customFields` json DEFAULT NULL COMMENT '自定义字段',
|
||
|
||
-- 客户等级
|
||
`level` tinyint(2) DEFAULT 0 COMMENT '客户等级:0=普通,1=重要,2=VIP',
|
||
`intentionLevel` tinyint(2) DEFAULT 0 COMMENT '意向度:0=未知,1=低,2=中,3=高',
|
||
|
||
-- RFM模型
|
||
`lastInteractTime` int(11) DEFAULT NULL COMMENT '最后互动时间戳(R值动态计算)',
|
||
`rfmF` int(11) DEFAULT 0 COMMENT 'F值-互动频次',
|
||
`rfmM` decimal(12,2) DEFAULT 0.00 COMMENT 'M值-消费金额',
|
||
`rfmScore` int(11) DEFAULT 0 COMMENT 'RFM综合评分',
|
||
`rfmType` varchar(20) DEFAULT NULL COMMENT 'RFM客户类型',
|
||
|
||
-- 统计信息
|
||
`totalOrderCount` int(11) DEFAULT 0 COMMENT '累计订单数',
|
||
`totalOrderAmount` decimal(12,2) DEFAULT 0.00 COMMENT '累计订单金额',
|
||
`lastOrderTime` int(11) DEFAULT NULL COMMENT '最后下单时间',
|
||
`totalMsgCount` int(11) DEFAULT 0 COMMENT '累计消息数',
|
||
`lastMsgTime` int(11) DEFAULT NULL COMMENT '最后消息时间',
|
||
|
||
-- 来源追溯
|
||
`firstSourceType` tinyint(2) DEFAULT NULL COMMENT '首次来源类型',
|
||
`firstSourceTime` int(11) DEFAULT NULL COMMENT '首次来源时间',
|
||
|
||
-- 生命周期
|
||
`lifecycle` tinyint(2) DEFAULT 1 COMMENT '生命周期:1=新流量,2=跟进中,3=已成交,4=沉默,5=流失',
|
||
|
||
-- 状态管理
|
||
`status` tinyint(2) DEFAULT 1 COMMENT '状态:0=禁用,1=正常,2=黑名单',
|
||
`allocateStatus` tinyint(2) DEFAULT 0 COMMENT '分配状态:0=未分配,1=已分配,2=已回收',
|
||
`allocateTime` int(11) DEFAULT NULL COMMENT '分配时间',
|
||
`expireTime` int(11) DEFAULT NULL COMMENT '到期时间',
|
||
|
||
-- 时间戳
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_identifier_company` (`identifier`, `companyId`),
|
||
KEY `idx_poolId` (`poolId`),
|
||
KEY `idx_companyId` (`companyId`),
|
||
KEY `idx_ownerWechatId` (`ownerWechatId`),
|
||
KEY `idx_wechatFriendId` (`wechatFriendId`),
|
||
KEY `idx_friendStatus` (`friendStatus`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_level` (`level`),
|
||
KEY `idx_allocateStatus` (`allocateStatus`),
|
||
KEY `idx_lifecycle` (`lifecycle`),
|
||
KEY `idx_lastInteractTime` (`lastInteractTime`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公司流量详情表(多租户)';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 3. 流量池分组表 ck_traffic_pool_group
|
||
-- 用途:管理流量池分组(如:高价值客户池、潜在客户池等)
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_group`;
|
||
CREATE TABLE `ck_traffic_pool_group` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID(0=系统默认)',
|
||
`groupCode` varchar(50) NOT NULL COMMENT '分组编码(唯一标识)',
|
||
`groupName` varchar(50) NOT NULL COMMENT '分组名称',
|
||
`groupIcon` varchar(255) DEFAULT NULL COMMENT '分组图标',
|
||
`groupColor` varchar(20) DEFAULT NULL COMMENT '分组颜色',
|
||
`description` varchar(255) DEFAULT NULL COMMENT '分组描述',
|
||
`isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认:0=否,1=是',
|
||
`isDefault` tinyint(1) DEFAULT 0 COMMENT '是否默认展示:0=否,1=是',
|
||
`ruleType` tinyint(2) DEFAULT 1 COMMENT '规则类型:1=动态规则,2=手动添加',
|
||
`ruleConfig` json DEFAULT NULL COMMENT '规则配置(JSON)',
|
||
`memberCount` int(11) DEFAULT 0 COMMENT '成员数量(缓存)',
|
||
`sort` int(11) DEFAULT 0 COMMENT '排序(数值越小越靠前)',
|
||
`status` tinyint(1) DEFAULT 1 COMMENT '状态:0=禁用,1=启用',
|
||
`userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_company_code` (`companyId`, `groupCode`),
|
||
KEY `idx_companyId` (`companyId`),
|
||
KEY `idx_isSystem` (`isSystem`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_sort` (`sort`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池分组表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 4. 流量池分组成员表 ck_traffic_pool_group_member
|
||
-- 用途:手动添加到分组的成员(ruleType=2时使用)
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_group_member`;
|
||
CREATE TABLE `ck_traffic_pool_group_member` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`groupId` int(11) UNSIGNED NOT NULL COMMENT '分组ID',
|
||
`poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
`addType` tinyint(2) DEFAULT 1 COMMENT '添加方式:1=手动,2=批量导入',
|
||
`operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_group_pool` (`groupId`, `poolCompanyId`),
|
||
KEY `idx_companyId` (`companyId`),
|
||
KEY `idx_identifier` (`identifier`),
|
||
KEY `idx_groupId` (`groupId`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量池分组成员表(手动添加)';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 5. 流量来源表 ck_traffic_pool_source
|
||
-- 用途:记录流量的获取渠道和来源路径
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_source`;
|
||
CREATE TABLE `ck_traffic_pool_source` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
|
||
-- 来源类型
|
||
`sourceType` tinyint(2) NOT NULL COMMENT '来源类型:1=好友添加,2=群成员,3=海报获客,4=电话获客,5=订单获客,6=API导入,7=手动导入,8=裂变活动',
|
||
`sourceSubType` varchar(50) DEFAULT NULL COMMENT '来源子类型',
|
||
|
||
-- 来源详情
|
||
`sourceId` varchar(100) DEFAULT NULL COMMENT '来源ID',
|
||
`sourceName` varchar(255) DEFAULT NULL COMMENT '来源名称',
|
||
`sourceWechatId` varchar(64) DEFAULT NULL COMMENT '来源微信ID',
|
||
`sourceChatroomId` varchar(64) DEFAULT NULL COMMENT '来源群ID',
|
||
`sourceSceneId` int(11) DEFAULT NULL COMMENT '来源场景ID',
|
||
`sourceChannelId` int(11) DEFAULT NULL COMMENT '来源渠道ID',
|
||
|
||
-- 关联任务
|
||
`friendTaskId` int(11) DEFAULT NULL COMMENT '加好友任务ID',
|
||
`taskCustomerId` int(11) DEFAULT NULL COMMENT '获客任务客户ID',
|
||
|
||
-- 状态
|
||
`isFirstSource` tinyint(1) DEFAULT 0 COMMENT '是否首次来源:0=否,1=是',
|
||
`extra` json DEFAULT NULL COMMENT '额外信息',
|
||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_poolCompanyId` (`poolCompanyId`),
|
||
KEY `idx_identifier_company` (`identifier`, `companyId`),
|
||
KEY `idx_sourceType` (`sourceType`),
|
||
KEY `idx_sourceWechatId` (`sourceWechatId`),
|
||
KEY `idx_sourceChatroomId` (`sourceChatroomId`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量来源记录表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 6. 流量行为表 ck_traffic_pool_behavior
|
||
-- 用途:记录流量的各种行为(包括所有消息互动)
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_behavior`;
|
||
CREATE TABLE `ck_traffic_pool_behavior` (
|
||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
|
||
-- 行为信息
|
||
`behaviorType` tinyint(2) NOT NULL COMMENT '行为类型:1=发送消息,2=接收消息,3=浏览,4=点击,5=咨询,6=下单,7=支付,8=退款,9=点赞朋友圈,10=评论朋友圈',
|
||
`behaviorSubType` varchar(50) DEFAULT NULL COMMENT '行为子类型',
|
||
`behaviorName` varchar(100) DEFAULT NULL COMMENT '行为名称',
|
||
|
||
-- 行为详情
|
||
`targetType` varchar(50) DEFAULT NULL COMMENT '目标类型',
|
||
`targetId` varchar(100) DEFAULT NULL COMMENT '目标ID',
|
||
`targetName` varchar(255) DEFAULT NULL COMMENT '目标名称',
|
||
`amount` decimal(12,2) DEFAULT 0.00 COMMENT '金额',
|
||
|
||
-- 关联信息(只记录ID,通过ID关联查询详情)
|
||
`wechatAccountId` int(11) DEFAULT NULL COMMENT '客服微信账号ID',
|
||
`messageId` bigint(20) DEFAULT NULL COMMENT '消息ID(关联s2_wechat_message.id)',
|
||
`momentsId` int(11) DEFAULT NULL COMMENT '朋友圈ID(关联s2_wechat_moments.id)',
|
||
`orderId` varchar(50) DEFAULT NULL COMMENT '订单号',
|
||
`extra` json DEFAULT NULL COMMENT '额外信息',
|
||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||
`behaviorTime` int(11) NOT NULL COMMENT '行为时间',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_poolCompanyId` (`poolCompanyId`),
|
||
KEY `idx_identifier_company` (`identifier`, `companyId`),
|
||
KEY `idx_behaviorType` (`behaviorType`),
|
||
KEY `idx_behaviorTime` (`behaviorTime`),
|
||
KEY `idx_messageId` (`messageId`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量行为记录表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 7. 流量分配记录表 ck_traffic_pool_allot_record
|
||
-- 用途:记录流量的分配历史
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_allot_record`;
|
||
CREATE TABLE `ck_traffic_pool_allot_record` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
|
||
-- 分配信息
|
||
`allotType` tinyint(2) DEFAULT 1 COMMENT '分配类型:1=首次分配,2=重新分配,3=回收后分配',
|
||
`allotRuleId` int(11) DEFAULT NULL COMMENT '分配规则ID',
|
||
|
||
-- 分配前
|
||
`fromWechatId` varchar(64) DEFAULT NULL COMMENT '原归属客服微信ID',
|
||
`fromAccountId` int(11) DEFAULT NULL COMMENT '原归属账号ID',
|
||
`fromUserId` int(11) DEFAULT NULL COMMENT '原归属操盘手ID',
|
||
|
||
-- 分配后
|
||
`toWechatId` varchar(64) NOT NULL COMMENT '新归属客服微信ID',
|
||
`toAccountId` int(11) DEFAULT NULL COMMENT '新归属账号ID',
|
||
`toUserId` int(11) DEFAULT NULL COMMENT '新归属操盘手ID',
|
||
|
||
-- 有效期
|
||
`expireDays` int(11) DEFAULT 30 COMMENT '有效期(天)',
|
||
`expireTime` int(11) DEFAULT NULL COMMENT '到期时间',
|
||
`status` tinyint(2) DEFAULT 1 COMMENT '状态:1=生效中,2=已过期,3=已回收',
|
||
`operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
|
||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_poolCompanyId` (`poolCompanyId`),
|
||
KEY `idx_identifier_company` (`identifier`, `companyId`),
|
||
KEY `idx_toWechatId` (`toWechatId`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_expireTime` (`expireTime`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量分配记录表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 8. 标签类目表 ck_traffic_pool_tag_category
|
||
-- 用途:管理标签的类目/分组,支持多级分类
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_tag_category`;
|
||
CREATE TABLE `ck_traffic_pool_tag_category` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID(0=系统默认)',
|
||
`parentId` int(11) UNSIGNED DEFAULT 0 COMMENT '父类目ID(0=顶级类目)',
|
||
`tagType` tinyint(2) NOT NULL COMMENT '标签类型:1=微信标签,2=站内标签,3=AI标签',
|
||
`categoryCode` varchar(50) NOT NULL COMMENT '类目编码',
|
||
`categoryName` varchar(50) NOT NULL COMMENT '类目名称',
|
||
`categoryIcon` varchar(255) DEFAULT NULL COMMENT '类目图标',
|
||
`categoryColor` varchar(20) DEFAULT NULL COMMENT '类目颜色',
|
||
`description` varchar(255) DEFAULT NULL COMMENT '类目描述',
|
||
`isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认:0=否,1=是',
|
||
`sort` int(11) DEFAULT 0 COMMENT '排序(数值越小越靠前)',
|
||
`status` tinyint(1) DEFAULT 1 COMMENT '状态:0=禁用,1=启用',
|
||
`userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_company_code` (`companyId`, `categoryCode`),
|
||
KEY `idx_companyId` (`companyId`),
|
||
KEY `idx_parentId` (`parentId`),
|
||
KEY `idx_tagType` (`tagType`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_sort` (`sort`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签类目表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 9. 标签定义表 ck_traffic_pool_tag_define
|
||
-- 用途:定义具体的标签
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_tag_define`;
|
||
CREATE TABLE `ck_traffic_pool_tag_define` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`companyId` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '公司ID(0=系统默认)',
|
||
`categoryId` int(11) UNSIGNED DEFAULT 0 COMMENT '所属类目ID',
|
||
`tagType` tinyint(2) NOT NULL COMMENT '标签类型:1=微信标签,2=站内标签,3=AI标签',
|
||
`tagCode` varchar(50) NOT NULL COMMENT '标签编码',
|
||
`tagName` varchar(50) NOT NULL COMMENT '标签名称',
|
||
`tagIcon` varchar(255) DEFAULT NULL COMMENT '标签图标',
|
||
`tagColor` varchar(20) DEFAULT NULL COMMENT '标签颜色',
|
||
`description` varchar(255) DEFAULT NULL COMMENT '标签描述',
|
||
`isSystem` tinyint(1) DEFAULT 0 COMMENT '是否系统默认:0=否,1=是',
|
||
`isExclusive` tinyint(1) DEFAULT 0 COMMENT '是否互斥标签:0=否,1=是(同类目下只能选一个)',
|
||
`sort` int(11) DEFAULT 0 COMMENT '排序(数值越小越靠前)',
|
||
`status` tinyint(1) DEFAULT 1 COMMENT '状态:0=禁用,1=启用',
|
||
`useCount` int(11) DEFAULT 0 COMMENT '使用次数(缓存)',
|
||
`syncFromWechat` tinyint(1) DEFAULT 0 COMMENT '是否来自微信同步:0=否,1=是',
|
||
`userId` int(11) DEFAULT NULL COMMENT '创建用户ID',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_company_code` (`companyId`, `tagCode`),
|
||
KEY `idx_companyId` (`companyId`),
|
||
KEY `idx_categoryId` (`categoryId`),
|
||
KEY `idx_tagType` (`tagType`),
|
||
KEY `idx_tagName` (`tagName`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_sort` (`sort`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签定义表';
|
||
|
||
|
||
-- ----------------------------
|
||
-- 10. 流量标签关联表 ck_traffic_pool_tag
|
||
-- 用途:记录流量与标签的关联关系
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `ck_traffic_pool_tag`;
|
||
CREATE TABLE `ck_traffic_pool_tag` (
|
||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`poolCompanyId` int(11) UNSIGNED NOT NULL COMMENT '公司流量详情表ID',
|
||
`identifier` varchar(64) NOT NULL COMMENT '流量标识(冗余)',
|
||
`companyId` int(11) UNSIGNED NOT NULL COMMENT '公司ID',
|
||
|
||
-- 标签信息
|
||
`tagDefineId` int(11) UNSIGNED NOT NULL COMMENT '标签定义ID',
|
||
`tagType` tinyint(2) NOT NULL COMMENT '标签类型:1=微信标签,2=站内标签,3=AI标签',
|
||
`categoryId` int(11) UNSIGNED DEFAULT 0 COMMENT '类目ID(冗余)',
|
||
`tagName` varchar(50) NOT NULL COMMENT '标签名称(冗余,方便查询)',
|
||
`tagValue` varchar(255) DEFAULT NULL COMMENT '标签值(部分标签需要值,如:消费金额=1000)',
|
||
|
||
-- 来源信息
|
||
`source` tinyint(2) DEFAULT 1 COMMENT '打标来源:1=手动,2=规则自动,3=AI自动,4=微信同步',
|
||
`sourceId` varchar(100) DEFAULT NULL COMMENT '来源ID(规则ID/AI任务ID等)',
|
||
`sourceRemark` varchar(255) DEFAULT NULL COMMENT '来源备注',
|
||
|
||
-- 操作信息
|
||
`operatorId` int(11) DEFAULT NULL COMMENT '操作人ID',
|
||
`score` decimal(5,2) DEFAULT NULL COMMENT 'AI标签置信度(0-100,仅AI标签使用)',
|
||
`expireTime` int(11) DEFAULT NULL COMMENT '过期时间(部分标签有时效性)',
|
||
`createTime` int(11) NOT NULL COMMENT '创建时间',
|
||
`updateTime` int(11) DEFAULT NULL COMMENT '更新时间',
|
||
`isDel` tinyint(1) DEFAULT 0 COMMENT '是否删除',
|
||
`deleteTime` int(11) DEFAULT NULL COMMENT '删除时间',
|
||
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_pool_tag` (`poolCompanyId`, `tagDefineId`),
|
||
KEY `idx_identifier_company` (`identifier`, `companyId`),
|
||
KEY `idx_tagDefineId` (`tagDefineId`),
|
||
KEY `idx_tagType` (`tagType`),
|
||
KEY `idx_categoryId` (`categoryId`),
|
||
KEY `idx_tagName` (`tagName`),
|
||
KEY `idx_createTime` (`createTime`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流量标签关联表';
|
||
|
||
|
||
-- ============================================================================
|
||
-- 第三部分:初始化系统默认数据
|
||
-- ============================================================================
|
||
|
||
-- ----------------------------
|
||
-- 初始化系统默认流量池分组
|
||
-- ----------------------------
|
||
INSERT INTO `ck_traffic_pool_group`
|
||
(`companyId`, `groupCode`, `groupName`, `description`, `isSystem`, `isDefault`, `ruleType`, `ruleConfig`, `sort`, `status`, `createTime`)
|
||
VALUES
|
||
-- 全部好友流量池
|
||
(0, 'all_friends', '全部好友流量池', '所有已添加的好友', 1, 1, 1,
|
||
'{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"}]}',
|
||
1, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 高价值客户池:已通过好友 AND (消费>=1000 OR 等级=VIP)
|
||
(0, 'high_value', '高价值客户池', '消费金额高的客户', 1, 0, 1,
|
||
'{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"group","logic":"OR","conditions":[{"type":"field","field":"rfmM","operator":">=","value":1000,"valueType":"number"},{"type":"field","field":"level","operator":"=","value":2,"valueType":"number"}]}]}',
|
||
2, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 潜在客户池:已通过好友 AND 意向度>=中 AND 订单数=0
|
||
(0, 'potential', '潜在客户池', '有意向但未成交的客户', 1, 0, 1,
|
||
'{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"intentionLevel","operator":">=","value":2,"valueType":"number"},{"type":"field","field":"totalOrderCount","operator":"=","value":0,"valueType":"number"}]}',
|
||
3, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 高互动客户池:已通过好友 AND 消息数>=50
|
||
(0, 'high_interact', '高互动客户池', '互动频繁的客户', 1, 0, 1,
|
||
'{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"totalMsgCount","operator":">=","value":50,"valueType":"number"}]}',
|
||
4, 1, UNIX_TIMESTAMP());
|
||
|
||
|
||
-- ----------------------------
|
||
-- 初始化系统默认标签类目
|
||
-- ----------------------------
|
||
INSERT INTO `ck_traffic_pool_tag_category`
|
||
(`companyId`, `parentId`, `tagType`, `categoryCode`, `categoryName`, `description`, `isSystem`, `sort`, `status`, `createTime`)
|
||
VALUES
|
||
-- 微信标签类目(tagType=1)
|
||
(0, 0, 1, 'wechat_default', '微信默认标签', '从微信同步的标签', 1, 1, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 站内标签类目(tagType=2)
|
||
(0, 0, 2, 'customer_level', '客户等级', '普通/重要/VIP', 1, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 2, 'customer_intention', '客户意向', '低意向/中意向/高意向', 1, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 2, 'customer_stage', '客户阶段', '新客户/跟进中/已成交/已流失', 1, 3, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 2, 'customer_source', '客户来源', '海报/电话/群聊/好友推荐等', 1, 4, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 2, 'customer_industry', '所属行业', '行业分类标签', 1, 5, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 2, 'customer_preference', '客户偏好', '产品偏好/服务偏好等', 1, 6, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- AI标签类目(tagType=3)
|
||
(0, 0, 3, 'ai_portrait', 'AI画像标签', 'AI分析的用户画像', 1, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 3, 'ai_behavior', 'AI行为标签', 'AI分析的行为特征', 1, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 0, 3, 'ai_prediction', 'AI预测标签', 'AI预测的标签(如:高转化潜力)', 1, 3, 1, UNIX_TIMESTAMP());
|
||
|
||
|
||
-- ----------------------------
|
||
-- 初始化系统默认标签定义
|
||
-- ----------------------------
|
||
INSERT INTO `ck_traffic_pool_tag_define`
|
||
(`companyId`, `categoryId`, `tagType`, `tagCode`, `tagName`, `description`, `isSystem`, `isExclusive`, `sort`, `status`, `createTime`)
|
||
VALUES
|
||
-- 客户等级标签(categoryId 需要根据实际插入后的ID调整,这里假设为2)
|
||
(0, 2, 2, 'level_normal', '普通客户', '普通等级客户', 1, 1, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 2, 2, 'level_important', '重要客户', '重要等级客户', 1, 1, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 2, 2, 'level_vip', 'VIP客户', 'VIP等级客户', 1, 1, 3, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 客户意向标签(categoryId=3)
|
||
(0, 3, 2, 'intention_low', '低意向', '购买意向较低', 1, 1, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 3, 2, 'intention_medium', '中意向', '购买意向一般', 1, 1, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 3, 2, 'intention_high', '高意向', '购买意向较高', 1, 1, 3, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 客户阶段标签(categoryId=4)
|
||
(0, 4, 2, 'stage_new', '新客户', '新进入的客户', 1, 1, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 4, 2, 'stage_following', '跟进中', '正在跟进的客户', 1, 1, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 4, 2, 'stage_converted', '已成交', '已经成交的客户', 1, 1, 3, 1, UNIX_TIMESTAMP()),
|
||
(0, 4, 2, 'stage_lost', '已流失', '已流失的客户', 1, 1, 4, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- 客户来源标签(categoryId=5)
|
||
(0, 5, 2, 'source_poster', '海报获客', '通过海报获取的客户', 1, 0, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 5, 2, 'source_phone', '电话获客', '通过电话获取的客户', 1, 0, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 5, 2, 'source_group', '群聊获客', '通过群聊获取的客户', 1, 0, 3, 1, UNIX_TIMESTAMP()),
|
||
(0, 5, 2, 'source_referral', '好友推荐', '通过好友推荐的客户', 1, 0, 4, 1, UNIX_TIMESTAMP()),
|
||
(0, 5, 2, 'source_api', 'API导入', '通过API导入的客户', 1, 0, 5, 1, UNIX_TIMESTAMP()),
|
||
|
||
-- AI预测标签(categoryId=10)
|
||
(0, 10, 3, 'ai_high_potential', '高转化潜力', 'AI预测的高转化潜力客户', 1, 0, 1, 1, UNIX_TIMESTAMP()),
|
||
(0, 10, 3, 'ai_churn_risk', '流失风险', 'AI预测的有流失风险客户', 1, 0, 2, 1, UNIX_TIMESTAMP()),
|
||
(0, 10, 3, 'ai_active', '活跃用户', 'AI分析的活跃用户', 1, 0, 3, 1, UNIX_TIMESTAMP());
|
||
|
||
|
||
-- ============================================================================
|
||
-- 第四部分:修改工作台配置表中流量池相关字段的注释(可选)
|
||
-- ============================================================================
|
||
|
||
-- 如果需要更新工作台配置表的字段注释,可以执行以下语句
|
||
-- ALTER TABLE `ck_workbench_traffic_config`
|
||
-- MODIFY COLUMN `pools` json DEFAULT NULL COMMENT '流量池分组ID数组(关联ck_traffic_pool_group.id)';
|
||
|
||
-- ALTER TABLE `ck_workbench_import_contact`
|
||
-- MODIFY COLUMN `pools` json DEFAULT NULL COMMENT '流量池分组ID数组(关联ck_traffic_pool_group.id)';
|
||
|
||
-- ALTER TABLE `ck_workbench_group_create`
|
||
-- MODIFY COLUMN `poolGroups` json DEFAULT NULL COMMENT '流量池分组ID数组(关联ck_traffic_pool_group.id)';
|
||
|
||
|
||
-- ============================================================================
|
||
-- 完成提示
|
||
-- ============================================================================
|
||
-- 执行完成后,旧表已重命名为 xxx_v1 后缀,新表已创建完成
|
||
--
|
||
-- 旧表(已重命名):
|
||
-- - ck_traffic_pool_v1
|
||
-- - ck_traffic_source_v1
|
||
-- - ck_traffic_source_package_v1
|
||
-- - ck_traffic_source_package_item_v1
|
||
-- - ck_traffic_tag_v1
|
||
-- - ck_traffic_profile_v1
|
||
-- - ck_traffic_order_v1
|
||
--
|
||
-- 新表(共10张):
|
||
-- - ck_traffic_pool (流量池总表)
|
||
-- - ck_traffic_pool_company (公司流量详情表)
|
||
-- - ck_traffic_pool_group (流量池分组表)
|
||
-- - ck_traffic_pool_group_member (流量池分组成员表)
|
||
-- - ck_traffic_pool_source (流量来源记录表)
|
||
-- - ck_traffic_pool_behavior (流量行为记录表)
|
||
-- - ck_traffic_pool_allot_record (流量分配记录表)
|
||
-- - ck_traffic_pool_tag_category (标签类目表)
|
||
-- - ck_traffic_pool_tag_define (标签定义表)
|
||
-- - ck_traffic_pool_tag (流量标签关联表)
|
||
--
|
||
-- 初始化数据:
|
||
-- - 4条系统默认流量池分组
|
||
-- - 10条系统默认标签类目(微信1条、站内6条、AI3条)
|
||
-- - 18条系统默认标签定义
|
||
-- ============================================================================
|