GetSendCountRequestList.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. const API = require("../../../lib/API")
  2. const db = require("../../../plugin/DataBase/db")
  3. const AccessControl = require("../../../lib/AccessControl")
  4. const { BaseStdResponse } = require("../../../BaseStdResponse")
  5. class GetSendCountRequestList extends API {
  6. constructor() {
  7. super()
  8. this.setPath("/Admin/Goods/SendCountRequest/List")
  9. this.setMethod("GET")
  10. }
  11. async onRequest(req, res) {
  12. let { uuid, session, pagesize, current, status } = req.query
  13. if ([uuid, session, pagesize, current].some(value => value === "" || value === null || value === undefined))
  14. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  15. if (isNaN(pagesize) || pagesize <= 0 || pagesize > 50 || isNaN(current) || current <= 0)
  16. return res.json({ ...BaseStdResponse.ERR, msg: "参数错误" })
  17. if (!await AccessControl.checkSession(uuid, session))
  18. return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  19. if (!await AccessControl.canAccess(uuid, ['page.admin.goods.sendCountRequestList']))
  20. return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
  21. const statusList = ["pending", "approved", "rejected"]
  22. if (status && !statusList.includes(status))
  23. return res.json({ ...BaseStdResponse.ERR, msg: "状态参数错误" })
  24. const offset = (Number(current) - 1) * Number(pagesize)
  25. let sql = `
  26. SELECT
  27. r.id,
  28. r.sender_uuid,
  29. su.username AS sender_username,
  30. r.receiver_user_id,
  31. ru.username AS receiver_username,
  32. r.count,
  33. r.status,
  34. r.created_at,
  35. r.reviewed_at,
  36. r.reviewer_uuid,
  37. rv.username AS reviewer_username,
  38. r.reject_reason
  39. FROM
  40. lepao_send_count_request r
  41. LEFT JOIN users su ON su.uuid = r.sender_uuid
  42. LEFT JOIN users ru ON ru.id = r.receiver_user_id
  43. LEFT JOIN users rv ON rv.uuid = r.reviewer_uuid
  44. WHERE 1 = 1
  45. `
  46. let countSql = `
  47. SELECT COUNT(*) AS total
  48. FROM lepao_send_count_request r
  49. WHERE 1 = 1
  50. `
  51. const params = []
  52. const countParams = []
  53. if (status) {
  54. sql += ` AND r.status = ?`
  55. countSql += ` AND r.status = ?`
  56. params.push(status)
  57. countParams.push(status)
  58. }
  59. sql += `
  60. ORDER BY r.id DESC
  61. LIMIT ? OFFSET ?
  62. `
  63. params.push(String(pagesize), String(offset))
  64. const rows = await db.query(sql, params)
  65. const countRows = await db.query(countSql, countParams)
  66. if (!rows || !countRows)
  67. return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "获取赠送审核列表失败!" })
  68. res.json({
  69. ...BaseStdResponse.OK,
  70. data: rows,
  71. pagination: {
  72. current: Number(current),
  73. pagesize: Number(pagesize),
  74. total: countRows[0]?.total || 0
  75. }
  76. })
  77. }
  78. }
  79. module.exports.GetSendCountRequestList = GetSendCountRequestList