| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const API = require('../../lib/API.js')
- const db = require('../../plugin/DataBase/db.js')
- const { BaseStdResponse } = require('../../BaseStdResponse.js')
- const AccessControl = require('../../lib/AccessControl.js')
- const { validateCoupon } = require('../../lib/CouponService.js')
- class ValidateCoupon extends API {
- constructor() {
- super()
- this.setPath('/Coupon/Validate')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- const { uuid, session, code, goods_id } = req.body
- if ([uuid, session, code, goods_id].some((v) => v === '' || v == null)) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- if (!(await AccessControl.checkSession(uuid, session))) {
- return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- }
- const goodsRows = await db.query(
- 'SELECT id, price, state, num FROM goods WHERE id = ? LIMIT 1',
- [goods_id]
- )
- if (!goodsRows || goodsRows.length !== 1) {
- return res.json({ ...BaseStdResponse.ERR, msg: '商品不存在' })
- }
- const goods = goodsRows[0]
- if (goods.state !== 1 || goods.num < 1) {
- return res.json({ ...BaseStdResponse.ERR, msg: '商品不可购买' })
- }
- const result = await validateCoupon({
- code,
- userUuid: uuid,
- goodsId: goods_id,
- goodsPrice: goods.price
- })
- if (!result.ok) {
- return res.json({ ...BaseStdResponse.ERR, msg: result.msg })
- }
- return res.json({
- ...BaseStdResponse.OK,
- data: {
- code: result.code,
- name: result.name,
- displayDiscount: result.displayDiscount,
- originalPrice: result.originalPrice,
- discountAmount: result.discountAmount,
- finalPrice: result.finalPrice
- }
- })
- }
- }
- module.exports.ValidateCoupon = ValidateCoupon
|