docs: 迁移数据库文件至mysql目录并添加docker-compose配置
This commit is contained in:
31
server/docs/mysql/docker-compose.yml
Normal file
31
server/docs/mysql/docker-compose.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: campus-activity-mysql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: campus_activity
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
# 初始化 SQL 文件会自动按字母顺序执行
|
||||
- ./init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
||||
- ./sample_data.sql:/docker-entrypoint-initdb.d/02-sample_data.sql:ro
|
||||
# 数据持久化
|
||||
- ./mysql:/var/lib/mysql
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_general_ci
|
||||
- --default-authentication-plugin=mysql_native_password
|
||||
- --init-connect='SET NAMES utf8mb4'
|
||||
- --skip-character-set-client-handshake
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
@@ -103,8 +103,4 @@ CREATE TABLE `review` (
|
||||
KEY `idx_activity_id` (`activity_id`),
|
||||
CONSTRAINT `fk_review_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
|
||||
CONSTRAINT `fk_review_activity` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评价表';
|
||||
|
||||
-- 插入测试管理员账号(密码:admin123,BCrypt加密)
|
||||
INSERT INTO `user` (`username`, `password`, `name`, `role`) VALUES
|
||||
('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '系统管理员', 1);
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评价表';
|
||||
37
server/docs/mysql/sample_data.sql
Normal file
37
server/docs/mysql/sample_data.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
-- 校园活动组织与报名系统 - 示例数据
|
||||
-- 执行前请确保已运行 init.sql 创建数据库和表结构
|
||||
|
||||
USE `campus_activity`;
|
||||
|
||||
-- 插入测试管理员账号(密码:admin123,BCrypt加密)
|
||||
INSERT INTO `user` (`username`, `password`, `name`, `role`) VALUES
|
||||
('admin', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '系统管理员', 1);
|
||||
|
||||
-- ============================================
|
||||
-- 1. 插入示例学生账户(密码:123456)
|
||||
-- ============================================
|
||||
-- 密码 "123456" 的 BCrypt 加密值
|
||||
INSERT INTO `user` (`username`, `password`, `name`, `student_id`, `email`, `phone`, `role`, `status`) VALUES
|
||||
('student01', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生一', '2024001', 'zhangsan@example.com', '13800138001', 0, 1),
|
||||
('student02', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生二', '2024002', 'lisi@example.com', '13800138002', 0, 1),
|
||||
('student03', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生三', '2024003', 'wangwu@example.com', '13800138003', 0, 1),
|
||||
('student04', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生四', '2024004', 'zhaoliu@example.com', '13800138004', 0, 1),
|
||||
('student05', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生五', '2024005', 'sunqi@example.com', '13800138005', 0, 1),
|
||||
('student06', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生六', '2024006', 'zhouba@example.com', '13800138006', 0, 1),
|
||||
('student07', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生七', '2024007', 'wujiu@example.com', '13800138007', 0, 1),
|
||||
('student08', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生八', '2024008', 'zhengshi@example.com', '13800138008', 0, 1),
|
||||
('student09', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生九', '2024009', 'chenshiyi@example.com', '13800138009', 0, 1),
|
||||
('student10', '$2a$10$WxboxtWwPqb1un4nQV/O7e59sZFbZbc7tr1MmBDHhgGYbFGtg3ypi', '学生十', '2024010', 'liushier@example.com', '13800138010', 0, 1);
|
||||
|
||||
-- ============================================
|
||||
-- 2. 插入示例活动数据
|
||||
-- ============================================
|
||||
INSERT INTO `activity` (`title`, `description`, `cover_image`, `start_time`, `end_time`, `registration_deadline`, `location`, `max_participants`, `current_participants`, `status`, `category`, `admin_id`) VALUES
|
||||
('科技创新大赛', '校园年度科技创新大赛,展示学生创新成果,激发创新热情', '', '2026-01-15 09:00:00', '2026-01-15 17:00:00', '2026-01-14 23:59:59', '学术报告厅', 100, 0, 1, '科技竞赛', 1),
|
||||
('校园歌手大赛', '展示青春风采,唱响校园旋律', '', '2026-01-20 19:00:00', '2026-01-20 22:00:00', '2026-01-19 18:00:00', '大学生活动中心', 300, 0, 1, '文艺娱乐', 1),
|
||||
('编程马拉松', '48小时极限编程挑战,团队协作完成创新项目', '', '2026-01-25 09:00:00', '2026-01-27 09:00:00', '2026-01-23 23:59:59', '计算机学院实验室', 50, 0, 1, '科技竞赛', 1),
|
||||
('读书分享会', '分享阅读心得,交流思想感悟', '', '2026-01-18 14:00:00', '2026-01-18 16:30:00', '2026-01-17 12:00:00', '图书馆报告厅', 80, 0, 1, '学术讲座', 1),
|
||||
('篮球友谊赛', '增进友谊,强健体魄,展现体育精神', '', '2026-01-22 16:00:00', '2026-01-22 18:00:00', '2026-01-21 12:00:00', '体育馆', 40, 0, 1, '体育活动', 1),
|
||||
('创业讲座', '邀请成功企业家分享创业经验', '', '2026-01-28 14:00:00', '2026-01-28 17:00:00', '2026-01-27 12:00:00', '商学院报告厅', 150, 0, 1, '学术讲座', 1),
|
||||
('摄影展', '展示校园风光,记录美好瞬间', '', '2026-01-30 09:00:00', '2026-01-31 18:00:00', '2026-01-29 12:00:00', '艺术楼展厅', 200, 0, 1, '文艺娱乐', 1),
|
||||
('英语角活动', '提升英语口语能力,结交志同道合的朋友', '', '2026-01-16 19:00:00', '2026-01-16 21:00:00', '2026-01-15 18:00:00', '外语学院活动室', 30, 0, 1, '学术讲座', 1);
|
||||
@@ -1,105 +0,0 @@
|
||||
-- 校园活动组织与报名系统 - 示例数据
|
||||
-- 执行前请确保已运行 init.sql 创建数据库和表结构
|
||||
|
||||
USE `campus_activity`;
|
||||
|
||||
-- ============================================
|
||||
-- 1. 插入示例学生账户(密码:123456)
|
||||
-- ============================================
|
||||
-- 密码 "123456" 的 BCrypt 加密值
|
||||
INSERT INTO `user` (`username`, `password`, `name`, `student_id`, `email`, `phone`, `role`, `status`) VALUES
|
||||
('student01', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '张三', '2024001', 'zhangsan@example.com', '13800138001', 0, 1),
|
||||
('student02', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '李四', '2024002', 'lisi@example.com', '13800138002', 0, 1),
|
||||
('student03', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '王五', '2024003', 'wangwu@example.com', '13800138003', 0, 1),
|
||||
('student04', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '赵六', '2024004', 'zhaoliu@example.com', '13800138004', 0, 1),
|
||||
('student05', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '孙七', '2024005', 'sunqi@example.com', '13800138005', 0, 1),
|
||||
('student06', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '周八', '2024006', 'zhouba@example.com', '13800138006', 0, 1),
|
||||
('student07', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '吴九', '2024007', 'wujiu@example.com', '13800138007', 0, 1),
|
||||
('student08', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '郑十', '2024008', 'zhengshi@example.com', '13800138008', 0, 1),
|
||||
('student09', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '陈十一', '2024009', 'chenshiyi@example.com', '13800138009', 0, 1),
|
||||
('student10', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iKXP6X3SqmI8Q0WJLoUbWAHZJ.5i', '刘十二', '2024010', 'liushier@example.com', '13800138010', 0, 1);
|
||||
|
||||
-- ============================================
|
||||
-- 2. 插入示例活动数据
|
||||
-- ============================================
|
||||
INSERT INTO `activity` (`title`, `description`, `cover_image`, `start_time`, `end_time`, `registration_deadline`, `location`, `max_participants`, `current_participants`, `status`, `category`, `admin_id`) VALUES
|
||||
('科技创新大赛', '校园年度科技创新大赛,展示学生创新成果,激发创新热情', 'https://example.com/images/tech.jpg', '2026-01-15 09:00:00', '2026-01-15 17:00:00', '2026-01-14 23:59:59', '学术报告厅', 100, 0, 1, '科技竞赛', 1),
|
||||
('校园歌手大赛', '展示青春风采,唱响校园旋律', 'https://example.com/images/singer.jpg', '2026-01-20 19:00:00', '2026-01-20 22:00:00', '2026-01-19 18:00:00', '大学生活动中心', 300, 0, 1, '文艺娱乐', 1),
|
||||
('编程马拉松', '48小时极限编程挑战,团队协作完成创新项目', 'https://example.com/images/code.jpg', '2026-01-25 09:00:00', '2026-01-27 09:00:00', '2026-01-23 23:59:59', '计算机学院实验室', 50, 0, 1, '科技竞赛', 1),
|
||||
('读书分享会', '分享阅读心得,交流思想感悟', 'https://example.com/images/book.jpg', '2026-01-18 14:00:00', '2026-01-18 16:30:00', '2026-01-17 12:00:00', '图书馆报告厅', 80, 0, 1, '学术讲座', 1),
|
||||
('篮球友谊赛', '增进友谊,强健体魄,展现体育精神', 'https://example.com/images/basketball.jpg', '2026-01-22 16:00:00', '2026-01-22 18:00:00', '2026-01-21 12:00:00', '体育馆', 40, 0, 1, '体育活动', 1),
|
||||
('创业讲座', '邀请成功企业家分享创业经验', 'https://example.com/images/business.jpg', '2026-01-28 14:00:00', '2026-01-28 17:00:00', '2026-01-27 12:00:00', '商学院报告厅', 150, 0, 1, '学术讲座', 1),
|
||||
('摄影展', '展示校园风光,记录美好瞬间', 'https://example.com/images/photo.jpg', '2026-01-30 09:00:00', '2026-01-31 18:00:00', '2026-01-29 12:00:00', '艺术楼展厅', 200, 0, 1, '文艺娱乐', 1),
|
||||
('英语角活动', '提升英语口语能力,结交志同道合的朋友', 'https://example.com/images/english.jpg', '2026-01-16 19:00:00', '2026-01-16 21:00:00', '2026-01-15 18:00:00', '外语学院活动室', 30, 0, 1, '学术讲座', 1);
|
||||
|
||||
-- ============================================
|
||||
-- 3. 插入示例报名数据
|
||||
-- ============================================
|
||||
-- 学生报名活动
|
||||
INSERT INTO `registration` (`user_id`, `activity_id`, `ticket_code`, `status`) VALUES
|
||||
(2, 1, 'TICKET-20260115001', 1), -- 张三报名科技创新大赛
|
||||
(3, 1, 'TICKET-20260115002', 1), -- 李四报名科技创新大赛
|
||||
(4, 1, 'TICKET-20260115003', 1), -- 王五报名科技创新大赛
|
||||
(2, 2, 'TICKET-20260120001', 1), -- 张三报名校园歌手大赛
|
||||
(5, 2, 'TICKET-20260120002', 1), -- 赵六报名校园歌手大赛
|
||||
(6, 2, 'TICKET-20260120003', 1), -- 孙七报名校园歌手大赛
|
||||
(7, 2, 'TICKET-20260120004', 1), -- 周八报名校园歌手大赛
|
||||
(3, 3, 'TICKET-20260125001', 1), -- 李四报名编程马拉松
|
||||
(4, 3, 'TICKET-20260125002', 1), -- 王五报名编程马拉松
|
||||
(8, 3, 'TICKET-20260125003', 1), -- 吴九报名编程马拉松
|
||||
(2, 4, 'TICKET-20260118001', 1), -- 张三报名读书分享会
|
||||
(5, 4, 'TICKET-20260118002', 1), -- 赵六报名读书分享会
|
||||
(9, 4, 'TICKET-20260118003', 1), -- 郑十报名读书分享会
|
||||
(3, 5, 'TICKET-20260122001', 1), -- 李四报名篮球友谊赛
|
||||
(6, 5, 'TICKET-20260122002', 1), -- 孙七报名篮球友谊赛
|
||||
(10, 5, 'TICKET-20260122003', 1), -- 刘十二报名篮球友谊赛
|
||||
(4, 6, 'TICKET-20260128001', 1), -- 王五报名创业讲座
|
||||
(7, 6, 'TICKET-20260128002', 1), -- 周八报名创业讲座
|
||||
(2, 7, 'TICKET-20260130001', 1), -- 张三报名摄影展
|
||||
(5, 7, 'TICKET-20260130002', 1), -- 赵六报名摄影展
|
||||
(8, 7, 'TICKET-20260130003', 1), -- 吴九报名摄影展
|
||||
(3, 8, 'TICKET-20260116001', 1), -- 李四报名英语角
|
||||
(9, 8, 'TICKET-20260116002', 1); -- 郑十报名英语角
|
||||
|
||||
-- 更新活动的当前报名人数
|
||||
UPDATE `activity` SET `current_participants` = 3 WHERE `id` = 1;
|
||||
UPDATE `activity` SET `current_participants` = 4 WHERE `id` = 2;
|
||||
UPDATE `activity` SET `current_participants` = 3 WHERE `id` = 3;
|
||||
UPDATE `activity` SET `current_participants` = 3 WHERE `id` = 4;
|
||||
UPDATE `activity` SET `current_participants` = 3 WHERE `id` = 5;
|
||||
UPDATE `activity` SET `current_participants` = 2 WHERE `id` = 6;
|
||||
UPDATE `activity` SET `current_participants` = 3 WHERE `id` = 7;
|
||||
UPDATE `activity` SET `current_participants` = 2 WHERE `id` = 8;
|
||||
|
||||
-- ============================================
|
||||
-- 4. 插入示例签到数据
|
||||
-- ============================================
|
||||
INSERT INTO `check_in` (`registration_id`, `user_id`, `activity_id`, `check_in_method`) VALUES
|
||||
(1, 2, 1, 0), -- 张三扫码签到科技创新大赛
|
||||
(2, 3, 1, 0), -- 李四扫码签到科技创新大赛
|
||||
(4, 2, 2, 1), -- 张三管理员代签校园歌手大赛
|
||||
(11, 2, 4, 0), -- 张三扫码签到读书分享会
|
||||
(15, 3, 5, 0); -- 李四扫码签到篮球友谊赛
|
||||
|
||||
-- 更新报名状态为已签到
|
||||
UPDATE `registration` SET `status` = 2 WHERE `id` IN (1, 2, 4, 11, 15);
|
||||
|
||||
-- ============================================
|
||||
-- 5. 插入示例评价数据
|
||||
-- ============================================
|
||||
INSERT INTO `review` (`user_id`, `activity_id`, `rating`, `content`) VALUES
|
||||
(2, 1, 5, '非常有意义的活动,学到了很多新技术!'),
|
||||
(3, 1, 4, '组织得很好,希望下次能增加更多互动环节'),
|
||||
(2, 2, 5, '歌手们都很棒,现场气氛热烈!'),
|
||||
(5, 2, 4, '活动很精彩,就是座位有点紧张'),
|
||||
(2, 4, 5, '分享的内容很有深度,受益匪浅'),
|
||||
(5, 4, 4, '书籍推荐很实用,期待下次活动'),
|
||||
(3, 5, 5, '比赛很激烈,团队合作很重要'),
|
||||
(6, 5, 4, '裁判很专业,场地也不错');
|
||||
|
||||
-- ============================================
|
||||
-- 数据插入完成
|
||||
-- ============================================
|
||||
SELECT '示例数据插入完成!' AS message;
|
||||
SELECT '管理员账号:admin / admin123' AS admin_account;
|
||||
SELECT '学生账号:student01-student10 / 123456' AS student_accounts;
|
||||
Reference in New Issue
Block a user