lrj
昨天 9f8395fab13ca4b230a0f7d62636e209745c91d4
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
const axios = require('axios');
 
// 配置
const BASE_URL = 'http://localhost:8080/api';
const GRAPHQL_URL = `${BASE_URL}/graphql`;
 
// 测试数据
const testData = {
  activityId: "1",
  playerInfo: {
    name: "媒体API测试用户",
    phone: "13900139" + Date.now().toString().slice(-3), // 使用时间戳生成唯一手机号
    gender: 1,
    birthDate: "1990-01-01",
    education: "本科",
    introduction: "这是一个媒体API测试用户",
    description: "测试描述",
    avatarMediaId: "test-avatar-media-id-" + Date.now() // 模拟头像媒体ID
  },
  regionId: "1",
  projectName: "测试项目",
  description: "测试报名",
  attachmentMediaIds: [
    "test-attachment-" + Date.now() + "-1",
    "test-attachment-" + Date.now() + "-2"
  ] // 模拟附件媒体ID列表
};
 
// GraphQL 查询
const SUBMIT_REGISTRATION_MUTATION = `
  mutation SubmitActivityRegistration($input: ActivityRegistrationInput!) {
    submitActivityRegistration(input: $input) {
      success
      message
      registrationId
      playerId
      userId
    }
  }
`;
 
// 查询媒体记录的GraphQL查询
const GET_MEDIA_RECORDS_QUERY = `
  query MediasByTarget($targetType: Int!, $targetId: ID!) {
    mediasByTarget(targetType: $targetType, targetId: $targetId) {
      id
      name
      path
      fileExt
      mediaType
      fullUrl
    }
  }
`;
 
async function testMediaApiIntegration() {
  console.log('🚀 开始测试新的媒体API集成...\n');
 
  try {
    // 1. 提交报名(包含头像和附件媒体ID)
    console.log('📝 步骤1: 提交活动报名(包含媒体ID)...');
    const registrationResponse = await axios.post(GRAPHQL_URL, {
      query: SUBMIT_REGISTRATION_MUTATION,
      variables: {
        input: testData
      }
    });
 
    console.log('报名响应:', JSON.stringify(registrationResponse.data, null, 2));
 
    if (registrationResponse.data.errors) {
      console.error('❌ 报名提交失败:', registrationResponse.data.errors);
      return;
    }
 
    const result = registrationResponse.data.data.submitActivityRegistration;
    if (!result.success) {
      console.error('❌ 报名失败:', result.message);
      return;
    }
 
    console.log('✅ 报名成功!');
    console.log(`   - 活动报名ID: ${result.registrationId}`);
    console.log(`   - 选手ID: ${result.playerId}`);
    console.log(`   - 用户ID: ${result.userId}\n`);
 
    // 2. 验证头像媒体记录是否保存
    console.log('🔍 步骤2: 验证头像媒体记录...');
    try {
      const avatarMediaResponse = await axios.post(GRAPHQL_URL, {
        query: GET_MEDIA_RECORDS_QUERY,
        variables: {
          targetType: 1,
          targetId: result.playerId
        }
      });
 
      if (avatarMediaResponse.data.data && avatarMediaResponse.data.data.mediaRecords) {
        const avatarRecords = avatarMediaResponse.data.data.mediaRecords;
        console.log(`✅ 找到 ${avatarRecords.length} 条头像媒体记录`);
        avatarRecords.forEach(record => {
          console.log(`   - 媒体ID: ${record.id}, 路径: ${record.path}, 类型: ${record.mediaType}`);
        });
      } else {
        console.log('⚠️  未找到头像媒体记录(可能查询接口不存在)');
      }
    } catch (error) {
      console.log('⚠️  头像媒体记录查询失败(可能查询接口不存在):', error.message);
    }
 
    // 3. 验证附件媒体记录是否保存
    console.log('\n🔍 步骤3: 验证附件媒体记录...');
    try {
      const attachmentMediaResponse = await axios.post(GRAPHQL_URL, {
        query: GET_MEDIA_RECORDS_QUERY,
        variables: {
          targetType: 2,
          targetId: result.registrationId
        }
      });
 
      if (attachmentMediaResponse.data.data && attachmentMediaResponse.data.data.mediaRecords) {
        const attachmentRecords = attachmentMediaResponse.data.data.mediaRecords;
        console.log(`✅ 找到 ${attachmentRecords.length} 条附件媒体记录`);
        attachmentRecords.forEach(record => {
          console.log(`   - 媒体ID: ${record.id}, 路径: ${record.path}, 类型: ${record.mediaType}`);
        });
      } else {
        console.log('⚠️  未找到附件媒体记录(可能查询接口不存在)');
      }
    } catch (error) {
      console.log('⚠️  附件媒体记录查询失败(可能查询接口不存在):', error.message);
    }
 
    // 4. 检查数据库中的媒体记录(通过日志)
    console.log('\n📋 步骤4: 检查后端日志以验证媒体记录保存...');
    console.log('请查看后端控制台日志,应该能看到以下信息:');
    console.log('   - "开始保存选手头像媒体记录"');
    console.log('   - "选手头像媒体记录保存成功"');
    console.log('   - "开始保存附件媒体记录"');
    console.log('   - "附件媒体记录保存成功"');
 
    console.log('\n🎉 媒体API集成测试完成!');
 
  } catch (error) {
    console.error('❌ 测试过程中发生错误:', error.message);
    if (error.response) {
      console.error('响应数据:', JSON.stringify(error.response.data, null, 2));
    }
  }
}
 
// 运行测试
testMediaApiIntegration();