Validate.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const API = require('../../lib/API.js')
  2. const db = require('../../plugin/DataBase/db.js')
  3. const { BaseStdResponse } = require('../../BaseStdResponse.js')
  4. const AccessControl = require('../../lib/AccessControl.js')
  5. const { validateCoupon } = require('../../lib/CouponService.js')
  6. class ValidateCoupon extends API {
  7. constructor() {
  8. super()
  9. this.setPath('/Coupon/Validate')
  10. this.setMethod('POST')
  11. }
  12. async onRequest(req, res) {
  13. const { uuid, session, code, goods_id } = req.body
  14. if ([uuid, session, code, goods_id].some((v) => v === '' || v == null)) {
  15. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  16. }
  17. if (!(await AccessControl.checkSession(uuid, session))) {
  18. return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  19. }
  20. const goodsRows = await db.query(
  21. 'SELECT id, price, state, num FROM goods WHERE id = ? LIMIT 1',
  22. [goods_id]
  23. )
  24. if (!goodsRows || goodsRows.length !== 1) {
  25. return res.json({ ...BaseStdResponse.ERR, msg: '商品不存在' })
  26. }
  27. const goods = goodsRows[0]
  28. if (goods.state !== 1 || goods.num < 1) {
  29. return res.json({ ...BaseStdResponse.ERR, msg: '商品不可购买' })
  30. }
  31. const result = await validateCoupon({
  32. code,
  33. userUuid: uuid,
  34. goodsId: goods_id,
  35. goodsPrice: goods.price
  36. })
  37. if (!result.ok) {
  38. return res.json({ ...BaseStdResponse.ERR, msg: result.msg })
  39. }
  40. return res.json({
  41. ...BaseStdResponse.OK,
  42. data: {
  43. code: result.code,
  44. name: result.name,
  45. displayDiscount: result.displayDiscount,
  46. originalPrice: result.originalPrice,
  47. discountAmount: result.discountAmount,
  48. finalPrice: result.finalPrice
  49. }
  50. })
  51. }
  52. }
  53. module.exports.ValidateCoupon = ValidateCoupon