GetOrderList.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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 GetOrderList extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/Admin/Order/List')
  9. this.setMethod('get')
  10. }
  11. async onRequest(req, res) {
  12. let {
  13. uuid,
  14. session,
  15. orderId,
  16. username,
  17. user_email,
  18. goods_name,
  19. state,
  20. pay_type,
  21. queryTime,
  22. pagesize,
  23. current
  24. } = req.query
  25. if ([uuid, session, pagesize, current].some(value => value === '' || value === null || value === undefined))
  26. return res.json({
  27. ...BaseStdResponse.MISSING_PARAMETER
  28. })
  29. if (isNaN(pagesize) || pagesize <= 0 || pagesize > 50) {
  30. return res.json({
  31. ...BaseStdResponse.ERR,
  32. msg: '参数错误'
  33. })
  34. }
  35. if (isNaN(current) || current <= 0) {
  36. return res.json({
  37. ...BaseStdResponse.ERR,
  38. msg: '参数错误'
  39. })
  40. }
  41. if (!await AccessControl.checkSession(uuid, session))
  42. return res.status(401).json({
  43. ...BaseStdResponse.ACCESS_DENIED
  44. })
  45. let permission = await AccessControl.getPermission(uuid)
  46. if (!permission.includes("admin") && !permission.includes("product"))
  47. return res.json({
  48. ...BaseStdResponse.PERMISSION_DENIED
  49. })
  50. const offset = (current - 1) * pagesize
  51. let sql = `
  52. SELECT
  53. o.orderId,
  54. o.state,
  55. o.create_time,
  56. o.pay_time,
  57. o.price,
  58. o.pay_type,
  59. o.pay_id,
  60. o.goods_id,
  61. g.name AS goods_name,
  62. u.username,
  63. u.avatar,
  64. u.email AS user_email,
  65. o.create_user
  66. FROM
  67. orders o
  68. LEFT JOIN
  69. goods g ON o.goods_id = g.id
  70. LEFT JOIN
  71. users u ON o.create_user = u.uuid
  72. WHERE
  73. 1 = 1
  74. `
  75. let countSql = `
  76. SELECT COUNT(*) AS total
  77. FROM
  78. orders o
  79. LEFT JOIN
  80. goods g ON o.goods_id = g.id
  81. LEFT JOIN
  82. users u ON o.create_user = u.uuid
  83. WHERE
  84. 1 = 1
  85. `
  86. let params = []
  87. let countParams = []
  88. if (orderId) {
  89. sql += ` AND o.orderId LIKE ?`
  90. countSql += ` AND o.orderId LIKE ?`
  91. params.push(`%${orderId}%`)
  92. countParams.push(`%${orderId}%`)
  93. }
  94. if (username) {
  95. sql += ` AND u.username LIKE ?`
  96. countSql += ` AND u.username LIKE ?`
  97. params.push(`%${username}%`)
  98. countParams.push(`%${username}%`)
  99. }
  100. if (user_email) {
  101. sql += ` AND u.email LIKE ?`
  102. countSql += ` AND u.email LIKE ?`
  103. params.push(`%${user_email}%`)
  104. countParams.push(`%${user_email}%`)
  105. }
  106. if (goods_name) {
  107. sql += ` AND g.name LIKE ?`
  108. countSql += ` AND g.name LIKE ?`
  109. params.push(`%${goods_name}%`)
  110. countParams.push(`%${goods_name}%`)
  111. }
  112. if (state !== undefined && state !== '' && state !== '-1' && Number(state) !== -1) {
  113. sql += ` AND o.state = ?`
  114. countSql += ` AND o.state = ?`
  115. params.push(Number(state))
  116. countParams.push(Number(state))
  117. }
  118. if (pay_type) {
  119. sql += ` AND o.pay_type = ?`
  120. countSql += ` AND o.pay_type = ?`
  121. params.push(pay_type)
  122. countParams.push(pay_type)
  123. }
  124. if (Array.isArray(queryTime) && queryTime.length === 2) {
  125. sql += ` AND o.create_time >= ? AND o.create_time < ?`
  126. countSql += ` AND o.create_time >= ? AND o.create_time < ?`
  127. params.push(queryTime[0], queryTime[1])
  128. countParams.push(queryTime[0], queryTime[1])
  129. }
  130. sql += `
  131. ORDER BY o.create_time DESC
  132. LIMIT ? OFFSET ?
  133. `
  134. params.push(String(pagesize), String(offset))
  135. let rows = await db.query(sql, params)
  136. let countResult = await db.query(countSql, countParams)
  137. if (!rows || !countResult)
  138. return res.json({
  139. ...BaseStdResponse.MISSING_FILE,
  140. msg: '获取订单数据失败!'
  141. })
  142. res.json({
  143. ...BaseStdResponse.OK,
  144. data: rows,
  145. pagination: {
  146. current,
  147. pagesize,
  148. total: countResult[0].total
  149. }
  150. })
  151. }
  152. }
  153. module.exports.GetOrderList = GetOrderList