-- 创建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"]');