diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java index fd7282c3..76e4e41d 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java @@ -3,20 +3,23 @@ package com.ghy.web.controller.pay; import com.ghy.common.adapay.model.PayParam; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.enums.PayStatus; +import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderMaster; +import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderMasterService; +import com.ghy.payment.domain.FinancialChangeRecord; import com.ghy.payment.domain.FinancialMaster; import com.ghy.payment.service.AdapayService; +import com.ghy.payment.service.FinancialChangeRecordService; import com.ghy.payment.service.FinancialMasterService; import com.huifu.adapay.core.exception.BaseAdaPayException; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Map; +import java.util.Objects; /** * 支付宝支付API @@ -34,6 +37,12 @@ public class AlipayController extends BaseController { @Resource private FinancialMasterService financialMasterService; + @Resource + private OrderDetailService orderDetailService; + + @Resource + private FinancialChangeRecordService financialChangeRecordService; + /** * 支付宝正扫支付 */ @@ -59,4 +68,42 @@ public class AlipayController extends BaseController { } return AjaxResult.success(map); } + + @PostMapping("/addQr") + public AjaxResult addQrPay(@RequestBody Long orderDetailId) { + BigDecimal payMoney = BigDecimal.ZERO; + Map map; + // 查询回原子单 + OrderDetail orderDetail = orderDetailService.selectById(orderDetailId); + if (orderDetail == null) { + return AjaxResult.error("子订单不存在!"); + } + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + if (orderMaster == null) { + return AjaxResult.error("主订单不存在!"); + } + // 查询主单是否有未支付的付款单 + FinancialMaster fm = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId()); + if (fm == null) { + return AjaxResult.error("财务单不存在!"); + } + // 主单是否付款 + if (Objects.equals(fm.getPayStatus(), PayStatus.WAIT_PAY.getCode())) { + payMoney = payMoney.add(fm.getPayMoney()); + } + // 查询关联的加价单 + FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId); + if (financialChangeRecord != null) { + payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); + } + // 付款 + PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(), payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), "加价付款", "叮咚到家服务"); + try { + map = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null); + } catch (BaseAdaPayException e) { + logger.error("创建支付失败", e); + return AjaxResult.error("网络不佳 请稍后再试"); + } + return AjaxResult.success(map); + } } diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java index 2872a46f..7e8d984c 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java @@ -9,6 +9,8 @@ import java.util.List; */ public interface FinancialChangeRecordMapper { + public FinancialChangeRecord selectNotPayRecordByDetailId(Long orderDetailId); + /** * 查询改价记录 * diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java index 9f03e153..ee7b4297 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java @@ -9,6 +9,8 @@ import java.util.List; */ public interface FinancialChangeRecordService { + public FinancialChangeRecord selectNotPayRecordByDetailId(Long orderDetailId); + /** * 查询改价记录 * diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java index e4e5525e..6362afba 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java @@ -18,6 +18,11 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe @Autowired private FinancialChangeRecordMapper financialChangeRecordMapper; + @Override + public FinancialChangeRecord selectNotPayRecordByDetailId(Long orderDetailId) { + return financialChangeRecordMapper.selectNotPayRecordByDetailId(orderDetailId); + } + /** * 查询改价记录 * diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml index 518d70c6..0a243574 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml @@ -16,6 +16,11 @@ select id, order_detail_id, change_money, status, pay_status, type, remark from financial_change_record + +