Detail.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. class CouponDetail extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/Admin/Coupon/Detail')
  9. this.setMethod('GET')
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session, id } = req.query
  13. if ([uuid, session, id].some((v) => v === '' || v == null)) {
  14. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  15. }
  16. if (!(await AccessControl.checkSession(uuid, session))) {
  17. return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  18. }
  19. const permission = await AccessControl.getPermission(uuid)
  20. if (!permission.includes('admin') && !permission.includes('product')) {
  21. return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
  22. }
  23. const rows = await db.query('SELECT * FROM coupons WHERE id = ? LIMIT 1', [id])
  24. if (!rows || rows.length !== 1) {
  25. return res.json({ ...BaseStdResponse.MISSING_FILE, msg: '优惠码不存在' })
  26. }
  27. const coupon = rows[0]
  28. const users = await db.query(
  29. `SELECT cu.user_uuid, u.username FROM coupon_users cu
  30. LEFT JOIN users u ON u.uuid = cu.user_uuid
  31. WHERE cu.coupon_id = ?`,
  32. [id]
  33. )
  34. const goods = await db.query(
  35. `SELECT cg.goods_id, g.name FROM coupon_goods cg
  36. LEFT JOIN goods g ON g.id = cg.goods_id
  37. WHERE cg.coupon_id = ?`,
  38. [id]
  39. )
  40. return res.json({
  41. ...BaseStdResponse.OK,
  42. data: {
  43. ...coupon,
  44. allowedUsers: (users || []).map((r) => ({
  45. uuid: r.user_uuid,
  46. username: r.username
  47. })),
  48. allowedGoods: (goods || []).map((r) => ({
  49. id: r.goods_id,
  50. name: r.name
  51. }))
  52. }
  53. })
  54. }
  55. }
  56. module.exports.CouponDetail = CouponDetail