-- CRM线索中心模块数据库初始化脚本
-- 适用于 hzhub-system 服务 (MySQL 8.0)
-- 创建时间: 2026-05-20
-- 修复时间: 2026-05-20 (添加主键字段)

-- ========================================
-- 1. 数据字典定义
-- ========================================

-- 线索来源类型 (crm_lead_source)
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark)
VALUES (13, '000000', '线索来源', 'crm_lead_source', 1, NOW(), 'CRM线索来源类型');

INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark)
VALUES
(39, '000000', 1, '活动', 'activity', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '线下招商活动'),
(40, '000000', 2, '推荐', 'referral', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '客户推荐'),
(41, '000000', 3, '网站', 'website', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '官网咨询'),
(42, '000000', 4, '展会', 'exhibition', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '行业展会'),
(43, '000000', 5, '企业微信', 'wecom', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '企业微信咨询'),
(44, '000000', 6, 'ERP客户', 'erp', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '从ERP客户转化'),
(45, '000000', 7, '其他', 'other', 'crm_lead_source', '', 'default', 'N', 1, NOW(), '其他来源');

-- 线索状态 (crm_lead_status)
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark)
VALUES (14, '000000', '线索状态', 'crm_lead_status', 1, NOW(), 'CRM线索状态');

INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark)
VALUES
(46, '000000', 1, '新线索', 'new', 'crm_lead_status', '', 'info', 'Y', 1, NOW(), '刚录入，未分配'),
(47, '000000', 2, '跟进中', 'following', 'crm_lead_status', '', 'primary', 'N', 1, NOW(), '已分配，正在跟进'),
(48, '000000', 3, '已转化', 'converted', 'crm_lead_status', '', 'success', 'N', 1, NOW(), '已转为经销商'),
(49, '000000', 4, '已作废', 'invalid', 'crm_lead_status', '', 'danger', 'N', 1, NOW(), '线索无效');

-- AI意向等级 (crm_intent_level)
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark)
VALUES (15, '000000', 'AI意向等级', 'crm_intent_level', 1, NOW(), 'AI分析意向等级');

INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark)
VALUES
(50, '000000', 1, '高意向', 'high', 'crm_intent_level', '', 'danger', 'N', 1, NOW(), 'AI评分 >= 80'),
(51, '000000', 2, '中意向', 'medium', 'crm_intent_level', '', 'warning', 'N', 1, NOW(), 'AI评分 60-80'),
(52, '000000', 3, '低意向', 'low', 'crm_intent_level', '', 'info', 'N', 1, NOW(), 'AI评分 < 60');

-- 风险等级 (crm_risk_level)
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark)
VALUES (16, '000000', '风险等级', 'crm_risk_level', 1, NOW(), 'CRM风险等级');

INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark)
VALUES
(53, '000000', 1, '高风险', 'high', 'crm_risk_level', '', 'danger', 'N', 1, NOW(), '需重点关注'),
(54, '000000', 2, '中风险', 'medium', 'crm_risk_level', '', 'warning', 'N', 1, NOW(), '需持续跟踪'),
(55, '000000', 3, '低风险', 'low', 'crm_risk_level', '', 'success', 'Y', 1, NOW(), '正常跟进');

-- 跟进方式 (crm_follow_type)
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark)
VALUES (17, '000000', '跟进方式', 'crm_follow_type', 1, NOW(), 'CRM跟进方式');

INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark)
VALUES
(56, '000000', 1, '电话', 'phone', 'crm_follow_type', '', 'default', 'Y', 1, NOW(), '电话跟进'),
(57, '000000', 2, '企业微信', 'wecom', 'crm_follow_type', '', 'default', 'N', 1, NOW(), '企业微信跟进'),
(58, '000000', 3, '拜访', 'visit', 'crm_follow_type', '', 'default', 'N', 1, NOW(), '上门拜访'),
(59, '000000', 4, '邮件', 'email', 'crm_follow_type', '', 'default', 'N', 1, NOW(), '邮件跟进'),
(60, '000000', 5, '其他', 'other', 'crm_follow_type', '', 'default', 'N', 1, NOW(), '其他方式');

-- ========================================
-- 2. 线索表 (crm_lead)
-- ========================================

CREATE TABLE IF NOT EXISTS crm_lead (
    lead_id BIGINT NOT NULL COMMENT '线索ID（主键）',
    tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
    customer_code VARCHAR(100) DEFAULT NULL COMMENT 'ERP客户编码（可选）',
    company_name VARCHAR(200) NOT NULL COMMENT '公司名称',
    contact_name VARCHAR(100) NOT NULL COMMENT '联系人',
    mobile VARCHAR(50) NOT NULL COMMENT '手机号',
    wechat VARCHAR(100) DEFAULT NULL COMMENT '微信号',
    province VARCHAR(50) DEFAULT NULL COMMENT '省',
    city VARCHAR(50) DEFAULT NULL COMMENT '市',
    region_id BIGINT DEFAULT NULL COMMENT '区域ID（关联 sys_dept）',
    source_type VARCHAR(50) DEFAULT NULL COMMENT '来源类型（字典：crm_lead_source）',
    activity_name VARCHAR(100) DEFAULT NULL COMMENT '活动名称',
    referrer_name VARCHAR(100) DEFAULT NULL COMMENT '推荐人',
    industry VARCHAR(100) DEFAULT NULL COMMENT '行业（字典：crm_industry）',
    company_scale VARCHAR(100) DEFAULT NULL COMMENT '公司规模（字典：crm_scale）',
    store_count INT DEFAULT 0 COMMENT '门店数',
    intent_level VARCHAR(20) DEFAULT NULL COMMENT 'AI意向等级（字典：crm_intent_level）',
    ai_score DECIMAL(5,2) DEFAULT NULL COMMENT 'AI评分',
    risk_level VARCHAR(20) DEFAULT NULL COMMENT '风险等级（字典：crm_risk_level）',
    owner_user_id BIGINT DEFAULT NULL COMMENT '负责人（关联 sys_user）',
    lead_status VARCHAR(50) DEFAULT 'new' COMMENT '状态（字典：crm_lead_status）',
    converted_dealer_id BIGINT DEFAULT NULL COMMENT '转化经销商ID',
    next_follow_time DATETIME DEFAULT NULL COMMENT '下次跟进时间',
    remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
    create_dept BIGINT DEFAULT NULL COMMENT '创建部门',
    create_by BIGINT DEFAULT NULL COMMENT '创建人',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_by BIGINT DEFAULT NULL COMMENT '更新人',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    del_flag INT DEFAULT 0 COMMENT '删除标志（0代表存在 1代表删除）',
    PRIMARY KEY (lead_id),
    KEY idx_tenant_id (tenant_id),
    KEY idx_customer_code (customer_code),
    KEY idx_mobile (mobile),
    KEY idx_owner_user_id (owner_user_id),
    KEY idx_lead_status (lead_status),
    KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRM线索表';

-- ========================================
-- 3. 线索跟进记录表 (crm_lead_follow)
-- ========================================

CREATE TABLE IF NOT EXISTS crm_lead_follow (
    follow_id BIGINT NOT NULL COMMENT '跟进ID（主键）',
    tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
    lead_id BIGINT NOT NULL COMMENT '线索ID',
    follow_type VARCHAR(50) NOT NULL COMMENT '跟进方式（字典：crm_follow_type）',
    content TEXT NOT NULL COMMENT '跟进内容',
    ai_summary TEXT DEFAULT NULL COMMENT 'AI摘要',
    next_follow_time DATETIME DEFAULT NULL COMMENT '下次跟进时间',
    follow_user_id BIGINT NOT NULL COMMENT '跟进人（关联 sys_user）',
    create_dept BIGINT DEFAULT NULL COMMENT '创建部门',
    create_by BIGINT DEFAULT NULL COMMENT '创建人',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_by BIGINT DEFAULT NULL COMMENT '更新人',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    del_flag INT DEFAULT 0 COMMENT '删除标志（0代表存在 1代表删除）',
    PRIMARY KEY (follow_id),
    KEY idx_tenant_id (tenant_id),
    KEY idx_lead_id (lead_id),
    KEY idx_follow_user_id (follow_user_id),
    KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRM线索跟进记录表';

-- ========================================
-- 4. 初始化完成提示
-- ========================================

-- 查询验证
SELECT 'CRM数据字典初始化完成' AS message;
SELECT dict_id, dict_name, dict_type FROM sys_dict_type WHERE dict_type LIKE 'crm_%';
SELECT COUNT(*) AS dict_count FROM sys_dict_data WHERE dict_type LIKE 'crm_%';

SELECT 'CRM表创建完成' AS message;
SHOW TABLES LIKE 'crm_%';