From 4807ca1b0775a096da826bdb07738d2e902f30ff Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 23 Aug 2018 10:16:26 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=94=AF=E4=BB=98/=E9=80=80=E6=AC=BE][?= =?UTF-8?q?=E6=96=B0=E5=A2=9E]:=E9=80=80=E6=AC=BE=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxRefundOrderController.java | 73 +++++++++++++------ .../java/com/simple/common/ErrorCode.java | 1 + .../com/simple/service/WxPayOrderService.java | 8 ++ .../simple/service/WxRefundOrderService.java | 4 +- .../service/impl/WxPayOrderServiceImpl.java | 9 +++ .../impl/WxRefundOrderServiceImpl.java | 66 ++++------------- 6 files changed, 83 insertions(+), 78 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java index 47b704dbd..1369c2277 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java @@ -4,14 +4,12 @@ import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxAppinfo; -import com.simple.domain.po.WxCouponVerify; -import com.simple.domain.po.WxMerchantBUser; -import com.simple.domain.po.WxRefundOrder; +import com.simple.domain.po.*; +import com.simple.enums.EnumCouponOrderStatus; +import com.simple.enums.EnumPayStatus; import com.simple.enums.EnumPayWay; import com.simple.exception.MallinkException; -import com.simple.service.WxCouponVerifyService; -import com.simple.service.WxRefundOrderService; +import com.simple.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -30,52 +28,79 @@ public class WxRefundOrderController extends BaseController { private Logger logger = Logger.getLogger(WxRefundOrderController.class); @Autowired - private WxCouponVerifyService wxCouponVerifyService; + private WxCouponOrderService wxCouponOrderService; + + @Autowired + private WxOrderService wxOrderService; + + @Autowired + private WxPayOrderService wxPayOrderService; @Autowired private WxRefundOrderService wxRefundOrderService; - @ApiOperation(value = "发起退款", notes = "{\"couponOrderId\":,\"string\", \"orderId\":,\"string\"}") + @ApiOperation(value = "发起退款", notes = "{\"orderId\":\"string\"}") @PostMapping("/create") public ResultData create(@RequestBody Map paramMap) { // couponOrder发起退款 logger.info("/api/refund/create" + paramMap.toString()); //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - String couponOrderIdStr = paramMap.get("couponOrderId"); String orderIdStr = paramMap.get("orderId"); - if (StringUtils.isBlank(couponOrderIdStr)) { - logger.error("couponOrderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); - } if (StringUtils.isBlank(orderIdStr)) { logger.error("orderId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - Long couponOrderId = 0L; + Long orderId = 0L; try { - couponOrderId = Long.valueOf(couponOrderIdStr); + orderId = Long.valueOf(orderIdStr); } catch (NumberFormatException e) { logger.error("orderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - Long orderId = 0L; + WxOrder order = null; try { - orderId = Long.valueOf(orderIdStr); - } catch (NumberFormatException e) { - logger.error("orderId参数不正确: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + order = wxOrderService.getById(orderId); + } catch (Exception e) { + logger.error("订单不存在: " + orderIdStr); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr); + } + if (order == null) { + logger.error("订单不存在: " + orderIdStr); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr); + } + if (order.getPayment() <= 0) { + logger.error("订单支付金额小于等于0: " + order.toString()); + throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); + } + + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setCUserId(order.getCUserId()); + payOrderQ.setOrderId(orderId); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + + WxPayOrder payOrder = null; + + try { + payOrder = wxPayOrderService.getByObj(payOrderQ); + } catch (Exception e) { + logger.error("payOrder不存在"); + return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款"); + } + if (payOrder == null) { + logger.error("payOrder不存在"); + return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND.getCode(), "支付订单不存在,无法退款"); } - WxRefundOrder refundOrder = new WxRefundOrder(); - //refundOrder.setPayOrderNo(payOrderIdStr); - refundOrder.setOrderId(orderId); + WxRefundOrder refundOrderQ = new WxRefundOrder(); + refundOrderQ.setPayOrderNo(String.valueOf(payOrder.getId())); + refundOrderQ.setOrderId(orderId); WxMerchantBUser bUser = getUser(); WxAppinfo appinfo = getAppInfo(bUser.getAppId()); try { - wxRefundOrderService.createRefundOrder(appinfo, refundOrder, EnumPayWay.PAY_WAY_WEAPP); + wxRefundOrderService.createRefundOrder(appinfo, refundOrderQ, payOrder, EnumPayWay.PAY_WAY_WEAPP); return new ResultData(); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index f1b9a7d47..3ba3ef047 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -121,6 +121,7 @@ public enum ErrorCode{ /** * 支付 */ + PAY_ORDER_NOT_FOUND(12000, "支付订单不存在"), PAY_ORDER_EXIST(12001, "支付订单已存在"), PAY_ORDER_ERROR(12002, "支付订单异常"), PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR(12003 , "支付验签失败"), diff --git a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java index 1187f71a4..ee0ce5e34 100644 --- a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java @@ -78,6 +78,14 @@ public interface WxPayOrderService { */ WxPayOrder getById(Long id); + /** + * 根据obj获得实体 + * + * @param payOrder + * @return + */ + WxPayOrder getByObj(WxPayOrder payOrder); + /** diff --git a/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java b/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java index ff4bc8ba7..b0519b9f8 100644 --- a/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java @@ -4,6 +4,7 @@ import java.util.*; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.WxAppinfo; +import com.simple.domain.po.WxPayOrder; import com.simple.domain.po.WxRefundOrder; import com.simple.enums.EnumPayWay; @@ -13,10 +14,11 @@ public interface WxRefundOrderService { * 创建退款订单 * @param appInfo * @param record 退款订单请求 + * @param payOrder 支付订单 * @param payWay * @return */ - ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, EnumPayWay payWay); + ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, WxPayOrder payOrder, EnumPayWay payWay); /** * 退款订单查询 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 666188022..775b22b74 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -463,6 +463,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return wxPayOrderMapper.selectByPrimaryKey(id); } + @Override + public WxPayOrder getByObj(WxPayOrder payOrderQ) { + List list = wxPayOrderMapper.findList(payOrderQ); + if (list.size() > 0) { + return list.get(0); + } + return null; + } + @Override public void saveOrUpdate(WxPayOrder record) { if (record.getId() == null) { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index be12a70f6..cb26a2484 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -219,7 +219,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { "}"); @Override - public ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, EnumPayWay payWay) { + public ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, WxPayOrder payOrder, EnumPayWay payWay) { WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); if (StringUtils.isBlank(payAccount.getApiKey())) { logger.error("支付密钥为空"); @@ -235,65 +235,25 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("退款订单已存在, 无法再提交退款申请"); throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); } - // check 支付 订单 - WxPayOrder payOrder = null; - Long payOrderId = 0L; - try { - payOrderId = Long.valueOf(record.getPayOrderNo()); - } catch (NumberFormatException e) { - logger.error("参数转换异常: payOrderId-" + record.getPayOrderNo()); - throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "参数转换异常: payOrderId-" + record.getPayOrderNo()); - } - try { - WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setOrderId(record.getOrderId()); - payOrderQ.setId(payOrderId); - payOrderQ.setPayOrderNo(record.getPayOrderNo()); - payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); - List payOrderList = wxPayOrderMapper.findList(payOrderQ); - if (payOrderList.size() > 0) { - payOrder = payOrderList.get(0); - } - } catch (Exception e) { - logger.error("数据库获取异常: " + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - - if (payOrder == null) { - logger.error("支付订单不存在: " + record.toString()); - throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_NOT_EXIST); - } - if (payOrder.getPayAmount() <= 0) { - logger.error("支付订单金额小于等于0: " + record.toString()); - throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); - } - - // 检查 是否已核销, 已核销不能退款 - /* - WxOrder order = wxOrderMapper.selectByPrimaryKey(payOrder.getOrderId()); - - WxCouponVerify couponVerifyQ = new WxCouponVerify(); - couponVerifyQ.setCouponId(payOrder.getOrderId()); - WxCouponVerify couponVerify = wxCouponVerifyMapper.select() - */ - // 创建退款订单 final IdWorker idWorker = IdWorker.get(); Long id = idWorker.nextId(); Date currentDate = new Date(); + record.setId(id); + record.setTenantId(appInfo.getTenantId()); + record.setCreateTime(currentDate); + record.setUpdateTime(currentDate); + record.setTransactionId(payOrder.getTransactionId()); + record.setCUserId(payOrder.getCUserId()); + record.setTotalFee(payOrder.getPayAmount()); + record.setRefundFee(payOrder.getPayAmount()); + record.setRefundTimeStart(currentDate); + record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); + + // 退款订单 try { - record.setId(id); - record.setTenantId(appInfo.getTenantId()); - record.setCreateTime(currentDate); - record.setUpdateTime(currentDate); - record.setTransactionId(payOrder.getTransactionId()); - record.setCUserId(payOrder.getCUserId()); - record.setTotalFee(payOrder.getPayAmount()); - record.setRefundFee(payOrder.getPayAmount()); - record.setRefundTimeStart(currentDate); - record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); int sqlRow = wxRefundOrderMapper.insertSelective(record); if(sqlRow != 1) { logger.error("退款订单数据库插入出错: " + record.toString());