Codex Assistant
昨天 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
const axios = require('axios');
 
// 测试GraphQL返回的时间数据格式
async function testGraphQLTimeData() {
    console.log('🔍 测试GraphQL返回的时间数据格式...\n');
    
    const BASE_URL = 'http://localhost:8080/api';
    
    try {
        // 直接查询比赛列表(不需要认证)
        console.log('📋 查询比赛列表...');
        const activitiesQuery = `
            query getActivities {
                activities(page: 1, size: 10) {
                    content {
                        id
                        name
                        signupDeadline
                        matchTime
                        state
                        stateName
                    }
                }
            }
        `;
        
        const activitiesResponse = await axios.post(`${BASE_URL}/graphql`, {
            query: activitiesQuery
        }, {
            headers: {
                'Content-Type': 'application/json'
            }
        });
        
        if (activitiesResponse.data.errors) {
            console.error('❌ GraphQL错误:', activitiesResponse.data.errors);
            return;
        }
        
        const activities = activitiesResponse.data.data.activities.content;
        console.log(`📊 获取到 ${activities.length} 个比赛活动\n`);
        
        // 分析每个比赛的时间数据
        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.state} (${activity.stateName})`);
            
            // 检查时间数据的格式和内容
            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()}`);
                    console.log(`   年月日: ${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`);
                } 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()}`);
                    console.log(`   年月日: ${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`);
                } catch (e) {
                    console.log(`   ❌ 时间解析失败: ${e.message}`);
                }
            } else {
                console.log(`   matchTime: null 或 undefined`);
            }
            
            console.log('─'.repeat(60));
        });
        
        // 测试单个比赛详情
        if (activities.length > 0) {
            const firstActivity = activities[0];
            console.log(`\n🔍 测试单个比赛详情 (ID: ${firstActivity.id})...`);
            
            const detailQuery = `
                query GetActivityDetail($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'
                }
            });
            
            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}"`);
                }
                
                // 检查详情页时间格式
                console.log('\n🔍 详情页时间数据分析:');
                if (detail.signupDeadline) {
                    try {
                        const date = new Date(detail.signupDeadline);
                        console.log(`   详情页 signupDeadline 解析: ${date.toLocaleString()}`);
                        console.log(`   详情页 signupDeadline 年月日: ${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`);
                    } catch (e) {
                        console.log(`   ❌ 详情页 signupDeadline 解析失败: ${e.message}`);
                    }
                }
                
                if (detail.matchTime) {
                    try {
                        const date = new Date(detail.matchTime);
                        console.log(`   详情页 matchTime 解析: ${date.toLocaleString()}`);
                        console.log(`   详情页 matchTime 年月日: ${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`);
                    } catch (e) {
                        console.log(`   ❌ 详情页 matchTime 解析失败: ${e.message}`);
                    }
                }
            }
        }
        
    } catch (error) {
        console.error('❌ 请求失败:', error.message);
        if (error.response) {
            console.error('响应状态:', error.response.status);
            console.error('响应数据:', error.response.data);
        }
    }
}
 
// 运行测试
testGraphQLTimeData();