Files
yunzerwebsiteallinone/sql/yz_backend_crm_pipeline.sql
T

234 lines
16 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- CRM 业务管线:线索 → 商机 → 项目,回访贯穿全流程
-- 对应租户端 backend 页面:/apps/crm/clue、/apps/crm/business、/apps/crm/project、/apps/crm/follow
-- 说明:
-- 1. 线索的「客户名称」暂不关联客户管理(线索阶段尚无价值),
-- 线索转化为商机时才把客户名称落地为正式客户(yz_backend_erp_customer)。
-- 2. 线索转化商机后会被锁定(locked=1),后续操作都在商机进行。
-- 3. 商机转化项目后同样锁定(locked=1)。
-- 4. 回访/跟进记录(yz_tenant_crm_follow)与附件、联系人、操作日志均为通用多态表,
-- 通过 related_type(1线索/2商机/3项目) + related_id 关联。
-- 可重复执行(DROP TABLE IF EXISTS)。
-- =============================================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- -----------------------------------------------------------------------------
-- 线索表
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_clue`;
CREATE TABLE `yz_tenant_crm_clue` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`clue_name` varchar(100) NOT NULL COMMENT '线索名称',
`customer_name` varchar(100) NOT NULL DEFAULT '' COMMENT '客户名称(线索阶段不关联客户管理)',
`source` varchar(50) NOT NULL DEFAULT '' COMMENT '客户来源(1官网咨询/2电话咨询/3朋友介绍/4展会/5广告投放/6陌生拜访/7其他)',
`owner_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '负责人用户ID',
`owner_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '负责人姓名',
`industry` varchar(50) NOT NULL DEFAULT '' COMMENT '客户行业',
`next_contact_time` datetime DEFAULT NULL COMMENT '下次联系时间',
`clue_level` varchar(20) NOT NULL DEFAULT '2' COMMENT '客户级别:1重点/2普通/3非优先',
`contact_person` varchar(50) NOT NULL DEFAULT '' COMMENT '客户对接人',
`contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位',
`contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人手机',
`contact_wechat` varchar(64) NOT NULL DEFAULT '' COMMENT '对接人微信',
`contact_qq` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人QQ',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '公司地址',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1跟进中/2已转化/3已关闭',
`locked` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否锁定:0否/1是(转化后锁定不可编辑)',
`business_id` bigint(20) DEFAULT NULL COMMENT '转化后的商机ID',
`convert_time` datetime DEFAULT NULL COMMENT '转化时间',
`remark` text COMMENT '备注',
`create_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
`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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_clue_name` (`tenant_id`,`clue_name`),
KEY `idx_owner` (`tenant_id`,`owner_user_id`),
KEY `idx_status` (`tenant_id`,`status`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM线索表';
-- -----------------------------------------------------------------------------
-- 商机表
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_business`;
CREATE TABLE `yz_tenant_crm_business` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`business_name` varchar(100) NOT NULL COMMENT '商机名称',
`clue_id` bigint(20) DEFAULT NULL COMMENT '来源线索ID',
`customer_id` bigint(20) DEFAULT NULL COMMENT '正式客户ID(yz_backend_erp_customer.id)',
`customer_name` varchar(100) NOT NULL DEFAULT '' COMMENT '客户名称',
`source` varchar(50) NOT NULL DEFAULT '' COMMENT '客户来源',
`owner_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '负责人用户ID',
`owner_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '负责人姓名',
`industry` varchar(50) NOT NULL DEFAULT '' COMMENT '客户行业',
`stage` varchar(20) NOT NULL DEFAULT '1' COMMENT '商机阶段:1初步接洽/2需求确认/3方案报价/4商务谈判/5赢单/6输单',
`amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '预计金额(元)',
`expect_deal_date` date DEFAULT NULL COMMENT '预计成交日期',
`next_contact_time` datetime DEFAULT NULL COMMENT '下次联系时间',
`level` varchar(20) NOT NULL DEFAULT '2' COMMENT '商机级别:1重点/2普通/3非优先',
`contact_person` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人',
`contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位',
`contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人手机',
`contact_wechat` varchar(64) NOT NULL DEFAULT '' COMMENT '对接人微信',
`contact_qq` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人QQ',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '客户地址',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1跟进中/2已转化项目/3已关闭',
`locked` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否锁定:0否/1是(转化项目后锁定不可编辑)',
`project_id` bigint(20) DEFAULT NULL COMMENT '转化后的项目ID',
`convert_time` datetime DEFAULT NULL COMMENT '转化时间',
`remark` text COMMENT '备注',
`create_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
`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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_business_name` (`tenant_id`,`business_name`),
KEY `idx_clue` (`clue_id`),
KEY `idx_customer` (`customer_id`),
KEY `idx_owner` (`tenant_id`,`owner_user_id`),
KEY `idx_status` (`tenant_id`,`status`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM商机表';
-- -----------------------------------------------------------------------------
-- 项目表
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_project`;
CREATE TABLE `yz_tenant_crm_project` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`project_name` varchar(100) NOT NULL COMMENT '项目名称',
`project_no` varchar(50) NOT NULL DEFAULT '' COMMENT '项目编号',
`business_id` bigint(20) DEFAULT NULL COMMENT '来源商机ID',
`customer_id` bigint(20) DEFAULT NULL COMMENT '客户ID',
`customer_name` varchar(100) NOT NULL DEFAULT '' COMMENT '客户名称',
`owner_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '负责人用户ID',
`owner_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '负责人姓名',
`industry` varchar(50) NOT NULL DEFAULT '' COMMENT '客户行业',
`amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '项目金额(元)',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1未开始/2进行中/3已完成/4已暂停',
`start_date` date DEFAULT NULL COMMENT '开始日期',
`end_date` date DEFAULT NULL COMMENT '结束日期',
`contact_person` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人',
`contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位',
`contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人手机',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '项目地址',
`remark` text COMMENT '备注',
`create_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
`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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_project_name` (`tenant_id`,`project_name`),
KEY `idx_business` (`business_id`),
KEY `idx_owner` (`tenant_id`,`owner_user_id`),
KEY `idx_status` (`tenant_id`,`status`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM项目表';
-- -----------------------------------------------------------------------------
-- 回访/跟进记录表(贯穿线索、商机、项目)
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_follow`;
CREATE TABLE `yz_tenant_crm_follow` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`related_type` tinyint(4) NOT NULL COMMENT '关联类型:1线索/2商机/3项目',
`related_id` bigint(20) NOT NULL COMMENT '关联记录ID',
`related_name` varchar(100) NOT NULL DEFAULT '' COMMENT '关联对象名称(冗余,便于回访列表展示)',
`follow_type` varchar(20) NOT NULL DEFAULT '1' COMMENT '回访方式:1电话/2微信/3上门/4邮件/5其他',
`follow_time` datetime DEFAULT NULL COMMENT '回访时间',
`content` text COMMENT '回访内容',
`next_contact_time` datetime DEFAULT NULL COMMENT '下次联系时间',
`owner_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '回访人用户ID',
`owner_user_name` varchar(128) NOT NULL DEFAULT '' 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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_related` (`tenant_id`,`related_type`,`related_id`),
KEY `idx_follow_time` (`tenant_id`,`follow_time`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM回访/跟进记录表';
-- -----------------------------------------------------------------------------
-- 附件表(多态:线索/商机/项目的资料)
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_attach`;
CREATE TABLE `yz_tenant_crm_attach` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`related_type` tinyint(4) NOT NULL COMMENT '关联类型:1线索/2商机/3项目',
`related_id` bigint(20) NOT NULL COMMENT '关联记录ID',
`file_id` bigint(20) DEFAULT NULL COMMENT '文件ID(yz_system_file.id,可空)',
`file_name` varchar(255) NOT NULL DEFAULT '' COMMENT '文件名',
`file_url` varchar(500) NOT NULL DEFAULT '' COMMENT '文件访问地址',
`file_size` bigint(20) NOT NULL DEFAULT '0' COMMENT '文件大小(字节)',
`uploader_id` varchar(64) NOT NULL DEFAULT '' COMMENT '上传人用户ID',
`uploader_name` varchar(128) NOT NULL DEFAULT '' 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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_related` (`tenant_id`,`related_type`,`related_id`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM附件表';
-- -----------------------------------------------------------------------------
-- 联系人表(多态:线索/商机/项目的对接人列表)
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_entity_contact`;
CREATE TABLE `yz_tenant_crm_entity_contact` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`related_type` tinyint(4) NOT NULL COMMENT '关联类型:1线索/2商机/3项目',
`related_id` bigint(20) NOT NULL COMMENT '关联记录ID',
`contact_name` varchar(50) NOT NULL COMMENT '联系人姓名',
`position` varchar(50) NOT NULL DEFAULT '' COMMENT '职位',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',
`wechat` varchar(64) NOT NULL DEFAULT '' COMMENT '微信',
`qq` varchar(20) NOT NULL DEFAULT '' COMMENT 'QQ',
`email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱',
`is_primary` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否主联系人:0否/1是',
`remark` varchar(500) NOT NULL DEFAULT '' 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 '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_related` (`tenant_id`,`related_type`,`related_id`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM联系人表(线索/商机/项目)';
-- -----------------------------------------------------------------------------
-- 操作日志表(多态:记录线索/商机/项目的关键操作,用于详情页操作日志 Tab)
-- -----------------------------------------------------------------------------
DROP TABLE IF EXISTS `yz_tenant_crm_operate_log`;
CREATE TABLE `yz_tenant_crm_operate_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`tenant_id` varchar(64) NOT NULL COMMENT '租户ID',
`related_type` tinyint(4) NOT NULL COMMENT '关联类型:1线索/2商机/3项目',
`related_id` bigint(20) NOT NULL COMMENT '关联记录ID',
`action` varchar(50) NOT NULL DEFAULT '' COMMENT '操作动作:create/update/convert/delete 等',
`content` varchar(500) NOT NULL DEFAULT '' COMMENT '操作描述',
`operator_id` varchar(64) NOT NULL DEFAULT '' COMMENT '操作人用户ID',
`operator_name` varchar(128) NOT NULL DEFAULT '' COMMENT '操作人姓名',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_related` (`tenant_id`,`related_type`,`related_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM操作日志表';
SET FOREIGN_KEY_CHECKS = 1;