优化线索、商机、项目相关开发
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
-- - 若两表并存,则去重合并进新表,旧表改名为 *_bak 备份保留;
|
||||
-- 3. 迁移历史死表 `yz_tenant_crm_contact`(若存在且有数据):去重并入新表,
|
||||
-- 原表改名为 `yz_tenant_crm_contact_bak` 保留;
|
||||
-- 4. 线索/商机联系人仍然只存过程库 `yz_tenant_crm_entity_contact`(本脚本不动)。
|
||||
-- 4. 线索/商机联系人仍然只存过程库 `yz_backend_crm_entity_contact`(本脚本不动)。
|
||||
--
|
||||
-- 去重键(判定为同一联系人):tenant_id + company_type + company_id + name + mobiles
|
||||
-- 说明:
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
-- =============================================================================
|
||||
-- 跟进记录(回访)增加「创建阶段」字段 stage
|
||||
--
|
||||
-- 目的:
|
||||
-- 过程数据(跟进记录)不做搬迁,按 线索 → 商机 → 项目 链路累积展示;
|
||||
-- stage 记录该条记录创建时所处的阶段,用于详情列表标明数据来自哪个阶段。
|
||||
--
|
||||
-- 取值:1=线索,2=商机,3=项目
|
||||
-- 说明:
|
||||
-- - 脚本幂等:列已存在则跳过新增;
|
||||
-- - 回填只在首次新增列时执行一次(历史数据按当前 related_type 近似回填)。
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @has_stage := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'yz_backend_crm_follow'
|
||||
AND COLUMN_NAME = 'stage'
|
||||
);
|
||||
|
||||
-- 1. 新增列(已存在则跳过)
|
||||
SET @sql := IF(@has_stage = 0,
|
||||
'ALTER TABLE `yz_backend_crm_follow` ADD COLUMN `stage` tinyint(4) NOT NULL DEFAULT 1 COMMENT ''创建阶段:1线索/2商机/3项目'' AFTER `related_name`',
|
||||
'SELECT ''skip: stage 列已存在'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2. 历史数据回填(仅在首次新增列时执行;按当前 related_type 近似推断)
|
||||
SET @sql := IF(@has_stage = 0,
|
||||
'UPDATE `yz_backend_crm_follow` SET `stage` = `related_type` WHERE `related_type` IN (2, 3)',
|
||||
'SELECT ''skip: 回填已完成过'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. 核对:各阶段记录数
|
||||
SELECT `stage`, COUNT(*) AS `cnt`
|
||||
FROM `yz_backend_crm_follow`
|
||||
WHERE `delete_time` IS NULL
|
||||
GROUP BY `stage`
|
||||
ORDER BY `stage`;
|
||||
@@ -1,13 +1,42 @@
|
||||
-- 为 CRM 业务管线(线索/商机/项目)增加「对接人职位」字段 contact_position。
|
||||
-- 若已执行过 yz_backend_crm_pipeline.sql(表已存在),执行本脚本即可;
|
||||
-- 若尚未建表,直接执行 yz_backend_crm_pipeline.sql 已包含该字段,无需本脚本。
|
||||
-- 脚本可重复执行:列已存在时 MySQL 报 duplicate column,忽略即可。
|
||||
-- =============================================================================
|
||||
-- 为 CRM 业务管线(线索/商机/项目)增加「对接人职位」字段 contact_position
|
||||
--
|
||||
-- 说明:
|
||||
-- - 幂等:列已存在时自动跳过,不会报 Duplicate column 错误;
|
||||
-- - 只增加字段,不改动任何已有数据;
|
||||
-- - 若尚未建表,直接执行 yz_backend_crm_pipeline.sql 已包含该字段,无需本脚本。
|
||||
-- =============================================================================
|
||||
|
||||
ALTER TABLE `yz_tenant_crm_clue`
|
||||
ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位' AFTER `contact_person`;
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
ALTER TABLE `yz_tenant_crm_business`
|
||||
ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位' AFTER `contact_person`;
|
||||
-- 1. 线索
|
||||
SET @has_col := (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_clue' AND COLUMN_NAME = 'contact_position');
|
||||
SET @sql := IF(@has_col = 0,
|
||||
'ALTER TABLE `yz_backend_crm_clue` ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '''' COMMENT ''对接人职位'' AFTER `contact_person`',
|
||||
'SELECT ''skip: yz_backend_crm_clue.contact_position 已存在'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
ALTER TABLE `yz_tenant_crm_project`
|
||||
ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人职位' AFTER `contact_person`;
|
||||
-- 2. 商机
|
||||
SET @has_col := (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_business' AND COLUMN_NAME = 'contact_position');
|
||||
SET @sql := IF(@has_col = 0,
|
||||
'ALTER TABLE `yz_backend_crm_business` ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '''' COMMENT ''对接人职位'' AFTER `contact_person`',
|
||||
'SELECT ''skip: yz_backend_crm_business.contact_position 已存在'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. 项目
|
||||
SET @has_col := (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_project' AND COLUMN_NAME = 'contact_position');
|
||||
SET @sql := IF(@has_col = 0,
|
||||
'ALTER TABLE `yz_backend_crm_project` ADD COLUMN `contact_position` varchar(50) NOT NULL DEFAULT '''' COMMENT ''对接人职位'' AFTER `contact_person`',
|
||||
'SELECT ''skip: yz_backend_crm_project.contact_position 已存在'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 4. 核对:三张表的 contact_position 字段
|
||||
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME IN ('yz_backend_crm_clue', 'yz_backend_crm_business', 'yz_backend_crm_project')
|
||||
AND COLUMN_NAME = 'contact_position'
|
||||
ORDER BY TABLE_NAME;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 项目文档(CRM 项目 ↔ OA 文档库绑定)
|
||||
--
|
||||
-- 在项目表上增加文档库文件夹分类ID:
|
||||
-- 指向 yz_backend_oa_doc_category 中「共享文档 / 项目文档 / {项目名称}」这条分类。
|
||||
-- 项目建立时自动在文档库中创建同名文件夹并回写该列;
|
||||
-- 存量项目(为 0)在打开「项目文档」或项目详情时自动补建。
|
||||
-- 项目改名时同步重命名文档库文件夹。
|
||||
--
|
||||
-- 注:新建库时该列已包含在 yz_backend_crm_pipeline.sql 中,此脚本用于已有库升级。
|
||||
-- 后端启动时也会自动补列(models.EnsureCrmProjectDocColumn),可不必手工执行。
|
||||
-- -----------------------------------------------------------------------------
|
||||
ALTER TABLE `yz_backend_crm_project`
|
||||
ADD COLUMN `doc_category_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联OA文档库项目文件夹分类ID(共享文档/项目文档/{项目名称})';
|
||||
@@ -0,0 +1,69 @@
|
||||
-- =============================================================================
|
||||
-- CRM 业务管线表名规范化:yz_tenant_crm_* → yz_backend_crm_*
|
||||
--
|
||||
-- 目的:与 yz_backend_erp_*、yz_backend_contact_company 等保持统一前缀,便于查找维护。
|
||||
--
|
||||
-- 映射:
|
||||
-- yz_tenant_crm_clue → yz_backend_crm_clue
|
||||
-- yz_tenant_crm_business → yz_backend_crm_business
|
||||
-- yz_tenant_crm_project → yz_backend_crm_project
|
||||
-- yz_tenant_crm_follow → yz_backend_crm_follow
|
||||
-- yz_tenant_crm_attach → yz_backend_crm_attach
|
||||
-- yz_tenant_crm_entity_contact → yz_backend_crm_entity_contact
|
||||
-- yz_tenant_crm_operate_log → yz_backend_crm_operate_log
|
||||
--
|
||||
-- 说明:
|
||||
-- - RENAME TABLE 是原子改名,数据、索引、自增全部原样保留,不会丢数据;
|
||||
-- - 幂等:新表已存在或旧表不存在时自动跳过;
|
||||
-- - 注意:需与新版后端一起发布(模型表名已指向 yz_backend_crm_*)。
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 1. 线索
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_clue');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_clue');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_clue` TO `yz_backend_crm_clue`', 'SELECT ''skip: clue'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2. 商机
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_business');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_business');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_business` TO `yz_backend_crm_business`', 'SELECT ''skip: business'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. 项目
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_project');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_project');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_project` TO `yz_backend_crm_project`', 'SELECT ''skip: project'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 4. 回访/跟进记录
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_follow');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_follow');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_follow` TO `yz_backend_crm_follow`', 'SELECT ''skip: follow'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 5. 附件
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_attach');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_attach');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_attach` TO `yz_backend_crm_attach`', 'SELECT ''skip: attach'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 6. 联系人
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_entity_contact');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_entity_contact');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_entity_contact` TO `yz_backend_crm_entity_contact`', 'SELECT ''skip: entity_contact'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 7. 操作日志
|
||||
SET @has_old := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_tenant_crm_operate_log');
|
||||
SET @has_new := (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_crm_operate_log');
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE `yz_tenant_crm_operate_log` TO `yz_backend_crm_operate_log`', 'SELECT ''skip: operate_log'' AS note');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 8. 核对结果
|
||||
SELECT TABLE_NAME, TABLE_ROWS, CREATE_TIME
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME LIKE 'yz_%crm_%'
|
||||
ORDER BY TABLE_NAME;
|
||||
@@ -0,0 +1,102 @@
|
||||
-- =============================================================================
|
||||
-- 修正「负责人 / 回访人 / 上传人」姓名:把登录账号刷成真实姓名
|
||||
--
|
||||
-- 背景:
|
||||
-- 历史代码把 JWT 里的 Username(登录账号,如 hero920103)写进了
|
||||
-- owner_user_name / last_owner_name 等字段,导致界面显示账号而不是人名。
|
||||
-- 后端已改为按 uid 查 yz_system_tenant_user.name 写入真实姓名,
|
||||
-- 本脚本用于修正存量数据。
|
||||
--
|
||||
-- 说明:
|
||||
-- - 按 tenant_id + owner_user_id(uid) 关联 yz_system_tenant_user 取 name;
|
||||
-- - 只更新「能匹配到用户且姓名非空」的记录,不动其它数据;
|
||||
-- - 幂等,可重复执行(姓名已一致的行不会被更新)。
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 1. 客户:负责人姓名
|
||||
UPDATE `yz_backend_erp_customer` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`owner_user_name` = u.`name`
|
||||
WHERE c.`owner_user_id` IS NOT NULL AND c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`owner_user_name` IS NULL OR c.`owner_user_name` <> u.`name`);
|
||||
|
||||
-- 2. 客户:公海记录里的「原负责人」姓名
|
||||
UPDATE `yz_backend_erp_customer` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`last_owner_name` = u.`name`
|
||||
WHERE c.`owner_user_id` IS NOT NULL AND c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND c.`last_owner_name` IS NOT NULL AND c.`last_owner_name` <> ''
|
||||
AND c.`last_owner_name` <> u.`name`;
|
||||
|
||||
-- 3. 线索:负责人姓名
|
||||
UPDATE `yz_backend_crm_clue` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`owner_user_name` = u.`name`
|
||||
WHERE c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`owner_user_name` IS NULL OR c.`owner_user_name` <> u.`name`);
|
||||
|
||||
-- 4. 商机:负责人姓名
|
||||
UPDATE `yz_backend_crm_business` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`owner_user_name` = u.`name`
|
||||
WHERE c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`owner_user_name` IS NULL OR c.`owner_user_name` <> u.`name`);
|
||||
|
||||
-- 5. 项目:负责人姓名
|
||||
UPDATE `yz_backend_crm_project` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`owner_user_name` = u.`name`
|
||||
WHERE c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`owner_user_name` IS NULL OR c.`owner_user_name` <> u.`name`);
|
||||
|
||||
-- 6. 回访记录:回访人姓名
|
||||
UPDATE `yz_backend_crm_follow` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`owner_user_id` AS UNSIGNED)
|
||||
SET c.`owner_user_name` = u.`name`
|
||||
WHERE c.`owner_user_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`owner_user_name` IS NULL OR c.`owner_user_name` <> u.`name`);
|
||||
|
||||
-- 7. 附件:上传人姓名
|
||||
UPDATE `yz_backend_crm_attach` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`uploader_id` AS UNSIGNED)
|
||||
SET c.`uploader_name` = u.`name`
|
||||
WHERE c.`uploader_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`uploader_name` IS NULL OR c.`uploader_name` <> u.`name`);
|
||||
|
||||
-- 8. 操作日志:操作人姓名
|
||||
UPDATE `yz_backend_crm_operate_log` c
|
||||
JOIN `yz_system_tenant_user` u
|
||||
ON u.`tid` = CAST(c.`tenant_id` AS UNSIGNED)
|
||||
AND u.`uid` = CAST(c.`operator_id` AS UNSIGNED)
|
||||
SET c.`operator_name` = u.`name`
|
||||
WHERE c.`operator_id` <> ''
|
||||
AND u.`name` IS NOT NULL AND u.`name` <> ''
|
||||
AND (c.`operator_name` IS NULL OR c.`operator_name` <> u.`name`);
|
||||
|
||||
-- 9. 核对:客户负责人分布
|
||||
SELECT `owner_user_id`, `owner_user_name`, COUNT(*) AS `cnt`
|
||||
FROM `yz_backend_erp_customer`
|
||||
GROUP BY `owner_user_id`, `owner_user_name`;
|
||||
@@ -6,19 +6,19 @@
|
||||
-- 线索转化为商机时才把客户名称落地为正式客户(yz_backend_erp_customer)。
|
||||
-- 2. 线索转化商机后会被锁定(locked=1),后续操作都在商机进行。
|
||||
-- 3. 商机转化项目后同样锁定(locked=1)。
|
||||
-- 4. 回访/跟进记录(yz_tenant_crm_follow)与附件、联系人、操作日志均为通用多态表,
|
||||
-- 4. 回访/跟进记录(yz_backend_crm_follow)与附件、联系人、操作日志均为通用多态表,
|
||||
-- 通过 related_type(1线索/2商机/3项目) + related_id 关联。
|
||||
-- 可重复执行(DROP TABLE IF EXISTS)。
|
||||
-- ⚠️ 安全说明(重要):
|
||||
-- 本脚本只做 CREATE TABLE IF NOT EXISTS,**不会删除或覆盖任何已有数据**,可重复执行。
|
||||
-- 如需给已存在的表新增字段,请勿重跑本脚本,改用对应的 alter_*.sql 增量脚本。
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 线索表
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_clue`;
|
||||
CREATE TABLE `yz_tenant_crm_clue` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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 '线索名称',
|
||||
@@ -55,8 +55,7 @@ CREATE TABLE `yz_tenant_crm_clue` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 商机表
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_business`;
|
||||
CREATE TABLE `yz_tenant_crm_business` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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 '商机名称',
|
||||
@@ -100,8 +99,7 @@ CREATE TABLE `yz_tenant_crm_business` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 项目表
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_project`;
|
||||
CREATE TABLE `yz_tenant_crm_project` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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 '项目名称',
|
||||
@@ -121,6 +119,7 @@ CREATE TABLE `yz_tenant_crm_project` (
|
||||
`contact_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '对接人手机',
|
||||
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '项目地址',
|
||||
`remark` text COMMENT '备注',
|
||||
`doc_category_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '关联OA文档库项目文件夹分类ID(共享文档/项目文档/{项目名称})',
|
||||
`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 '更新时间',
|
||||
@@ -137,13 +136,13 @@ CREATE TABLE `yz_tenant_crm_project` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 回访/跟进记录表(贯穿线索、商机、项目)
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_follow`;
|
||||
CREATE TABLE `yz_tenant_crm_follow` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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 '关联对象名称(冗余,便于回访列表展示)',
|
||||
`stage` tinyint(4) NOT NULL DEFAULT '1' COMMENT '创建阶段:1线索/2商机/3项目',
|
||||
`follow_type` varchar(20) NOT NULL DEFAULT '1' COMMENT '回访方式:1电话/2微信/3上门/4邮件/5其他',
|
||||
`follow_time` datetime DEFAULT NULL COMMENT '回访时间',
|
||||
`content` text COMMENT '回访内容',
|
||||
@@ -163,8 +162,7 @@ CREATE TABLE `yz_tenant_crm_follow` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 附件表(多态:线索/商机/项目的资料)
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_attach`;
|
||||
CREATE TABLE `yz_tenant_crm_attach` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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项目',
|
||||
@@ -187,8 +185,7 @@ CREATE TABLE `yz_tenant_crm_attach` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 联系人表(多态:线索/商机/项目的对接人列表)
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_entity_contact`;
|
||||
CREATE TABLE `yz_tenant_crm_entity_contact` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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项目',
|
||||
@@ -213,8 +210,7 @@ CREATE TABLE `yz_tenant_crm_entity_contact` (
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 操作日志表(多态:记录线索/商机/项目的关键操作,用于详情页操作日志 Tab)
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `yz_tenant_crm_operate_log`;
|
||||
CREATE TABLE `yz_tenant_crm_operate_log` (
|
||||
CREATE TABLE IF NOT EXISTS `yz_backend_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项目',
|
||||
|
||||
Reference in New Issue
Block a user