重构认证系统和订单支付功能,新增邮箱验证、密码重置及支付流程
This commit is contained in:
@@ -242,8 +242,7 @@ async function payOrder(req, res, next) {
|
||||
*/
|
||||
async function getOrderStatistics(req, res, next) {
|
||||
try {
|
||||
const userId = req.user.id;
|
||||
const statistics = await OrderService.getOrderStatistics(userId);
|
||||
const statistics = await OrderService.getOrderStatistics();
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
|
||||
@@ -20,12 +20,12 @@ const router = express.Router();
|
||||
// 创建订单
|
||||
router.post('/', authenticate, createOrder);
|
||||
|
||||
// 获取订单详情
|
||||
router.get('/:orderId', authenticate, getOrder);
|
||||
|
||||
// 获取订单统计信息
|
||||
router.get('/statistics', authenticate, getOrderStatistics);
|
||||
|
||||
// 获取订单详情
|
||||
router.get('/:orderId', authenticate, getOrder);
|
||||
|
||||
// 管理员获取所有订单
|
||||
router.get('/admin', authenticate, requireAdmin, getAllOrders);
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ class OrderService {
|
||||
LEFT JOIN animals a ON o.animal_id = a.id
|
||||
LEFT JOIN users u ON o.user_id = u.id
|
||||
LEFT JOIN merchants m ON o.merchant_id = m.id
|
||||
WHERE o.id = ? AND o.is_deleted = 0
|
||||
WHERE o.id = ?
|
||||
`;
|
||||
|
||||
const [order] = await database.query(query, [orderId]);
|
||||
@@ -163,13 +163,13 @@ class OrderService {
|
||||
FROM orders o
|
||||
LEFT JOIN animals a ON o.animal_id = a.id
|
||||
LEFT JOIN users u ON o.user_id = u.id
|
||||
WHERE o.merchant_id = ? AND o.is_deleted = 0
|
||||
WHERE o.merchant_id = ?
|
||||
`;
|
||||
|
||||
let countQuery = `
|
||||
SELECT COUNT(*) as total
|
||||
FROM orders o
|
||||
WHERE o.merchant_id = ? AND o.is_deleted = 0
|
||||
WHERE o.merchant_id = ?
|
||||
`;
|
||||
|
||||
const params = [merchantId];
|
||||
@@ -220,7 +220,7 @@ class OrderService {
|
||||
const query = `
|
||||
UPDATE orders
|
||||
SET status = ?, updated_by = ?, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = ? AND is_deleted = 0
|
||||
WHERE id = ?
|
||||
`;
|
||||
|
||||
const result = await database.query(query, [status, userId, orderId]);
|
||||
@@ -245,12 +245,11 @@ class OrderService {
|
||||
async deleteOrder(orderId, userId) {
|
||||
try {
|
||||
const query = `
|
||||
UPDATE orders
|
||||
SET is_deleted = 1, deleted_by = ?, deleted_at = CURRENT_TIMESTAMP
|
||||
WHERE id = ? AND is_deleted = 0
|
||||
DELETE FROM orders
|
||||
WHERE id = ?
|
||||
`;
|
||||
|
||||
const result = await database.query(query, [userId, orderId]);
|
||||
const result = await database.query(query, [orderId]);
|
||||
|
||||
return result.affectedRows > 0;
|
||||
} catch (error) {
|
||||
@@ -323,7 +322,7 @@ class OrderService {
|
||||
SUM(CASE WHEN status = 'cancelled' THEN 1 ELSE 0 END) as cancelled_orders,
|
||||
SUM(total_amount) as total_revenue
|
||||
FROM orders
|
||||
WHERE merchant_id = ? AND is_deleted = 0
|
||||
WHERE merchant_id = ?
|
||||
`;
|
||||
|
||||
const [stats] = await database.query(query, [merchantId]);
|
||||
|
||||
@@ -113,6 +113,7 @@ class UserService {
|
||||
queryParams.push(parseInt(pageSize), parseInt(offset));
|
||||
|
||||
const users = await UserMySQL.query(sql, queryParams);
|
||||
|
||||
|
||||
return {
|
||||
users: users.map(user => UserMySQL.sanitize(user)),
|
||||
|
||||
Reference in New Issue
Block a user