package com.rongyichuang; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.ActiveProfiles; import java.util.List; import java.util.Map; @SpringBootTest @ActiveProfiles("test") public class AssignActivityPermissionTest { @Autowired private JdbcTemplate jdbcTemplate; @Test public void assignActivityPermissionToJudge68() { System.out.println("=== 为评委ID=68分配活动权限 ==="); try { Long judgeId = 68L; // 1. 确认评委存在 String checkJudgeSql = "SELECT id, name, user_id FROM t_judge WHERE id = ?"; Map judge = jdbcTemplate.queryForMap(checkJudgeSql, judgeId); System.out.println("评委信息: ID=" + judge.get("id") + ", 姓名=" + judge.get("name") + ", 用户ID=" + judge.get("user_id")); // 2. 查看最新的几个活动 String getActivitiesSql = "SELECT id, name, state FROM t_activity WHERE state = 1 ORDER BY id DESC LIMIT 5"; List> activities = jdbcTemplate.queryForList(getActivitiesSql); System.out.println("最新的活动列表:"); for (Map activity : activities) { System.out.println(" 活动ID: " + activity.get("id") + ", 活动名称: " + activity.get("name") + ", 状态: " + activity.get("state")); } // 3. 为评委分配最新活动的权限 if (!activities.isEmpty()) { Map latestActivity = activities.get(0); Long activityId = ((Number) latestActivity.get("id")).longValue(); String activityName = (String) latestActivity.get("name"); // 检查是否已经有权限 String checkPermissionSql = "SELECT COUNT(*) as count FROM t_activity_judge WHERE judge_id = ? AND activity_id = ?"; Map permissionExists = jdbcTemplate.queryForMap(checkPermissionSql, judgeId, activityId); if (((Number) permissionExists.get("count")).intValue() == 0) { // 基于现有记录复制stage_id,使用活动ID作为stage_id(简化处理) String insertPermissionSql = "INSERT INTO t_activity_judge (judge_id, activity_id, stage_id, state, version) VALUES (?, ?, ?, 1, 0)"; int result = jdbcTemplate.update(insertPermissionSql, judgeId, activityId, activityId); if (result > 0) { System.out.println("✅ 成功为评委分配活动权限: " + activityName + " (ID=" + activityId + ")"); } else { System.out.println("❌ 分配活动权限失败"); } } else { System.out.println("评委已经有该活动的权限"); } // 4. 验证权限分配结果 String verifyPermissionSql = "SELECT aj.activity_id, a.name as activity_name, aj.state " + "FROM t_activity_judge aj " + "JOIN t_activity a ON aj.activity_id = a.id " + "WHERE aj.judge_id = ?"; List> permissions = jdbcTemplate.queryForList(verifyPermissionSql, judgeId); System.out.println("评委ID=" + judgeId + " 的所有活动权限:"); for (Map permission : permissions) { System.out.println(" 活动ID: " + permission.get("activity_id") + ", 活动名称: " + permission.get("activity_name") + ", 权限状态: " + permission.get("state")); } if (permissions.isEmpty()) { System.out.println("❌ 该评委仍然没有任何活动权限!"); } else { System.out.println("✅ 权限分配成功,评委现在有 " + permissions.size() + " 个活动的评审权限"); } } else { System.out.println("❌ 没有找到可用的活动"); } } catch (Exception e) { System.out.println("分配权限时发生异常: " + e.getMessage()); e.printStackTrace(); } } }