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 CreateJudgeForUser2Test { @Autowired private JdbcTemplate jdbcTemplate; @Test public void createJudgeForUser2() { System.out.println("=== 为用户ID=2创建评委记录 ==="); try { // 1. 首先检查用户ID=2的基本信息 String getUserInfoSql = "SELECT id, phone, name FROM t_user WHERE id = 2"; Map userInfo = jdbcTemplate.queryForMap(getUserInfoSql); System.out.println("用户信息: ID=" + userInfo.get("id") + ", 手机号=" + userInfo.get("phone") + ", 姓名=" + userInfo.get("name")); // 2. 检查是否已经有评委记录 String checkJudgeSql = "SELECT COUNT(*) as count FROM t_judge WHERE user_id = 2"; Map judgeExists = jdbcTemplate.queryForMap(checkJudgeSql); if (((Number) judgeExists.get("count")).intValue() > 0) { System.out.println("用户ID=2已经有评委记录,无需重复创建"); return; } // 3. 创建评委记录 String userName = (String) userInfo.get("name"); String userPhone = (String) userInfo.get("phone"); if (userName == null || userName.trim().isEmpty()) { userName = "评委_" + userPhone; // 如果没有姓名,使用手机号 } // 先查看现有评委记录的字段,复制一个类似的记录 String copyExistingJudgeSql = "INSERT INTO t_judge (name, user_id, phone, gender, state, description, version, stage_id) " + "SELECT ?, ?, ?, gender, state, '系统自动创建的评委', 0, stage_id FROM t_judge WHERE id = 65 LIMIT 1"; int result = jdbcTemplate.update(copyExistingJudgeSql, userName, 2, userPhone); if (result > 0) { System.out.println("✅ 成功为用户ID=2创建评委记录"); // 4. 获取新创建的评委ID String getNewJudgeIdSql = "SELECT id, name FROM t_judge WHERE user_id = 2"; Map newJudge = jdbcTemplate.queryForMap(getNewJudgeIdSql); Long judgeId = ((Number) newJudge.get("id")).longValue(); String judgeName = (String) newJudge.get("name"); System.out.println("新评委信息: ID=" + judgeId + ", 姓名=" + judgeName); // 5. 查看当前有哪些活动可以分配权限 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("当前可用的活动(最新5个):"); for (Map activity : activities) { System.out.println(" 活动ID: " + activity.get("id") + ", 活动名称: " + activity.get("name") + ", 状态: " + activity.get("state")); } // 6. 为评委分配最新活动的权限(假设分配最新的活动) 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) { String insertPermissionSql = "INSERT INTO t_activity_judge (judge_id, activity_id, state, create_time, update_time) VALUES (?, ?, 1, NOW(), NOW())"; int permissionResult = jdbcTemplate.update(insertPermissionSql, judgeId, activityId); if (permissionResult > 0) { System.out.println("✅ 成功为评委分配活动权限: " + activityName + " (ID=" + activityId + ")"); } else { System.out.println("❌ 分配活动权限失败"); } } else { System.out.println("评委已经有该活动的权限"); } } } else { System.out.println("❌ 创建评委记录失败"); } } catch (Exception e) { System.out.println("创建评委记录时发生异常: " + e.getMessage()); e.printStackTrace(); } } }