GetSendCountRequestList.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. let permission = await AccessControl.getPermission(uuid)
  20. if (!permission.includes("admin") && !permission.includes("service"))
  21. return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
  22. const statusList = ["pending", "approved", "rejected"]
  23. if (status && !statusList.includes(status))
  24. return res.json({ ...BaseStdResponse.ERR, msg: "状态参数错误" })
  25. const offset = (Number(current) - 1) * Number(pagesize)
  26. let sql = `
  27. SELECT
  28. r.id,
  29. r.sender_uuid,
  30. su.username AS sender_username,
  31. r.receiver_user_id,
  32. ru.username AS receiver_username,
  33. r.count,
  34. r.status,
  35. r.created_at,
  36. r.reviewed_at,
  37. r.reviewer_uuid,
  38. rv.username AS reviewer_username,
  39. r.reject_reason
  40. FROM
  41. lepao_send_count_request r
  42. LEFT JOIN users su ON su.uuid = r.sender_uuid
  43. LEFT JOIN users ru ON ru.id = r.receiver_user_id
  44. LEFT JOIN users rv ON rv.uuid = r.reviewer_uuid
  45. WHERE 1 = 1
  46. `
  47. let countSql = `
  48. SELECT COUNT(*) AS total
  49. FROM lepao_send_count_request r
  50. WHERE 1 = 1
  51. `
  52. const params = []
  53. const countParams = []
  54. if (status) {
  55. sql += ` AND r.status = ?`
  56. countSql += ` AND r.status = ?`
  57. params.push(status)
  58. countParams.push(status)
  59. }
  60. sql += `
  61. ORDER BY r.id DESC
  62. LIMIT ? OFFSET ?
  63. `
  64. params.push(String(pagesize), String(offset))
  65. const rows = await db.query(sql, params)
  66. const countRows = await db.query(countSql, countParams)
  67. if (!rows || !countRows)
  68. return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "获取赠送审核列表失败!" })
  69. res.json({
  70. ...BaseStdResponse.OK,
  71. data: rows,
  72. pagination: {
  73. current: Number(current),
  74. pagesize: Number(pagesize),
  75. total: countRows[0]?.total || 0
  76. }
  77. })
  78. }
  79. }
  80. module.exports.GetSendCountRequestList = GetSendCountRequestList