164 lines
4.7 KiB
JavaScript
164 lines
4.7 KiB
JavaScript
const express = require('express');
|
|
const { getDB } = require('../database');
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const { page = 1, limit = 10, search = '', user_id } = req.query;
|
|
|
|
// 确保参数为有效数字
|
|
const pageNum = Math.max(1, parseInt(page) || 1);
|
|
const limitNum = Math.max(1, Math.min(100, parseInt(limit) || 10)); // 限制最大100条
|
|
const offset = Math.max(0, (pageNum - 1) * limitNum);
|
|
|
|
console.log('分页参数:', { pageNum, limitNum, offset, search });
|
|
|
|
let whereClause = 'WHERE 1=1';
|
|
const params = [];
|
|
|
|
if (search) {
|
|
whereClause += ' AND amount LIKE ?';
|
|
params.push(`%${search}%`);
|
|
}
|
|
|
|
if (user_id) {
|
|
whereClause += ' AND user_id = ?';
|
|
params.push(user_id);
|
|
}
|
|
|
|
// 获取总数
|
|
const countQuery = `SELECT COUNT(*) as total FROM withdrawal ${whereClause}`;
|
|
const [countResult] = await getDB().execute(countQuery, params);
|
|
const total = countResult[0].total;
|
|
|
|
// 获取商品列表
|
|
const query = `
|
|
SELECT id, user_id, amount, status, time, pass_time
|
|
FROM withdrawal
|
|
${whereClause}
|
|
ORDER BY time DESC
|
|
LIMIT ${limitNum} OFFSET ${offset}
|
|
`;
|
|
|
|
// 确保参数数组正确传递
|
|
const queryParams = [...params];
|
|
// console.log('Query params:', queryParams, 'Query:', query);
|
|
const [withdrawals] = await getDB().execute(query, queryParams);
|
|
let income = 0;
|
|
if (user_id) {
|
|
const [userIncome] = await getDB().execute(`
|
|
SELECT income FROM users WHERE id = ?
|
|
`, [user_id]);
|
|
income = userIncome[0].income;
|
|
}
|
|
res.json({
|
|
success: true,
|
|
data: {
|
|
withdrawals,
|
|
income,
|
|
pagination: {
|
|
page: pageNum,
|
|
limit: limitNum,
|
|
total,
|
|
pages: Math.ceil(total / limitNum)
|
|
}
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('获取提现列表失败:', error);
|
|
res.status(500).json({ success: false, message: '获取提现列表失败' });
|
|
}
|
|
});//获取记录
|
|
|
|
router.post('/:id/approve', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const query = `
|
|
UPDATE withdrawal
|
|
SET status = 'success', pass_time = NOW()
|
|
WHERE id = ?
|
|
`;
|
|
const queryParams = [id];
|
|
const [result] = await getDB().execute(query, queryParams);
|
|
if (result.affectedRows === 0) {
|
|
return res.status(404).json({ success: false, message: '提现记录不存在' });
|
|
} else {
|
|
const [withdrawal] = await getDB().execute(`
|
|
SELECT amount, user_id FROM withdrawal WHERE id = ?
|
|
`, [id]);
|
|
// console.log(withdrawal);
|
|
await getDB().execute(`
|
|
UPDATE users SET income = income - ? WHERE id = ?
|
|
`, [withdrawal[0].amount, withdrawal[0].user_id]);
|
|
}
|
|
res.json({
|
|
success: true,
|
|
data: {
|
|
id,
|
|
status: 'success'
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('创建提现记录失败:', error);
|
|
res.status(500).json({ success: false, message: '创建提现记录失败' });
|
|
}
|
|
});//通过记录
|
|
|
|
router.post('/:id/reject', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const query = `
|
|
UPDATE withdrawal
|
|
SET status = 'canceled'
|
|
WHERE id = ?
|
|
`;
|
|
const queryParams = [id];
|
|
const [result] = await getDB().execute(query, queryParams);
|
|
if (result.affectedRows === 0) {
|
|
return res.status(404).json({ success: false, message: '提现记录不存在' });
|
|
}
|
|
res.json({
|
|
success: true,
|
|
data: {
|
|
id,
|
|
status: 'canceled'
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('创建提现记录失败:', error);
|
|
res.status(500).json({ success: false, message: '创建提现记录失败' });
|
|
}
|
|
});//拒绝记录
|
|
|
|
router.post('/', async (req, res) => {
|
|
try {
|
|
const { userId, amount } = req.body;
|
|
if (!userId || !amount) {
|
|
return res.status(400).json({ success: false, message: '用户ID和金额是必填项' });
|
|
}
|
|
const query = `
|
|
INSERT INTO withdrawal (user_id, amount, status, time)
|
|
VALUES (?, ?, ?, NOW())
|
|
`;
|
|
const queryParams = [userId, amount, 'pending'];
|
|
const [result] = await getDB().execute(query, queryParams);
|
|
if (result.affectedRows === 0) {
|
|
return res.status(404).json({ success: false, message: '提现记录不存在' });
|
|
}
|
|
res.json({
|
|
success: true,
|
|
data: {
|
|
id: result.insertId,
|
|
user_id: userId,
|
|
amount,
|
|
status: 'pending'
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('更新提现记录失败:', error);
|
|
res.status(500).json({ success: false, message: '更新提现记录失败' });
|
|
}
|
|
});
|
|
|
|
module.exports = router; |