by-crm/sql/01_init.sql

192 lines
9.8 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.

-- 泊云智销通数据库初始化脚本
-- 数据库版本MySQL 8.0
CREATE DATABASE IF NOT EXISTS crm_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE crm_db;
SET NAMES utf8mb4;
SET CHARACTER SET utf8mb4;
-- 经销商表
CREATE TABLE IF NOT EXISTS crm_dealer (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '经销商ID',
name VARCHAR(100) NOT NULL COMMENT '经销商名称',
code VARCHAR(50) NOT NULL UNIQUE COMMENT '经销商编码',
contact_person VARCHAR(50) NOT NULL COMMENT '联系人',
contact_phone VARCHAR(20) NOT NULL COMMENT '联系电话',
email VARCHAR(100) COMMENT '邮箱',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0-禁用 1-启用',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_code (code),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='经销商表';
-- 客户表
CREATE TABLE IF NOT EXISTS crm_customer (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '客户ID',
name VARCHAR(100) NOT NULL COMMENT '客户名称',
phone VARCHAR(20) COMMENT '联系电话',
address VARCHAR(255) COMMENT '地址',
industry VARCHAR(100) COMMENT '所属行业',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态0-可报备 1-保护中 2-已失效',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_name (name),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户表';
-- 报备表
CREATE TABLE IF NOT EXISTS crm_report (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '报备ID',
dealer_id BIGINT NOT NULL COMMENT '经销商ID',
description VARCHAR(500) COMMENT '报备说明',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态0-待审核 1-已通过 2-已驳回 3-已失效',
reject_reason VARCHAR(255) COMMENT '驳回原因',
protect_start_date DATE DEFAULT NULL COMMENT '保护期开始日期',
protect_end_date DATE DEFAULT NULL COMMENT '保护期结束日期',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
school_id BIGINT DEFAULT NULL COMMENT '学校ID',
school_name VARCHAR(255) COMMENT '学校名称(冗余存储)',
product VARCHAR(255) COMMENT '所属产品',
project_type VARCHAR(255) COMMENT '项目类型',
cancel_reason VARCHAR(500) COMMENT '作废原因',
INDEX idx_dealer_id (dealer_id),
INDEX idx_status (status),
INDEX idx_protect_end_date (protect_end_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报备表';
-- 用户表(管理员和经销商用户)
CREATE TABLE IF NOT EXISTS crm_user (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码BCrypt加密',
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
dealer_id BIGINT COMMENT '关联经销商ID管理员为NULL',
role TINYINT NOT NULL COMMENT '角色0-管理员 1-经销商用户',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0-禁用 1-启用',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_username (username),
INDEX idx_dealer_id (dealer_id),
INDEX idx_role (role)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 数据字典表
CREATE TABLE IF NOT EXISTS crm_dict (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '字典ID',
dict_code VARCHAR(50) NOT NULL UNIQUE COMMENT '字典编码',
dict_name VARCHAR(100) NOT NULL COMMENT '字典名称',
description VARCHAR(255) COMMENT '描述',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典表';
-- 数据字典项表
CREATE TABLE IF NOT EXISTS crm_dict_item (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '字典项ID',
dict_id BIGINT NOT NULL COMMENT '字典ID',
item_label VARCHAR(100) NOT NULL COMMENT '字典项标签',
item_value VARCHAR(50) NOT NULL COMMENT '字典项值',
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_dict_id (dict_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典项表';
-- 操作日志表
CREATE TABLE IF NOT EXISTS crm_operation_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
module VARCHAR(50) NOT NULL COMMENT '模块名称',
operation VARCHAR(50) NOT NULL COMMENT '操作类型',
description VARCHAR(500) COMMENT '操作描述',
ip VARCHAR(50) COMMENT 'IP地址',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_user_id (user_id),
INDEX idx_module (module),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
-- 插入初始数据
-- 插入默认管理员用户名admin密码Bycrmadmin123BCrypt加密后的值
INSERT INTO crm_user (username, password, real_name, dealer_id, role, status) VALUES
('admin', '$2a$10$kWExNPRis.HIzKDa112UZeq8jzGxI2tLFo0zTNRfxhyzk6MzMKPW6', '系统管理员', NULL, 0, 1);
-- 插入数据字典
INSERT INTO crm_dict (dict_code, dict_name, description) VALUES
('customer_status', '客户状态', '客户的状态信息'),
('report_status', '报备状态', '报备单的状态信息'),
('customer_industry', '客户行业', '客户所属行业分类');
-- 插入客户状态字典项
INSERT INTO crm_dict_item (dict_id, item_label, item_value, sort_order) VALUES
(1, '可报备', '0', 0),
(1, '保护中', '1', 1),
(1, '已失效', '2', 2);
-- 插入报备状态字典项
INSERT INTO crm_dict_item (dict_id, item_label, item_value, sort_order) VALUES
(2, '待审核', '0', 0),
(2, '已通过', '1', 1),
(2, '已驳回', '2', 2),
(2, '已失效', '3', 3);
-- 插入客户行业字典项
INSERT INTO crm_dict_item (dict_id, item_label, item_value, sort_order) VALUES
(3, '制造业', 'manufacturing', 0),
(3, '互联网', 'internet', 1),
(3, '金融', 'finance', 2),
(3, '零售', 'retail', 3),
(3, '教育', 'education', 4),
(3, '医疗', 'healthcare', 5),
(3, '其他', 'other', 6);
-- 系统配置表
CREATE TABLE IF NOT EXISTS crm_system_config (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID',
config_key VARCHAR(50) NOT NULL UNIQUE COMMENT '配置键',
config_value VARCHAR(255) NOT NULL COMMENT '配置值',
config_label VARCHAR(100) NOT NULL COMMENT '配置名称',
config_type VARCHAR(20) NOT NULL DEFAULT 'string' COMMENT '数据类型string/integer/boolean',
description VARCHAR(255) COMMENT '配置描述',
is_editable TINYINT NOT NULL DEFAULT 1 COMMENT '是否可编辑0-否 1-是',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
-- 插入初始配置数据
INSERT INTO crm_system_config (config_key, config_value, config_label, config_type, description, is_editable) VALUES
('report.protect.days', '90', '报备保护期天数', 'integer', '报备审核通过后客户的保护天数', 1),
('report.allow.overlap', 'false', '允许重叠报备', 'boolean', '是否允许同一客户被多个经销商报备测试用生产环境必须为false', 1);
-- 学校表
CREATE TABLE IF NOT EXISTS crm_school (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '学校ID',
school_code VARCHAR(50) NOT NULL UNIQUE COMMENT '学校标识码',
school_name VARCHAR(200) NOT NULL COMMENT '学校名称',
location VARCHAR(255) COMMENT '所在地(由主管部门和所在地组合而成,如"北京市海淀区"',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_school_code (school_code),
INDEX idx_school_name (school_name),
INDEX idx_location (location)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学校表';
-- 报备进展记录表
CREATE TABLE IF NOT EXISTS crm_report_progress (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '进展ID',
report_id BIGINT NOT NULL COMMENT '关联报备ID',
progress_content VARCHAR(500) NOT NULL COMMENT '进展内容',
created_by BIGINT NOT NULL COMMENT '创建人ID',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_report_id (report_id),
INDEX idx_created_by (created_by),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报备进展记录表';