Files
martial-master/init-judge-project.sql
宅房 f6c019e520
All checks were successful
continuous-integration/drone/push Build is passing
fix bugs
2025-12-14 17:38:15 +08:00

92 lines
2.2 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.
-- ============================================
-- 初始化裁判-项目关联数据
-- 用于解决"您没有权限给该项目打分"的问题
-- ============================================
-- 说明:
-- 1. 这个脚本会为所有裁判分配所有项目的评分权限
-- 2. 如果需要更精细的权限控制,请根据实际情况修改
-- 3. 执行前请确保 martial_judge 和 martial_project 表中已有数据
-- 清空现有的裁判-项目关联(可选)
-- TRUNCATE TABLE martial_judge_project;
-- 方案1为所有裁判分配所有项目适用于测试环境
INSERT INTO martial_judge_project (
competition_id,
judge_id,
project_id,
assign_time,
status,
is_deleted,
create_time,
update_time
)
SELECT
j.competition_id,
j.id AS judge_id,
p.id AS project_id,
NOW() AS assign_time,
1 AS status,
0 AS is_deleted,
NOW() AS create_time,
NOW() AS update_time
FROM martial_judge j
CROSS JOIN martial_project p
WHERE j.is_deleted = 0
AND p.is_deleted = 0
AND NOT EXISTS (
SELECT 1 FROM martial_judge_project jp
WHERE jp.judge_id = j.id
AND jp.project_id = p.id
AND jp.is_deleted = 0
);
-- 方案2为特定裁判分配特定项目适用于生产环境
-- 示例为裁判ID=456分配项目ID=5的权限
/*
INSERT INTO martial_judge_project (
competition_id,
judge_id,
project_id,
assign_time,
status,
is_deleted,
create_time,
update_time
) VALUES (
200, -- 比赛ID
456, -- 裁判ID
5, -- 项目ID
NOW(),
1,
0,
NOW(),
NOW()
);
*/
-- 验证数据
SELECT
jp.id,
j.name AS judge_name,
p.project_name,
jp.status,
jp.assign_time
FROM martial_judge_project jp
LEFT JOIN martial_judge j ON jp.judge_id = j.id
LEFT JOIN martial_project p ON jp.project_id = p.id
WHERE jp.is_deleted = 0
ORDER BY jp.judge_id, jp.project_id;
-- 查看每个裁判分配的项目数量
SELECT
j.id AS judge_id,
j.name AS judge_name,
COUNT(jp.id) AS project_count
FROM martial_judge j
LEFT JOIN martial_judge_project jp ON j.id = jp.judge_id AND jp.is_deleted = 0
WHERE j.is_deleted = 0
GROUP BY j.id, j.name
ORDER BY j.id;