From 305ac5dde6e33db9159101bc9a31e6ec14ff7c12 Mon Sep 17 00:00:00 2001 From: dzl <786316265@qq.com> Date: Sun, 28 Sep 2025 11:49:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A7=92=E6=9D=80=E5=92=8C?= =?UTF-8?q?=E7=83=AD=E9=94=80=E7=9A=84=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/products.js | 53 ++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/routes/products.js b/routes/products.js index a06b7d2..e65ebf5 100644 --- a/routes/products.js +++ b/routes/products.js @@ -104,7 +104,7 @@ router.get('/hot', async (req, res) => { payment_methods, sales, rating, status, created_at, updated_at FROM products WHERE status = 'active' AND stock > 0 - ORDER BY RAND() + ORDER BY sales DESC LIMIT 2` ); @@ -156,36 +156,43 @@ router.get('/hot', async (req, res) => { */ router.get('/cheap', async (req, res) => { try { - // 从活跃商品中随机获取2个商品作为秒杀商品 + const [products] = await getDB().execute( - `SELECT id, name, category, price, points_price, rongdou_price, stock, - image_url, images, description, shop_name, shop_avatar, - payment_methods, sales, rating, status, created_at, updated_at - FROM products - WHERE status = 'active' AND stock > 0 + `SELECT id, start_time, end_time, flash_stock, flash_price, products_id + FROM flash_product + WHERE end_time > NOW() AND flash_stock > 0 ORDER BY RAND() LIMIT 2` ); - - // 格式化商品数据,为秒杀商品添加特殊标识 - const formattedProducts = products.map(product => ({ - ...product, - images: product.images ? JSON.parse(product.images) : (product.image_url ? [product.image_url] : []), - payment_methods: product.payment_methods ? JSON.parse(product.payment_methods) : ['points'], - // 秒杀商品特殊处理:价格打8折 - flash_sale_price: Math.floor(product.price * 0.8), - flash_sale_points: Math.floor(product.points_price * 0.8), - flash_sale_rongdou: Math.floor(product.rongdou_price * 0.8), - is_flash_sale: true, - // 保持向后兼容 - points: product.points_price, - image: product.image_url - })); + + const tempProducts = await Promise.all(products.map(async item=>{ + + const [product] = await getDB().execute( + `SELECT id, name, category, price, points_price, rongdou_price, stock, + image_url, images, description, shop_name, shop_avatar, + payment_methods, sales, rating, status, created_at, updated_at + FROM products + WHERE id = ?`, + [item.products_id] + ) + + item = { + ...product[0], + images: product.images ? JSON.parse(product.images) : (product.image_url ? [product.image_url] : []), + payment_methods: product.payment_methods ? JSON.parse(product.payment_methods) : ['points'], + ...item, + points: product.points_price, + image: product.image_url, + id: product[0].id, + } + console.log("222",item) + return item + })) res.json({ success: true, data: { - products: formattedProducts + products: tempProducts } }); } catch (error) {