Files
gym-manage/temp_migration_backup/V23__Add_Coach_Test_Data.sql

94 lines
6.3 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.
-- ============================================================
-- V23: 教练账号测试数据
-- 描述: 创建教练角色、教练用户及相关团课测试数据
-- 日期: 2026-07-14
-- ============================================================
-- ============================================================
-- 1. 新增教练专属权限
-- 教练只能查看自己教授的团课/预约/签到信息,不能修改数据库
-- ============================================================
INSERT INTO sys_permission (permission_name, permission_code, resource, action, description, status, create_by, update_by, created_at, updated_at) VALUES
('查看自己的团课', 'coach:course:view', '/api/coach/courses', 'GET', '查看教练自己教授的团课列表及详情', 1, 'system', 'system', NOW(), NOW()),
('查看自己团课的预约', 'coach:booking:view', '/api/coach/bookings', 'GET', '查看教练自己团课的会员预约记录', 1, 'system', 'system', NOW(), NOW()),
('查看自己团课的签到', 'coach:signIn:view', '/api/coach/signins', 'GET', '查看教练自己团课的会员签到记录', 1, 'system', 'system', NOW(), NOW()),
('教练执行签到', 'coach:signIn:create', '/api/coach/signins', 'POST', '教练为自己团课的会员执行签到操作', 1, 'system', 'system', NOW(), NOW())
ON CONFLICT (permission_code) DO NOTHING;
-- ============================================================
-- 2. 教练角色
-- ============================================================
INSERT INTO sys_role (id, role_name, role_key, role_sort, status, create_by, update_by, created_at, updated_at)
VALUES (5, '教练', 'coach', 5, 1, 'system', 'system', NOW(), NOW())
ON CONFLICT (role_key) DO NOTHING;
-- ============================================================
-- 3. 教练用户(密码: Test@123
-- ============================================================
INSERT INTO sys_user (id, username, password, email, phone, nickname, status, create_by, update_by, created_at, updated_at)
VALUES (20, 'coach', '$2a$12$nZ1EMUpZQljbnEdIKzH72eHlDJKUmHmHppnTTVth/SlHs5VpSAr8C', 'coach@novalon.com', '13900000001', '张教练', 1, 'system', 'system', NOW(), NOW())
ON CONFLICT (username) DO NOTHING;
-- ============================================================
-- 4. 教练角色关联
-- ============================================================
INSERT INTO user_role (user_id, role_id, created_by, created_at)
VALUES (20, 5, 'system', NOW())
ON CONFLICT (user_id, role_id) DO NOTHING;
-- ============================================================
-- 5. 为教练角色分配有限权限
-- 教练只能查看自己教授的团课、查看自己团课的预约/签到信息、为自己团课的会员签到
-- 不能对数据库进行写操作(签到属于业务操作,非数据库直接写入)
-- ============================================================
INSERT INTO sys_role_permission (role_id, permission_id, create_by, update_by, created_at, updated_at)
SELECT 5, id, 'system', 'system', NOW(), NOW()
FROM sys_permission
WHERE permission_code IN (
'coach:course:view', -- 查看自己的团课
'coach:booking:view', -- 查看自己团课的预约信息
'coach:signIn:view', -- 查看自己团课的签到信息
'coach:signIn:create', -- 为自己团课的会员签到
'system:notice:view' -- 查看系统公告
)
AND NOT EXISTS (
SELECT 1 FROM sys_role_permission WHERE role_id = 5 AND permission_id = sys_permission.id
);
-- ============================================================
-- 6. 为教练分配今天的测试团课
-- ============================================================
INSERT INTO group_course (course_name, coach_id, course_type, start_time, end_time, max_members, current_members, status, location, description, stored_value_amount, create_by, created_at, updated_at)
VALUES
('核心力量训练', 20, (SELECT id FROM group_course_type WHERE type_name = '核心训练' LIMIT 1),
CURRENT_DATE + TIME '08:00', CURRENT_DATE + TIME '09:00', 15, 3, '0', '健身房B区', '针对核心肌群的专项训练,适合所有水平学员', 50.00, 'system', NOW(), NOW()),
('瑜伽入门', 20, (SELECT id FROM group_course_type WHERE type_name = '瑜伽入门' LIMIT 1),
CURRENT_DATE + TIME '10:00', CURRENT_DATE + TIME '11:00', 12, 5, '0', '瑜伽教室', '基础的瑜伽体式教学,新课上线欢迎参加', 50.00, 'system', NOW(), NOW()),
('动感单车', 20, (SELECT id FROM group_course_type WHERE type_name = '动感单车' LIMIT 1),
CURRENT_DATE + TIME '14:00', CURRENT_DATE + TIME '15:00', 20, 8, '0', '单车房', '高强度燃脂骑行,动感音乐带你飞', 50.00, 'system', NOW(), NOW()),
('晚间普拉提', 20, (SELECT id FROM group_course_type WHERE type_name = '普拉提' LIMIT 1),
CURRENT_DATE + TIME '18:00', CURRENT_DATE + TIME '19:00', 10, 2, '0', '普拉提教室', '注重核心力量和身体控制,放松一天疲劳', 50.00, 'system', NOW(), NOW());
-- ============================================================
-- 7. 为教练创建一个未来的团课(方便测试时间表)
-- ============================================================
INSERT INTO group_course (course_name, coach_id, course_type, start_time, end_time, max_members, current_members, status, location, description, stored_value_amount, create_by, created_at, updated_at)
VALUES
('HIIT燃脂训练', 20, (SELECT id FROM group_course_type WHERE type_name = 'HIIT训练' LIMIT 1),
CURRENT_DATE + INTERVAL '1 day' + TIME '08:00', CURRENT_DATE + INTERVAL '1 day' + TIME '09:00',
15, 0, '0', '综合训练区', '高强度间歇训练,挑战心肺极限', 50.00, 'system', NOW(), NOW()),
('周末瑜伽', 20, (SELECT id FROM group_course_type WHERE type_name = '瑜伽进阶' LIMIT 1),
CURRENT_DATE + INTERVAL '3 days' + TIME '09:00', CURRENT_DATE + INTERVAL '3 days' + TIME '10:30',
12, 0, '0', '瑜伽教室', '针对有基础的进阶瑜伽课程', 50.00, 'system', NOW(), NOW());
-- ============================================================
-- 8. 重置序列值
-- ============================================================
SELECT setval('sys_role_id_seq', GREATEST((SELECT COALESCE(MAX(id), 0) FROM sys_role), 5));
SELECT setval('sys_user_id_seq', GREATEST((SELECT COALESCE(MAX(id), 0) FROM sys_user), 20));
SELECT setval('group_course_id_seq', (SELECT COALESCE(MAX(id), 0) FROM group_course));