lrj
2 天以前 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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<String, Object> 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<String, Object> 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<String, Object> 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<Map<String, Object>> activities = jdbcTemplate.queryForList(getActivitiesSql);
                
                System.out.println("当前可用的活动(最新5个):");
                for (Map<String, Object> activity : activities) {
                    System.out.println("  活动ID: " + activity.get("id") + 
                                     ", 活动名称: " + activity.get("name") + 
                                     ", 状态: " + activity.get("state"));
                }
                
                // 6. 为评委分配最新活动的权限(假设分配最新的活动)
                if (!activities.isEmpty()) {
                    Map<String, Object> 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<String, Object> 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();
        }
    }
}