初始化项目

This commit is contained in:
andy committed 2026-01-23 17:20:52 +08:00
commit 60c416e553
79 files changed
+5609

No files matched your search

+161
View File
@@ -0,0 +1,161 @@
-- 经销商管理系统数据库初始化脚本
-- 数据库版本:MySQL 8.0
CREATE DATABASE IF NOT EXISTS by_crm DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE by_crm;
-- 经销商表
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',
customer_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 DATETIME COMMENT '保护期开始时间',
protect_end_date DATETIME 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_dealer_id (dealer_id),
INDEX idx_customer_id (customer_id),
INDEX idx_status (status),
INDEX idx_protect_end_date (protect_end_date),
UNIQUE KEY uk_customer_valid (customer_id, status) COMMENT '同一客户只能有一个有效报备'
) 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,密码:admin123,BCrypt加密后的值)
INSERT INTO crm_user (username, password, real_name, dealer_id, role, status) VALUES
('admin', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '系统管理员', NULL, 0, 1);
-- 插入测试经销商
INSERT INTO crm_dealer (name, code, contact_person, contact_phone, email, status) VALUES
('北京科技有限公司', 'DLR001', '张三', '13800138001', 'zhangsan@example.com', 1),
('上海贸易有限公司', 'DLR002', '李四', '13800138002', 'lisi@example.com', 1),
('深圳实业有限公司', 'DLR003', '王五', '13800138003', 'wangwu@example.com', 1);
-- 插入测试经销商用户
INSERT INTO crm_user (username, password, real_name, dealer_id, role, status) VALUES
('user001', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '张三', 1, 1, 1),
('user002', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '李四', 2, 1, 1),
('user003', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '王五', 3, 1, 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);
-- 插入测试客户
INSERT INTO crm_customer (name, phone, address, industry, status) VALUES
('阿里巴巴集团', '0571-12345678', '浙江省杭州市余杭区', 'internet', 0),
('腾讯科技', '0755-87654321', '广东省深圳市南山区', 'internet', 0),
('华为技术', '0755-12345678', '广东省深圳市龙岗区', 'manufacturing', 0),
('京东集团', '010-66666666', '北京市大兴区', 'retail', 0),
('平安保险', '0755-55555555', '广东省深圳市福田区', 'finance', 0);