接口调整
This commit is contained in:
49
routes/auth.js
Normal file
49
routes/auth.js
Normal 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;
|
||||||
@@ -25,10 +25,9 @@ router.get('/', auth, async (req, res) => {
|
|||||||
const total = countResult[0].total;
|
const total = countResult[0].total;
|
||||||
console.log(total, '数量');
|
console.log(total, '数量');
|
||||||
|
|
||||||
// 获取订单列表
|
|
||||||
const query = `
|
const query = `
|
||||||
SELECT
|
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
|
FROM coupon_products as c
|
||||||
${whereClause}
|
${whereClause}
|
||||||
ORDER BY c.id DESC
|
ORDER BY c.id DESC
|
||||||
@@ -48,9 +47,21 @@ router.get('/', auth, async (req, res) => {
|
|||||||
}
|
}
|
||||||
item.products_name = product_name;
|
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) {
|
} 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,
|
count,
|
||||||
type,
|
type,
|
||||||
discount,
|
discount,
|
||||||
for_a_amount
|
for_a_amount,
|
||||||
) VALUES (?,?,?,?,?,?)`,
|
precent
|
||||||
[JSON.stringify(req.body.products_id), req.body.price, req.body.count, req.body.type, req.body.discount, req.body.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, req.body.precent]
|
||||||
);
|
);
|
||||||
res.json({ success: true, data: couponProduct[0] });
|
res.json({ success: true, data: couponProduct[0] });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ router.get('/', async (req, res) => {
|
|||||||
|
|
||||||
// 获取商品列表
|
// 获取商品列表
|
||||||
const query = `
|
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
|
FROM products
|
||||||
${whereClause}
|
${whereClause}
|
||||||
ORDER BY created_at DESC
|
ORDER BY created_at DESC
|
||||||
|
|||||||
@@ -80,6 +80,20 @@ router.get('/flash-products', auth, async (req, res) => {
|
|||||||
const queryParams = [...params];
|
const queryParams = [...params];
|
||||||
console.log('Query params:', queryParams, 'Query:', query);
|
console.log('Query params:', queryParams, 'Query:', query);
|
||||||
const [flashProducts] = await getDB().execute(query, queryParams);
|
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({
|
res.json({
|
||||||
success: true,
|
success: true,
|
||||||
data: {
|
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);
|
const [countResult] = await getDB().execute(countQuery, params);
|
||||||
|
console.log('countResult:', countResult);
|
||||||
const total = countResult[0].total;
|
const total = countResult[0].total;
|
||||||
|
|
||||||
// 获取商品列表
|
// 获取商品列表
|
||||||
@@ -224,8 +239,19 @@ router.get('/recommend-products', auth, async (req, res) => {
|
|||||||
|
|
||||||
// 确保参数数组正确传递
|
// 确保参数数组正确传递
|
||||||
const queryParams = [...params];
|
const queryParams = [...params];
|
||||||
console.log('Query params:', queryParams, 'Query:', query);
|
|
||||||
const [recommendProducts] = await getDB().execute(query, queryParams);
|
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({
|
res.json({
|
||||||
success: true,
|
success: true,
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
@@ -105,6 +105,11 @@ app.use('/specifications', require('./routes/specifications'));
|
|||||||
// 优惠券商品接口
|
// 优惠券商品接口
|
||||||
app.use('/couponproducts', require('./routes/couponproducts'));
|
app.use('/couponproducts', require('./routes/couponproducts'));
|
||||||
|
|
||||||
|
// 认证接口
|
||||||
|
app.use('/auth', require('./routes/auth'));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 404处理
|
// 404处理
|
||||||
app.use(notFound);
|
app.use(notFound);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user