diff --git a/routes/coupon.js b/routes/coupon.js new file mode 100644 index 0000000..d36984b --- /dev/null +++ b/routes/coupon.js @@ -0,0 +1,51 @@ +const express = require('express'); +const router = express.Router(); +const { getDB } = require('../database'); +const { auth } = require('../middleware/auth'); + + +router.get('/', auth, async (req, res) => { + try { + const db = getDB(); + const query = ` + SELECT * FROM coupon_products where remain > 0 + ` + const [coupon] = await db.query(query); + + if (coupon.length === 0) { + res.json({ error: '暂无优惠券' }); + } + + res.json({coupon, success: true}); + } catch (error) { + res.status(500).json({ error: '获取优惠券失败' }); + } +}); +router.get('/:id', auth, async (req, res) => { + try { + const userId = req.params.id; + const db = getDB(); + const query = ` + SELECT * FROM coupon_products where remain > 0 + ` + const [coupon] = await db.query(query); + + if (coupon.length === 0) { + return res.status(404).json({ error: '暂无优惠券' }); + } else { + const query = [` + update coupon_products set remain = remain - 1 where id = ? + `,` + insert into coupon_use (user_id, coupon_id, get_time) values (?, ?, now()) + `] + await db.query(query[0], [coupon[0].id]); + await db.query(query[1], [userId, coupon[0].id]); + } + + res.json({coupon, success: true}); + } catch (error) { + res.status(500).json({ error: '获取优惠券失败' }); + } +}); + +module.exports = router; \ No newline at end of file diff --git a/server.js b/server.js index 240399a..b2eb6a1 100644 --- a/server.js +++ b/server.js @@ -249,6 +249,9 @@ app.use('/api/announcements', require('./routes/announcements')); // 通知公 app.use('/api/wechat-pay', require('./routes/wechatPay')); // 只保留微信支付 app.use('/api/payment', require('./routes/payment')); +// 优惠券路由 +app.use('/api/coupon', require('./routes/coupon')); + // 前端路由 - 必须在最后,作为fallback app.get('/', (req, res) => { res.removeHeader('Origin-Agent-Cluster');