92 lines
2.2 KiB
SQL
92 lines
2.2 KiB
SQL
-- ============================================
|
||
-- 初始化裁判-项目关联数据
|
||
-- 用于解决"您没有权限给该项目打分"的问题
|
||
-- ============================================
|
||
|
||
-- 说明:
|
||
-- 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;
|