Files
jurong_circle_shopping_black/routes/withdrawals.js
2025-10-10 17:30:49 +08:00

143 lines
4.0 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 = '' } = 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 name LIKE ?';
params.push(`%${search}%`);
}
// 获取总数
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
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);
res.json({
success: true,
data: {
withdrawals,
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'
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: '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;