GetOrderDetail.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const API = require("../../lib/API.js");
  2. const db = require("../../plugin/DataBase/db.js");
  3. const Redis = require('../../plugin/DataBase/Redis');
  4. const config = require('../../config.json');
  5. const { BaseStdResponse } = require("../../BaseStdResponse.js");
  6. const AccessControl = require("../../lib/AccessControl.js");
  7. class GetAccount extends API {
  8. constructor() {
  9. super();
  10. this.setPath('/Order/Detail');
  11. this.setMethod('GET');
  12. }
  13. async getOrderDetail(uuid, orderId) {
  14. const sql = `
  15. SELECT
  16. a.orderId,
  17. a.create_time,
  18. a.price,
  19. a.original_price,
  20. a.discount_amount,
  21. a.coupon_code,
  22. a.state,
  23. a.pay_id,
  24. a.pay_type,
  25. a.pay_time,
  26. g.name,
  27. g.content,
  28. g.icon,
  29. g.isHot,
  30. g.description,
  31. g.category,
  32. g.features
  33. FROM
  34. orders a
  35. LEFT JOIN
  36. goods g
  37. ON
  38. a.goods_id = g.id
  39. WHERE
  40. a.create_user = ?
  41. AND
  42. a.orderId = ?
  43. `;
  44. const rows = await db.query(sql, [uuid, orderId]);
  45. return rows?.[0] || null;
  46. }
  47. async onRequest(req, res) {
  48. const { uuid, session, orderId } = req.query;
  49. if (!uuid || !session || !orderId) {
  50. return res.json({
  51. ...BaseStdResponse.MISSING_PARAMETER,
  52. endpoint: 1513126
  53. });
  54. }
  55. if (!await AccessControl.checkSession(uuid, session)) {
  56. return res.status(401).json({
  57. ...BaseStdResponse.ACCESS_DENIED
  58. });
  59. }
  60. let order = await this.getOrderDetail(uuid, orderId);
  61. if (!order) {
  62. return res.json({
  63. ...BaseStdResponse.ERR,
  64. msg: '订单获取失败!'
  65. });
  66. }
  67. // 订单未支付
  68. if (order.state === 0) {
  69. let payData = await Redis.get(`payData:${order.orderId}`);
  70. if (!payData) {
  71. // 标记为过期订单
  72. // await db.query('UPDATE orders SET state = 3 WHERE orderId = ?', [order.orderId]);
  73. // 重新获取订单信息(更新后的)
  74. order = await this.getOrderDetail(uuid, orderId);
  75. if (!order) {
  76. return res.json({
  77. ...BaseStdResponse.ERR,
  78. msg: '订单获取失败!'
  79. });
  80. }
  81. return res.json({
  82. ...BaseStdResponse.OK,
  83. data: order
  84. });
  85. }
  86. return res.json({
  87. ...BaseStdResponse.OK,
  88. data: order,
  89. payData: {
  90. payUrl: `${config.pay.url}/submit.php`,
  91. payData: JSON.parse(payData)
  92. }
  93. });
  94. }
  95. // 订单已支付或其他状态
  96. return res.json({
  97. ...BaseStdResponse.OK,
  98. data: order
  99. });
  100. }
  101. }
  102. module.exports.GetAccount = GetAccount;