From 31913dceed5e283d2e8f181ea9194bc85be0dc96 Mon Sep 17 00:00:00 2001 From: sunzhuangzhuang <961120009@qq.com> Date: Wed, 17 Sep 2025 14:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/agent.js | 79 ++++++++++++++++++++++++--------------------- routes/transfers.js | 6 ++-- routes/users.js | 28 +++++++++++++++- 3 files changed, 73 insertions(+), 40 deletions(-) diff --git a/routes/agent.js b/routes/agent.js index 30b74c4..af06f72 100644 --- a/routes/agent.js +++ b/routes/agent.js @@ -12,7 +12,7 @@ const dayjs = require('dayjs'); router.get('/stats', agentAuth, async (req, res) => { try { const {id: agentId, userId} = req.agent; - console.log(req.agent) + // 获取下级用户统计 const [userStats] = await getDB().execute(` @@ -125,16 +125,19 @@ router.get('/stats_agent_directly', agentAuth, async (req, res) => { FROM users WHERE inviter = ? AND user_type = 'directly_operated' - `, [userId]); + `, [userId]) + //直营商户人数 let active_users = 0 + let operated_commission_sql = [] for (const id of userIds) { const [userTotal] = await getDB().execute(` SELECT COUNT(*) as total_users FROM users WHERE inviter = ? - `, [id]) + `, [id.id]) active_users += userTotal[0].total_users + operated_commission_sql.push(`to_user_id=${id.id}`) } userStats[0].active_users = active_users; userStats[0].total_operated = userIds.length; @@ -148,7 +151,7 @@ router.get('/stats_agent_directly', agentAuth, async (req, res) => { SELECT COUNT(*) as total_users FROM users WHERE inviter = ? - `, [id])//????????????????????? + `, [id]) total_share_users += userTotal[0].total_users } userStats[0].agent_share_users = total_share_users; @@ -157,13 +160,17 @@ router.get('/stats_agent_directly', agentAuth, async (req, res) => { SELECT id FROM users WHERE inviter=? AND user_type='directly_operated' `, [userId]) let total_operated_share_users = 0 + let operated_user_ids = [] + let operated_user_sql = [] for (const id of operated_share_users) { const [userTotal] = await getDB().execute(` SELECT COUNT(*) as total_users FROM users WHERE inviter = ? - `, [id])//????????????????????? + `, [id]) total_operated_share_users += userTotal[0].total_users + operated_user_sql.push(`to_user_id=?`) + operated_user_ids.push(userTotal[0].total_users) } userStats[0].operated_share_users = total_operated_share_users; @@ -179,42 +186,48 @@ router.get('/stats_agent_directly', agentAuth, async (req, res) => { WHERE to_user_id = ? AND transfer_type = 'user_to_agent' `, [userId]); + // 获取直营佣金 + let [operated_commission] = await getDB().execute(` + SELECT SUM(amount) as amount FROM transfers WHERE ${operated_commission_sql.join(' or ')} + `) // 获取直销商户利润 - // let [directly_agents_income] = await getDB().execute(` - - // `) - commissionStats[0].directly_agents_income = 1 + let [directly_agents_income] = await getDB().execute(` + SELECT SUM(amount) as amount FROM transfers WHERE to_user_id=? AND transfer_type='user_to_agent' AND source_type='agent_operated' + `,[userId]) + + commissionStats[0].directly_agents_income = directly_agents_income[0].amount || 0 // 获取直销商户分享利润 - // let [active_users_income] = await getDB().execute(` - - // `) - commissionStats[0].active_users_income = 2 + let [active_users_income] = await getDB().execute(` + SELECT SUM(amount) as amount + FROM transfers + WHERE (${operated_user_sql.join(' or ')}) + AND transfer_type = 'user_to_agent' + AND source_type = 'agent_operated' + `,[...operated_user_ids]) + commissionStats[0].active_users_income = active_users_income[0].amount || 0 - // 获取直营佣金 - // let [operated_commission] = await getDB().execute(` - - // `) - commissionStats[0].operated_commission = 3 + + commissionStats[0].operated_commission = operated_commission[0].amount || 0 // 获取已提现佣金 - // let [get_commission] = await getDB().execute(` - - // `) - commissionStats[0].get_commission = 4 + let [get_commission] = await getDB().execute(` + SELECT SUM(amount) as amount FROM transfers WHERE from_user_id=${userId} AND source_type='withdraw' AND created_at >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) + `) + commissionStats[0].get_commission = get_commission[0].amount || 0 // 获取待提现佣金 - // let [loading_commission] = await getDB().execute(` - - // `) - commissionStats[0].loading_commission = 5 + let [loading_commission] = await getDB().execute(` + SELECT SUM(balance) as balance FROM users WHERE inviter=${userId} + `) + commissionStats[0].loading_commission = Math.abs(loading_commission[0].balance) || 0 // 获取总收入 - // let [total_commission] = await getDB().execute(` - - // `) - commissionStats[0].total_commission = 12345 + let [total_commission] = await getDB().execute(` + SELECT SUM(balance) as balance FROM users WHERE id=${userId} + `) + commissionStats[0].total_commission =Math.abs(total_commission[0].balance) || 0 // 获取转账统计 const [transferStats] = await getDB().execute(` @@ -255,12 +268,6 @@ router.get('/stats_agent_directly', agentAuth, async (req, res) => { }); } catch (error) { - logger.error('获取代理统计数据失败', { - error: error.message, - stack: error.stack, - agentId: req.agent?.id - }); - res.status(500).json({ success: false, message: '获取统计数据失败' diff --git a/routes/transfers.js b/routes/transfers.js index 388dbda..ddc9330 100644 --- a/routes/transfers.js +++ b/routes/transfers.js @@ -134,13 +134,13 @@ router.get('/', agentAuth, async (req, res) => { let statsResult; [statsResult] = await getDB().execute(` SELECT COUNT(*) as total_transfers, - COUNT(CASE WHEN t.status = 'completed' THEN 1 END) as completed_transfers, + COUNT(CASE WHEN t.status = 'received' THEN 1 END) as completed_transfers, COUNT(CASE WHEN t.status = 'pending' THEN 1 END) as pending_transfers, COUNT(CASE WHEN t.status = 'failed' THEN 1 END) as failed_transfers, - CAST(COALESCE(SUM(CASE WHEN t.status = 'completed' THEN t.amount ELSE 0 END), + CAST(COALESCE(SUM(CASE WHEN t.status = 'received' THEN t.amount ELSE 0 END), 0) AS DECIMAL(10, 2)) as total_amount, CAST(COALESCE( - SUM(CASE WHEN t.status = 'completed' AND DATE (t.created_at) = CURDATE() THEN t.amount ELSE 0 + SUM(CASE WHEN t.status = 'received' AND DATE (t.created_at) = CURDATE() THEN t.amount ELSE 0 END), 0) AS DECIMAL(10, 2)) as today_amount, COUNT(CASE WHEN DATE (t.created_at) = CURDATE() THEN 1 END) as today_transfers FROM transfers t diff --git a/routes/users.js b/routes/users.js index 449c371..0ce5881 100644 --- a/routes/users.js +++ b/routes/users.js @@ -208,10 +208,36 @@ router.get('/directly_operated', agentAuth, async (req, res) => { const totalPages = Math.ceil(total / pageSize); const hasNextPage = pageNum < totalPages; const hasPrevPage = pageNum > 1; - + const all_total = { + balance_total : 0 + } + //直营用户融豆数量 + const balance_total = await getDB().execute(` + SELECT SUM(balance) as balance FROM users u + WHERE inviter=${agentId} + `) + all_total.balance_total = balance_total[0].balance || 0; + //今日提现 + const withdraw_total = await getDB().execute(` + SELECT SUM(amount) as amount + FROM transfers + WHERE source_type = 'withdraw' + AND from_user_id = ${agentId} + AND created_at >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) + `) + all_total.withdraw_total = withdraw_total[0].amount || 0 + //总提现次数 + const withdraw_num_total = await getDB().execute(` + SELECT COUNT(*) as total + FROM transfers + WHERE source_type = 'withdraw' + AND from_user_id = ${agentId} + `) + all_total.withdraw_num_total = withdraw_num_total[0].total || 0 res.json({ success: true, data: { + all_total, users, pagination: { current_page: pageNum,