Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

137 строки
5.4 KiB

  1. package com.simple.controller;
  2. import com.github.pagehelper.PageInfo;
  3. import com.simple.common.ErrorCode;
  4. import com.simple.common.Result;
  5. import com.simple.common.ResultData;
  6. import com.simple.config.PayProperty;
  7. import com.simple.domain.po.*;
  8. import com.simple.enums.EnumPayStatus;
  9. import com.simple.enums.EnumPayWay;
  10. import com.simple.exception.MallinkException;
  11. import com.simple.service.*;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiImplicitParam;
  14. import io.swagger.annotations.ApiImplicitParams;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.apache.log4j.Logger;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.*;
  20. import java.util.Map;
  21. @RestController
  22. @RequestMapping("/api/refund")
  23. @Api(description="退款相关接口")
  24. public class WxRefundOrderController extends BaseController {
  25. private Logger logger = Logger.getLogger(WxRefundOrderController.class);
  26. @Autowired
  27. private PayProperty payProperty;
  28. @Autowired
  29. private WxCouponOrderService wxCouponOrderService;
  30. @Autowired
  31. private WxOrderService wxOrderService;
  32. @Autowired
  33. private WxPayOrderService wxPayOrderService;
  34. @Autowired
  35. private WxRefundOrderService wxRefundOrderService;
  36. @ApiOperation(value = "发起退款", notes = "{\"orderId\":\"string\"}")
  37. @PostMapping("/create")
  38. public ResultData create(@RequestBody Map<String, String> paramMap) {
  39. // couponOrder发起退款
  40. logger.info("/api/refund/create" + paramMap.toString());
  41. //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
  42. //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
  43. String orderIdStr = paramMap.get("orderId");
  44. if (StringUtils.isBlank(orderIdStr)) {
  45. logger.error("orderId不能为空: " + paramMap.toString());
  46. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
  47. }
  48. Long orderId = 0L;
  49. try {
  50. orderId = Long.valueOf(orderIdStr);
  51. } catch (NumberFormatException e) {
  52. logger.error("orderId参数不正确: " + paramMap.toString());
  53. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
  54. }
  55. WxOrder order = null;
  56. try {
  57. order = wxOrderService.getById(orderId);
  58. } catch (Exception e) {
  59. logger.error("订单不存在: " + orderIdStr);
  60. return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
  61. }
  62. if (order == null) {
  63. logger.error("订单不存在: " + orderIdStr);
  64. return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
  65. }
  66. if (order.getPayment() <= 0) {
  67. logger.error("订单支付金额小于等于0: " + order.toString());
  68. throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
  69. }
  70. WxPayOrder payOrderQ = new WxPayOrder();
  71. payOrderQ.setCUserId(order.getCUserId());
  72. payOrderQ.setOrderId(orderId);
  73. payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
  74. WxPayOrder payOrder = null;
  75. try {
  76. payOrder = wxPayOrderService.getByObj(payOrderQ);
  77. } catch (Exception e) {
  78. logger.error("payOrder不存在");
  79. return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款");
  80. }
  81. if (payOrder == null) {
  82. logger.error("payOrder不存在");
  83. return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款");
  84. }
  85. WxRefundOrder refundOrderQ = new WxRefundOrder();
  86. refundOrderQ.setPayOrderNo(String.valueOf(payOrder.getId()));
  87. refundOrderQ.setOrderId(orderId);
  88. WxMerchantBUser bUser = getUser();
  89. WxAppinfo appinfo = getAppInfo(bUser.getAppId());
  90. try {
  91. wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, refundOrderQ, payOrder, EnumPayWay.PAY_WAY_WEAPP);
  92. return new ResultData();
  93. } catch (MallinkException e) {
  94. logger.error(e.getMessage());
  95. return new ResultData(e.getErrorCode(), e.getMessage());
  96. } catch (Exception e) {
  97. logger.error(e.getMessage());
  98. return new ResultData(ErrorCode.REFUND_ORDER_ERROR);
  99. }
  100. }
  101. @ApiOperation("分页列表接口")
  102. @GetMapping("list")
  103. @ApiImplicitParams({
  104. @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
  105. @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
  106. public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder, Integer pageNum, Integer pageSize) {
  107. if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder();
  108. final PageInfo<WxRefundOrder> page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize);
  109. return new ResultData(page);
  110. }
  111. @ApiOperation("根据id查询接口")
  112. @GetMapping("/findById")
  113. @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
  114. public ResultData findById(Long id) {
  115. return new ResultData(Result.SUCCESS, "查询成功", wxRefundOrderService.getById(id));
  116. }
  117. }