RefundOrder.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const API = require('../../../lib/API')
  2. const AccessControl = require('../../../lib/AccessControl')
  3. const { BaseStdResponse } = require('../../../BaseStdResponse')
  4. const { executeOrderRefund } = require('../../../lib/OrderRefundService')
  5. class RefundOrder extends API {
  6. constructor() {
  7. super()
  8. this.setPath('/Admin/Order/RefundOrder')
  9. this.setMethod('POST')
  10. }
  11. async onRequest(req, res) {
  12. const { uuid, session, orderId } = req.body
  13. if ([uuid, session, orderId].some(v => v === '' || v === null || v === undefined)) {
  14. return res.json({
  15. ...BaseStdResponse.MISSING_PARAMETER
  16. })
  17. }
  18. if (!await AccessControl.checkSession(uuid, session)) {
  19. return res.status(401).json({
  20. ...BaseStdResponse.ACCESS_DENIED
  21. })
  22. }
  23. const permission = await AccessControl.getPermission(uuid)
  24. if (!permission.includes('admin') && !permission.includes('product')) {
  25. return res.json({
  26. ...BaseStdResponse.PERMISSION_DENIED
  27. })
  28. }
  29. const result = await executeOrderRefund({
  30. orderId,
  31. operatorUuid: uuid,
  32. skipTimeLimit: true,
  33. logger: this.logger
  34. })
  35. if (!result.ok) {
  36. return res.json({
  37. ...BaseStdResponse.ERR,
  38. msg: result.msg
  39. })
  40. }
  41. this.logger.info(`管理员退款成功,订单号:${orderId},操作人:${uuid}`)
  42. return res.json({
  43. ...BaseStdResponse.OK,
  44. msg: result.msg
  45. })
  46. }
  47. }
  48. module.exports.RefundOrder = RefundOrder