diff --git a/routes/agents.js b/routes/agents.js index 7b2a3fd..03aba40 100644 --- a/routes/agents.js +++ b/routes/agents.js @@ -194,13 +194,15 @@ router.get('/merchants/:agent_id', async (req, res) => { // 首先获取代理的注册时间 const [agentInfo] = await getDB().execute( - `SELECT ra.created_at as agent_created_at, ra.region_id + `SELECT ra.created_at as agent_created_at, ra.region_id, ra.user_id FROM regional_agents ra WHERE ra.id = ?`, [parseInt(agent_id)] ); const regionId = agentInfo[0].region_id; + const userId = agentInfo[0].user_id; + if (!agentInfo || agentInfo.length === 0) { return res.status(404).json({success: false, message: '代理不存在'}); } @@ -215,7 +217,7 @@ router.get('/merchants/:agent_id', async (req, res) => { u.real_name, u.created_at, u.audit_status, - IFNULL(am.created_at, '未关联') as joined_at, + IFNULL(u.created_at, '未关联') as joined_at, CASE WHEN u.created_at < ? AND u.district_id = ? THEN 1 ELSE 0 @@ -227,25 +229,20 @@ router.get('/merchants/:agent_id', async (req, res) => { (SELECT COUNT(*) FROM matching_orders WHERE initiator_id = u.id - AND status = 'completed') as completed_matches, - (SELECT COUNT(*) - FROM agent_commission_records - WHERE merchant_id = u.id - AND agent_id = ?) as commission_count + AND status = 'completed') as completed_matches + FROM users u - LEFT JOIN agent_merchants am ON u.id = am.merchant_id AND am.agent_id = ? - WHERE (am.agent_id = ? OR (u.created_at < ? AND u.district_id = ? AND u.role = 'user')) + WHERE (u.inviter = ? OR (u.created_at < ? AND u.district_id = ? AND u.role = 'user')) ORDER BY u.created_at DESC LIMIT ${parseInt(limit)} OFFSET ${parseInt(offset)}`, - [agentCreatedAt, parseInt(regionId), agentCreatedAt, parseInt(regionId), parseInt(agent_id), parseInt(agent_id), parseInt(agent_id), agentCreatedAt, parseInt(regionId)] + [agentCreatedAt, parseInt(regionId), agentCreatedAt, parseInt(regionId), parseInt(userId), parseInt(agent_id), parseInt(agent_id), agentCreatedAt, parseInt(regionId)] ); // 获取总数(包括代理关联的商户和符合条件的早期商户) const [countResult] = await getDB().execute( `SELECT COUNT(*) as total FROM users u - LEFT JOIN agent_merchants am ON u.id = am.merchant_id AND am.agent_id = ? - WHERE (am.agent_id = ? OR (u.created_at < ? AND u.district_id = ? AND u.role = 'user'))`, + WHERE (u.inviter = ? OR (u.created_at < ? AND u.district_id = ? AND u.role = 'user'))`, [parseInt(agent_id), parseInt(agent_id), agentCreatedAt, parseInt(regionId)] ); @@ -264,8 +261,7 @@ router.get('/merchants/:agent_id', async (req, res) => { const [normalMerchantStats] = await getDB().execute( `SELECT COUNT(*) as normal_merchant_count FROM users u - LEFT JOIN agent_merchants am ON u.id = am.merchant_id AND am.agent_id = ? - WHERE (am.agent_id = ? AND (u.created_at >= ? OR u.district_id != ?))`, + WHERE (u.inviter = ? AND (u.created_at >= ? OR u.district_id != ?))`, [parseInt(agent_id), parseInt(agent_id), agentCreatedAt, parseInt(regionId)] );