diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java index b927cb5..8193151 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java @@ -1,6 +1,7 @@ package com.base.springcloud.dao; import com.base.springcloud.entity.OrderBill; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -19,5 +20,7 @@ public interface OrderBillMapper { int updateByPrimaryKey(OrderBill record); - List getBillId(String orderId); + List getBillId(@Param("orderId") String orderId); + + String getOrderId(@Param("billId") String billId); } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java index a7d9944..78d850f 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java @@ -1,6 +1,7 @@ package com.base.springcloud.dao; import com.base.springcloud.entity.Order; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.Date; @@ -25,5 +26,5 @@ public interface OrderMapper { int updateOrderSuccess(String orderNo); - Order origOrderInfo(String orderNo); + Order origOrderInfo(@Param("orderId") String orderId); } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/BillService.java b/payment-base-app/src/main/java/com/base/springcloud/service/BillService.java index b41ccbb..5107206 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/BillService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/BillService.java @@ -1,6 +1,7 @@ package com.base.springcloud.service; import com.base.springcloud.bo.OrderBO; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.bo.SaleBillBO; import com.base.springcloud.entity.SaleBill; @@ -31,4 +32,10 @@ public interface BillService { * @param id */ void writeOffAmount(String id); + + /** + * 退款金额获取 + * @param refundBO + */ + void refundFront(RefundBO refundBO); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java b/payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java index 4fa42ff..fda1fc5 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java @@ -20,4 +20,11 @@ public interface OrderBillService { * @param orderId */ List getBillId(String orderId); + + /** + * 查询销售单据对应订单 + * @param billId + * @return + */ + String queryOrderNo(String billId); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java index 850c2f0..2403eb7 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java @@ -2,7 +2,7 @@ package com.base.springcloud.service.imp; import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.bo.OrderBO; -import com.base.springcloud.bo.SaleBillBO; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.dao.SaleBillMapper; import com.base.springcloud.entity.SaleBill; @@ -114,10 +114,31 @@ public class BillServiceImp implements BillService { childBill(orderBO,false); } + /** + * 销售单据金额核销 + * @param orderId + */ @Override public void writeOffAmount(String orderId) { int count = saleBillMapper.writeOffBill(orderId); if(count > 0) return; throw new BusinessException(ErrorConstant.BILL_WRITE_OFF_FAIL); } + + /** + * 退款金额获取 + * @param refundBO + */ + @Override + public void refundFront(RefundBO refundBO) { + String billId = refundBO.getBillId(); + if(StringUtils.isBlank(billId)) + throw new BusinessException(ErrorConstant.BILL_INVALID); + SaleBill saleBill = new SaleBill(); + saleBill.setId(billId); + saleBill = saleBillMapper.queryBillInfo(saleBill); + if(Optional.ofNullable(saleBill).isPresent()) + return; + throw new BusinessException(ErrorConstant.BILL_INVALID); + } } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java index c13199d..f847879 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java @@ -53,4 +53,14 @@ public class OrderBillServiceImp implements OrderBillService { return orderBillMapper.getBillId(orderId); } + /** + * 查询原支付订单 + * @param billId + * @return + */ + @Override + public String queryOrderNo(String billId) { + return orderBillMapper.getOrderId(billId); + } + } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java index 0d110d9..7d621a1 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java @@ -9,9 +9,12 @@ import com.base.springcloud.dao.OrderMapper; import com.base.springcloud.entity.MerchantConfig; import com.base.springcloud.entity.Order; import com.base.springcloud.entity.SaleBill; +import com.base.springcloud.service.BillService; +import com.base.springcloud.service.OrderBillService; import com.base.springcloud.service.OrderService; import com.base.springcloud.util.DateUtil; import com.base.springcloud.util.DecimalUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,6 +29,8 @@ public class OrderServiceImp implements OrderService { @Autowired private OrderMapper orderMapper; + @Autowired + private OrderBillService orderBillService; /** * 登记订单 @@ -94,7 +99,11 @@ public class OrderServiceImp implements OrderService { */ @Override public void origOrderCheck(RefundBO refundBO) { - Order order = orderMapper.origOrderInfo(refundBO.getOrigOrderNo()); + String billId = refundBO.getBillId(); + String orderNo = orderBillService.queryOrderNo(billId); + if(StringUtils.isBlank(orderNo)) + throw new BusinessException(ErrorConstant.BILL_INVALID); + Order order = orderMapper.origOrderInfo(orderNo); if (!Optional.ofNullable(order).isPresent()) throw new BusinessException(ErrorConstant.PAY_ORDER_NOT_FOUND); if(!PaymentConstant.SUCCESS.equals(order.getOrderState())) diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java index 598decd..783900b 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java @@ -7,6 +7,7 @@ import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.dao.RefundMapper; import com.base.springcloud.entity.Order; import com.base.springcloud.entity.Refund; +import com.base.springcloud.service.BillService; import com.base.springcloud.service.OrderService; import com.base.springcloud.service.RefundService; import com.base.springcloud.service.WecPaymentService; @@ -30,19 +31,20 @@ public class RefundServiceImp implements RefundService { @Autowired private RefundMapper refundMapper; + @Autowired + private BillService billService; + /** * 退款 * @param refundBO */ @Override public void refund(RefundBO refundBO) { - // RBS-退款金额获取 - - // 退款限制检查 - + // RBS-退款金额获取 FIXME 金额暂定支付金额 + billService.refundFront(refundBO); + // TODO 退款限制检查 // 查询原支付订单 orderService.origOrderCheck(refundBO); - // 登记退款信息 registerRfund(refundBO); // 发送微信退款 diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml index 575adc2..ca99c46 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml @@ -111,4 +111,11 @@ order_id = #{orderId,jdbcType=VARCHAR} + \ No newline at end of file diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml index 52b1ff3..ee2d0a9 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml @@ -181,7 +181,7 @@ from pay_order - order_no = #{orderNo,jdbcType=VARCHAR} + order_id = #{orderId,jdbcType=VARCHAR} \ No newline at end of file