接口调整

This commit is contained in:
dzl
2025-09-29 14:58:40 +08:00
parent 94038d314e
commit d18ff863b6
5 changed files with 102 additions and 10 deletions

49
routes/auth.js Normal file
View File

@@ -0,0 +1,49 @@
const express = require('express');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const {getDB} = require('../database');
const router = express.Router();
const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key';
// 验证token中间件
const authenticateToken = (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({success: false, message: '访问令牌缺失'});
}
jwt.verify(token, JWT_SECRET, (err, user) => {
if (err) {
return res.status(403).json({success: false, message: '访问令牌无效'});
}
req.user = user;
next();
});
};
// 获取当前用户信息
router.get('/me', authenticateToken, async (req, res) => {
try {
const db = getDB();
const [users] = await db.execute(
'SELECT id, username, role, avatar, points, created_at FROM users WHERE id = ?',
[req.user.userId]
);
if (users.length === 0) {
return res.status(404).json({success: false, message: '用户不存在'});
}
res.json({success: true, user: users[0]});
} catch (error) {
console.error('获取用户信息错误:', error);
res.status(500).json({success: false, message: '获取用户信息失败'});
}
});
module.exports = router;
module.exports.authenticateToken = authenticateToken;

View File

@@ -25,10 +25,9 @@ router.get('/', auth, async (req, res) => {
const total = countResult[0].total;
console.log(total, '数量');
// 获取订单列表
const query = `
SELECT
c.id, c.products_id, price, count, type, discount, for_a_amount
c.id, c.products_id, price, count, type, discount, for_a_amount, precent
FROM coupon_products as c
${whereClause}
ORDER BY c.id DESC
@@ -48,9 +47,21 @@ router.get('/', auth, async (req, res) => {
}
item.products_name = product_name;
}
res.json({ success: true, data: couponProducts[0] });
res.json({
success: true,
data: couponProducts[0],
pagination: {
page: pageNum,
limit: limitNum,
total,
pages: Math.ceil(total / limitNum)
}
});
} catch (error) {
res.status(500).json({ success: false, error: error.message });
res.status(500).json({
success: false,
error: error.message
});
}
});
@@ -64,9 +75,10 @@ router.post('/', auth, async (req, res) => {
count,
type,
discount,
for_a_amount
) VALUES (?,?,?,?,?,?)`,
[JSON.stringify(req.body.products_id), req.body.price, req.body.count, req.body.type, req.body.discount, req.body.for_a_amount]
for_a_amount,
precent
) VALUES (?,?,?,?,?,?,?)`,
[JSON.stringify(req.body.products_id), req.body.price, req.body.count, req.body.type, req.body.discount, req.body.for_a_amount, req.body.precent]
);
res.json({ success: true, data: couponProduct[0] });
} catch (error) {

View File

@@ -43,7 +43,7 @@ router.get('/', async (req, res) => {
// 获取商品列表
const query = `
SELECT id, name, rongdou_price, category, points_price, stock, image_url as image, description, status, payment_methods, created_at, updated_at
SELECT id, name, rongdou_price, category, points_price, stock, image_url as image, description, status, payment_methods, created_at, updated_at, sales
FROM products
${whereClause}
ORDER BY created_at DESC

View File

@@ -80,6 +80,20 @@ router.get('/flash-products', auth, async (req, res) => {
const queryParams = [...params];
console.log('Query params:', queryParams, 'Query:', query);
const [flashProducts] = await getDB().execute(query, queryParams);
// 处理商品详情
for (const item of flashProducts) {
const productQuery = `
SELECT *
FROM products
WHERE id = ?
`;
const [product] = await getDB().execute(productQuery, [item.products_id]);
item.product_name = product[0].name
item.product_price = product[0].price
}
res.json({
success: true,
data: {
@@ -209,8 +223,9 @@ router.get('/recommend-products', auth, async (req, res) => {
}
// 获取总数
const countQuery = `SELECT COUNT(*) as total FROM flash_product ${whereClause}`;
const countQuery = `SELECT COUNT(*) as total FROM recommend_product ${whereClause}`;
const [countResult] = await getDB().execute(countQuery, params);
console.log('countResult:', countResult);
const total = countResult[0].total;
// 获取商品列表
@@ -224,8 +239,19 @@ router.get('/recommend-products', auth, async (req, res) => {
// 确保参数数组正确传递
const queryParams = [...params];
console.log('Query params:', queryParams, 'Query:', query);
const [recommendProducts] = await getDB().execute(query, queryParams);
// 处理商品详情
for (const item of recommendProducts) {
const productQuery = `
SELECT *
FROM products
WHERE id = ?
`;
const [product] = await getDB().execute(productQuery, [item.products_id]);
item.product_detail = product[0];
}
res.json({
success: true,
data: {

View File

@@ -105,6 +105,11 @@ app.use('/specifications', require('./routes/specifications'));
// 优惠券商品接口
app.use('/couponproducts', require('./routes/couponproducts'));
// 认证接口
app.use('/auth', require('./routes/auth'));
// 404处理
app.use(notFound);