const { initDB, getDB } = require('./database'); const matchingService = require('./services/matchingService'); /** * 批量处理所有符合条件的代理佣金 */ async function batchProcessCommissions() { try { console.log('初始化数据库连接...'); await initDB(); console.log('开始批量处理代理佣金...'); const db = getDB(); // 查找所有有代理关系且转账次数>=3但没有佣金记录的用户 const [usersNeedCommission] = await db.execute(` SELECT am.agent_id, am.merchant_id, u.phone as merchant_phone, agent.phone as agent_phone, COUNT(t.id) as transfer_count, COUNT(acr.id) as commission_count FROM agent_merchants am JOIN users u ON am.merchant_id = u.id JOIN users agent ON am.agent_id = agent.id LEFT JOIN transfers t ON am.merchant_id = t.from_user_id AND t.status = 'received' LEFT JOIN agent_commission_records acr ON am.agent_id = acr.agent_id AND am.merchant_id = acr.merchant_id AND acr.description LIKE '%第三次转账%' GROUP BY am.agent_id, am.merchant_id HAVING transfer_count >= 3 AND commission_count = 0 `); if (usersNeedCommission.length === 0) { console.log('没有找到需要处理佣金的用户'); return; } console.log(`找到 ${usersNeedCommission.length} 个用户需要处理佣金:`); for (const user of usersNeedCommission) { console.log(`\n处理用户: ${user.merchant_phone} (ID: ${user.merchant_id})`); console.log(` - 代理: ${user.agent_phone} (ID: ${user.agent_id})`); console.log(` - 转账次数: ${user.transfer_count}`); try { await matchingService.checkAndProcessAgentCommission(user.merchant_id); console.log(` ✅ 佣金处理成功`); } catch (error) { console.log(` ❌ 佣金处理失败: ${error.message}`); } } console.log('\n=== 批量处理完成 ==='); // 检查处理结果 const [finalCommissions] = await db.execute( 'SELECT COUNT(*) as total FROM agent_commission_records WHERE description LIKE "%第三次转账%"' ); console.log(`总共生成了 ${finalCommissions[0].total} 条佣金记录`); } catch (error) { console.error('批量处理失败:', error); } finally { process.exit(0); } } batchProcessCommissions();