This commit is contained in:
2025-09-16 17:39:51 +08:00
parent 14a3c39f9d
commit 61476e2b8e
9 changed files with 768 additions and 722 deletions

View File

@@ -369,35 +369,31 @@ router.get('/:id/merchants', authenticateAdmin, async (req, res) => {
const offset = (pageNum - 1) * limitNum;
// 检查代理是否存在
const agentResult = await db.query('SELECT * FROM regional_agents WHERE id = ?', [id]);
const agentResult = await db.query(`SELECT * FROM users WHERE id = ? AND (user_type='agent' OR user_type='agent_directly')`, [id]);
if (!agentResult || agentResult.length === 0) {
return res.status(404).json({ success: false, message: '代理不存在' });
}
// 查询代理的商户列表
const merchantsQuery = `
SELECT
u.id,
u.real_name,
u.phone,
u.created_at,
am.created_at as joined_at,
COUNT(mo.id) as match_count,
COUNT(CASE WHEN mo.status = 'completed' THEN 1 END) as completed_matches
FROM agent_merchants am
JOIN users u ON am.merchant_id = u.id
LEFT JOIN matching_orders mo ON u.id = mo.initiator_id
WHERE am.agent_id = ?
GROUP BY u.id, am.created_at
ORDER BY am.created_at DESC
LIMIT ${limitNum} OFFSET ${offset}
SELECT u.id,
u.real_name,
u.phone,
u.created_at,
u.created_at as joined_at
FROM users u
WHERE u.inviter = ${id}
GROUP BY u.id, u.created_at
ORDER BY u.created_at
DESC
LIMIT ${limitNum} OFFSET ${offset}
`;
const merchants = await db.query(merchantsQuery, [id]);
// 查询总数
const totalResult = await db.query(
'SELECT COUNT(*) as total FROM agent_merchants WHERE agent_id = ?',
'SELECT COUNT(*) as total FROM users WHERE inviter = ?',
[id]
);
const total = totalResult && totalResult.length > 0 ? totalResult[0].total : 0;
@@ -475,13 +471,13 @@ router.get('/:id/merchant-transfers', authenticateAdmin, async (req, res) => {
const offset = (pageNum - 1) * limitNum;
// 检查代理是否存在
const agentResult = await db.query('SELECT * FROM regional_agents WHERE id = ?', [id]);
if (!agentResult || agentResult.length === 0) {
return res.status(404).json({ success: false, message: '代理不存在' });
}
const agentResult = await db.query(`SELECT * FROM users WHERE id = ? AND (user_type='agent' OR user_type='agent_directly')`, [id]);
if (!agentResult || agentResult.length === 0) {
return res.status(404).json({ success: false, message: '代理不存在' });
}
// 构建查询条件
let whereConditions = ['am.agent_id = ?'];
let whereConditions = ['am.inviter = ?'];
let queryParams = [id];
if (merchant_id) {
@@ -493,36 +489,35 @@ router.get('/:id/merchant-transfers', authenticateAdmin, async (req, res) => {
// 查询商户转账记录
const transfersQuery = `
SELECT
t.id,
t.from_user_id,
t.to_user_id,
t.amount,
t.status,
t.transfer_type,
t.description,
t.created_at,
t.confirmed_at,
from_user.real_name as from_real_name,
CONCAT(SUBSTRING(from_user.phone, 1, 3), '****', SUBSTRING(from_user.phone, -4)) as from_phone_masked,
to_user.real_name as to_real_name,
CONCAT(SUBSTRING(to_user.phone, 1, 3), '****', SUBSTRING(to_user.phone, -4)) as to_phone_masked
FROM agent_merchants am
JOIN transfers t ON am.merchant_id = t.from_user_id
LEFT JOIN users from_user ON t.from_user_id = from_user.id
LEFT JOIN users to_user ON t.to_user_id = to_user.id
WHERE ${whereClause}
ORDER BY t.created_at DESC
LIMIT ${limitNum} OFFSET ${offset}
SELECT t.id,
t.from_user_id,
t.to_user_id,
t.amount,
t.status,
t.transfer_type,
t.description,
t.created_at,
t.confirmed_at,
from_user.real_name as from_real_name,
CONCAT(SUBSTRING(from_user.phone, 1, 3), '****', SUBSTRING(from_user.phone, -4)) as from_phone_masked,
to_user.real_name as to_real_name,
CONCAT(SUBSTRING(to_user.phone, 1, 3), '****', SUBSTRING(to_user.phone, -4)) as to_phone_masked
FROM users as am
JOIN transfers t ON am.id = t.from_user_id
LEFT JOIN users from_user ON t.from_user_id = from_user.id
LEFT JOIN users to_user ON t.to_user_id = to_user.id
WHERE ${whereClause}
ORDER BY t.created_at DESC
LIMIT ${limitNum} OFFSET ${offset}
`;
console.log(transfersQuery,queryParams);
const transfers = await db.query(transfersQuery, queryParams);
// 查询总数
const totalQuery = `
SELECT COUNT(*) as total
FROM agent_merchants am
JOIN transfers t ON am.merchant_id = t.from_user_id
FROM users am
JOIN transfers t ON am.id = t.from_user_id
WHERE ${whereClause}
`;
const totalResult = await db.query(totalQuery, queryParams);