135 lines
5.4 KiB
MySQL
135 lines
5.4 KiB
MySQL
|
|
-- 初始化用户数据 - 解决登录问题
|
||
|
|
-- 执行方式: mysql -h 8.148.151.56 -u root -preading_platform_pwd reading_platform < init-users.sql
|
||
|
|
|
||
|
|
USE reading_platform;
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 1. 检查并创建必要的表
|
||
|
|
-- ============================================
|
||
|
|
|
||
|
|
-- 创建 admin_users 表(如果不存在)
|
||
|
|
CREATE TABLE IF NOT EXISTS admin_users (
|
||
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
||
|
|
password VARCHAR(255) NOT NULL,
|
||
|
|
name VARCHAR(50) NOT NULL,
|
||
|
|
email VARCHAR(100),
|
||
|
|
phone VARCHAR(20),
|
||
|
|
avatar_url VARCHAR(500),
|
||
|
|
status VARCHAR(20) DEFAULT 'active',
|
||
|
|
last_login_at DATETIME,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
deleted TINYINT DEFAULT 0
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- 创建 teachers 表(如果不存在)
|
||
|
|
CREATE TABLE IF NOT EXISTS teachers (
|
||
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
|
|
tenant_id BIGINT NOT NULL,
|
||
|
|
username VARCHAR(50) NOT NULL,
|
||
|
|
password VARCHAR(255) NOT NULL,
|
||
|
|
name VARCHAR(50) NOT NULL,
|
||
|
|
phone VARCHAR(20),
|
||
|
|
email VARCHAR(100),
|
||
|
|
avatar_url VARCHAR(500),
|
||
|
|
gender VARCHAR(10),
|
||
|
|
bio TEXT,
|
||
|
|
status VARCHAR(20) DEFAULT 'active',
|
||
|
|
last_login_at DATETIME,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
deleted TINYINT DEFAULT 0,
|
||
|
|
UNIQUE KEY uk_username (username)
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- 创建 parents 表(如果不存在)
|
||
|
|
CREATE TABLE IF NOT EXISTS parents (
|
||
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
|
|
tenant_id BIGINT NOT NULL,
|
||
|
|
username VARCHAR(50) NOT NULL,
|
||
|
|
password VARCHAR(255) NOT NULL,
|
||
|
|
name VARCHAR(50) NOT NULL,
|
||
|
|
phone VARCHAR(20),
|
||
|
|
email VARCHAR(100),
|
||
|
|
avatar_url VARCHAR(500),
|
||
|
|
gender VARCHAR(10),
|
||
|
|
status VARCHAR(20) DEFAULT 'active',
|
||
|
|
last_login_at DATETIME,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
deleted TINYINT DEFAULT 0,
|
||
|
|
UNIQUE KEY uk_username (username)
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- 创建 tenants 表(如果不存在)
|
||
|
|
CREATE TABLE IF NOT EXISTS tenants (
|
||
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
|
|
name VARCHAR(100) NOT NULL,
|
||
|
|
code VARCHAR(50) NOT NULL UNIQUE,
|
||
|
|
username VARCHAR(50) UNIQUE,
|
||
|
|
password VARCHAR(255),
|
||
|
|
contact_name VARCHAR(50),
|
||
|
|
contact_phone VARCHAR(20),
|
||
|
|
contact_email VARCHAR(100),
|
||
|
|
address VARCHAR(255),
|
||
|
|
logo_url VARCHAR(500),
|
||
|
|
status VARCHAR(20) DEFAULT 'active',
|
||
|
|
expire_at DATETIME,
|
||
|
|
max_students INT DEFAULT 0,
|
||
|
|
max_teachers INT DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
deleted TINYINT DEFAULT 0
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- 添加 username/password 字段到 tenants 表(如果不存在)
|
||
|
|
ALTER TABLE tenants ADD COLUMN IF NOT EXISTS username VARCHAR(50) UNIQUE AFTER code;
|
||
|
|
ALTER TABLE tenants ADD COLUMN IF NOT EXISTS password VARCHAR(255) AFTER username;
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 2. 插入测试数据
|
||
|
|
-- 密码都是 123456
|
||
|
|
-- BCrypt hash: $2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi
|
||
|
|
-- ============================================
|
||
|
|
|
||
|
|
-- 清理旧数据
|
||
|
|
DELETE FROM admin_users WHERE username IN ('admin');
|
||
|
|
DELETE FROM teachers WHERE username IN ('teacher1', 'teacher2');
|
||
|
|
DELETE FROM parents WHERE username IN ('parent1', 'parent2');
|
||
|
|
DELETE FROM tenants WHERE id IN (1);
|
||
|
|
|
||
|
|
-- 插入超管用户
|
||
|
|
INSERT INTO admin_users (id, username, password, name, email, phone, status) VALUES
|
||
|
|
(1, 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '平台管理员', 'admin@example.com', '13800138000', 'active');
|
||
|
|
|
||
|
|
-- 插入租户(学校)
|
||
|
|
INSERT INTO tenants (id, name, code, username, password, contact_name, contact_phone, status) VALUES
|
||
|
|
(1, '测试幼儿园', 'SCHOOL001', 'school1', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '张校长', '13800138001', 'active');
|
||
|
|
|
||
|
|
-- 插入教师用户
|
||
|
|
INSERT INTO teachers (id, tenant_id, username, password, name, phone, email, status) VALUES
|
||
|
|
(1, 1, 'teacher1', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '测试教师1', '13800138002', 'teacher1@example.com', 'active'),
|
||
|
|
(2, 1, 'teacher2', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '测试教师2', '13800138003', 'teacher2@example.com', 'active');
|
||
|
|
|
||
|
|
-- 插入家长用户
|
||
|
|
INSERT INTO parents (id, tenant_id, username, password, name, phone, email, status) VALUES
|
||
|
|
(1, 1, 'parent1', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '测试家长1', '13800138004', 'parent1@example.com', 'active'),
|
||
|
|
(2, 1, 'parent2', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi', '测试家长2', '13800138005', 'parent2@example.com', 'active');
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 3. 验证数据
|
||
|
|
-- ============================================
|
||
|
|
|
||
|
|
SELECT '=== Admin Users ===' AS '';
|
||
|
|
SELECT id, username, name, status FROM admin_users;
|
||
|
|
|
||
|
|
SELECT '=== Tenants ===' AS '';
|
||
|
|
SELECT id, username, name, code, status FROM tenants;
|
||
|
|
|
||
|
|
SELECT '=== Teachers ===' AS '';
|
||
|
|
SELECT id, username, name, tenant_id, status FROM teachers;
|
||
|
|
|
||
|
|
SELECT '=== Parents ===' AS '';
|
||
|
|
SELECT id, username, name, tenant_id, status FROM parents;
|