erp-java/infrastructure/mysql/init.sql

95 lines
4.8 KiB
SQL
Raw Permalink 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.

-- 创建Nacos配置数据库
CREATE DATABASE IF NOT EXISTS nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建ERP业务数据库
CREATE DATABASE IF NOT EXISTS erp_java CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户表对应PHP系统的users表
USE erp_java;
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
email VARCHAR(100) UNIQUE COMMENT '邮箱',
phone VARCHAR(20) UNIQUE COMMENT '手机号',
password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希',
real_name VARCHAR(50) COMMENT '真实姓名',
avatar VARCHAR(255) COMMENT '头像URL',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0-禁用1-启用',
is_super_admin TINYINT NOT NULL DEFAULT 0 COMMENT '是否超级管理员',
last_login_at DATETIME COMMENT '最后登录时间',
last_login_ip VARCHAR(45) COMMENT '最后登录IP',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted_at DATETIME COMMENT '删除时间',
INDEX idx_tenant_id (tenant_id),
INDEX idx_username (username),
INDEX idx_email (email),
INDEX idx_phone (phone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 租户表
CREATE TABLE IF NOT EXISTS tenants (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '租户ID',
company_name VARCHAR(200) NOT NULL COMMENT '公司名称',
contact_name VARCHAR(50) NOT NULL COMMENT '联系人姓名',
contact_phone VARCHAR(20) NOT NULL COMMENT '联系人电话',
contact_email VARCHAR(100) NOT NULL COMMENT '联系人邮箱',
domain VARCHAR(100) UNIQUE COMMENT '租户域名',
package_id BIGINT COMMENT '套餐ID',
trial_ends_at DATETIME COMMENT '试用到期时间',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态0-暂停1-正常2-试用',
max_users INT DEFAULT 10 COMMENT '最大用户数',
max_orders_per_month INT DEFAULT 1000 COMMENT '每月最大订单数',
features JSON COMMENT '功能列表',
settings JSON 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_company_name (company_name),
INDEX idx_domain (domain),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租户表';
-- 角色表
CREATE TABLE IF NOT EXISTS roles (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID',
tenant_id BIGINT NOT NULL COMMENT '租户ID',
name VARCHAR(50) NOT NULL COMMENT '角色名称',
code VARCHAR(50) NOT NULL COMMENT '角色编码',
description VARCHAR(255) COMMENT '角色描述',
is_default TINYINT DEFAULT 0 COMMENT '是否默认角色',
permissions JSON COMMENT '权限列表',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_tenant_code (tenant_id, code),
INDEX idx_tenant_id (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
-- 用户角色关联表
CREATE TABLE IF NOT EXISTS user_roles (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
role_id BIGINT NOT NULL COMMENT '角色ID',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_user_role (user_id, role_id),
INDEX idx_user_id (user_id),
INDEX idx_role_id (role_id),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
-- 插入默认数据
-- 插入超级管理员用户密码Admin@123456
INSERT IGNORE INTO users (id, username, email, password_hash, real_name, status, is_super_admin) VALUES
(1, 'admin', 'admin@erp.com', '$2a$10$YourPasswordHashHere', '系统管理员', 1, 1);
-- 插入默认租户
INSERT IGNORE INTO tenants (id, company_name, contact_name, contact_phone, contact_email, status) VALUES
(1, '演示公司', '演示联系人', '13800138000', 'demo@erp.com', 1);
-- 插入默认角色
INSERT IGNORE INTO roles (id, tenant_id, name, code, description, is_default, permissions) VALUES
(1, 1, '管理员', 'admin', '系统管理员', 1, '["*"]'),
(2, 1, '普通用户', 'user', '普通用户', 0, '["order:view", "order:create"]');