72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
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(); |