Codex Assistant
1 天以前 58d9f460b2f8c34430285115e2557d18333c5cab
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
const axios = require('axios');
 
// 测试使用微信登录code获取比赛数据
async function testWxActivityData() {
    console.log('🔍 使用微信登录code测试比赛数据获取...\n');
    
    const BASE_URL = 'http://localhost:8080/api';
    const wxCode = '0c36Ly000Y2S6V18qW0008rzpy36Ly0S';
    
    try {
        // 1. 先进行微信登录获取token
        console.log('📱 步骤1: 微信登录获取token...');
        const loginResponse = await axios.post(`${BASE_URL}/auth/wx-login`, {
            code: wxCode
        }, {
            headers: {
                'Content-Type': 'application/json'
            }
        });
        
        if (loginResponse.data.token) {
            const token = loginResponse.data.token;
            console.log('✅ 登录成功,获取到token');
            
            // 2. 使用token获取比赛列表
            console.log('\n📋 步骤2: 获取比赛列表...');
            const activitiesQuery = `
                query getActivities {
                    getActivities {
                        id
                        name
                        description
                        signupDeadline
                        matchTime
                        address
                        state
                        stateName
                        playerCount
                        playerMax
                    }
                }
            `;
            
            const activitiesResponse = await axios.post(`${BASE_URL}/graphql`, {
                query: activitiesQuery
            }, {
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${token}`
                }
            });
            
            if (activitiesResponse.data.errors) {
                console.error('❌ GraphQL错误:', activitiesResponse.data.errors);
                return;
            }
            
            const activities = activitiesResponse.data.data.getActivities;
            console.log(`📊 获取到 ${activities.length} 个比赛活动\n`);
            
            // 3. 分析每个比赛的时间数据
            activities.forEach((activity, index) => {
                console.log(`🏆 比赛 ${index + 1}: ${activity.name}`);
                console.log(`   ID: ${activity.id}`);
                console.log(`   📅 原始 signupDeadline: "${activity.signupDeadline}"`);
                console.log(`   🏁 原始 matchTime: "${activity.matchTime}"`);
                console.log(`   📍 地址: ${activity.address || '未设置'}`);
                console.log(`   📊 状态: ${activity.state} (${activity.stateName})`);
                console.log(`   👥 报名人数: ${activity.playerCount}/${activity.playerMax || '无限制'}`);
                
                // 检查时间数据的格式和内容
                console.log('\n🔍 时间数据分析:');
                if (activity.signupDeadline) {
                    console.log(`   signupDeadline 类型: ${typeof activity.signupDeadline}`);
                    console.log(`   signupDeadline 长度: ${activity.signupDeadline.length}`);
                    console.log(`   signupDeadline 内容: "${activity.signupDeadline}"`);
                    
                    // 尝试解析时间
                    try {
                        const date = new Date(activity.signupDeadline);
                        console.log(`   解析后的日期: ${date.toLocaleString()}`);
                        console.log(`   ISO格式: ${date.toISOString()}`);
                    } catch (e) {
                        console.log(`   ❌ 时间解析失败: ${e.message}`);
                    }
                } else {
                    console.log(`   signupDeadline: null 或 undefined`);
                }
                
                if (activity.matchTime) {
                    console.log(`   matchTime 类型: ${typeof activity.matchTime}`);
                    console.log(`   matchTime 长度: ${activity.matchTime.length}`);
                    console.log(`   matchTime 内容: "${activity.matchTime}"`);
                    
                    // 尝试解析时间
                    try {
                        const date = new Date(activity.matchTime);
                        console.log(`   解析后的日期: ${date.toLocaleString()}`);
                        console.log(`   ISO格式: ${date.toISOString()}`);
                    } catch (e) {
                        console.log(`   ❌ 时间解析失败: ${e.message}`);
                    }
                } else {
                    console.log(`   matchTime: null 或 undefined`);
                }
                
                console.log('─'.repeat(60));
            });
            
            // 4. 测试单个比赛详情
            if (activities.length > 0) {
                const firstActivity = activities[0];
                console.log(`\n🔍 步骤3: 测试单个比赛详情 (ID: ${firstActivity.id})...`);
                
                const detailQuery = `
                    query GetActivityDetailAndStatus($id: ID!) {
                        activity(id: $id) {
                            id
                            name
                            description
                            signupDeadline
                            matchTime
                            address
                            state
                            stateName
                            playerCount
                            playerMax
                        }
                    }
                `;
                
                const detailResponse = await axios.post(`${BASE_URL}/graphql`, {
                    query: detailQuery,
                    variables: { id: firstActivity.id.toString() }
                }, {
                    headers: {
                        'Content-Type': 'application/json',
                        'Authorization': `Bearer ${token}`
                    }
                });
                
                if (detailResponse.data.errors) {
                    console.error('❌ 详情查询GraphQL错误:', detailResponse.data.errors);
                } else {
                    const detail = detailResponse.data.data.activity;
                    console.log('📋 比赛详情数据:');
                    console.log(`   📅 详情页 signupDeadline: "${detail.signupDeadline}"`);
                    console.log(`   🏁 详情页 matchTime: "${detail.matchTime}"`);
                    
                    // 比较列表和详情的数据是否一致
                    if (detail.signupDeadline === firstActivity.signupDeadline) {
                        console.log('✅ 列表和详情的 signupDeadline 一致');
                    } else {
                        console.log('❌ 列表和详情的 signupDeadline 不一致');
                        console.log(`   列表: "${firstActivity.signupDeadline}"`);
                        console.log(`   详情: "${detail.signupDeadline}"`);
                    }
                    
                    if (detail.matchTime === firstActivity.matchTime) {
                        console.log('✅ 列表和详情的 matchTime 一致');
                    } else {
                        console.log('❌ 列表和详情的 matchTime 不一致');
                        console.log(`   列表: "${firstActivity.matchTime}"`);
                        console.log(`   详情: "${detail.matchTime}"`);
                    }
                }
            }
            
        } else {
            console.error('❌ 微信登录失败:', loginResponse.data);
        }
        
    } catch (error) {
        console.error('❌ 请求失败:', error.message);
        if (error.response) {
            console.error('响应状态:', error.response.status);
            console.error('响应数据:', error.response.data);
        }
    }
}
 
// 运行测试
testWxActivityData();