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();