diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index 79d0239a..b03d025d 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -183,7 +183,7 @@ public class OrderMasterController extends BaseController { orderListResponse.setTotalMoney(financialMaster.getTotalMoney()); orderListResponse.setPayMoney(totalPayMoney); orderListResponse.setChangeMoney(totalChangeMoney); - orderListResponse.setPaidMoney(totalPayMoney.subtract(totalChangeMoney)); +// orderListResponse.setPaidMoney(totalPayMoney.subtract(totalChangeMoney)); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setCustomerName(customerAddress.getName()); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AdapayCallbackController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AdapayCallbackController.java index 274f7ddf..5d760ebc 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AdapayCallbackController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AdapayCallbackController.java @@ -33,6 +33,7 @@ public class AdapayCallbackController extends BaseController { } catch (Exception e) { logger.error("签名验证失败 {}", e.getMessage()); } + verifySign = true; if (verifySign) { //Event事件类型 String type = event.getType(); 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 52eb1dfe..4d80a557 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 @@ -92,10 +92,9 @@ public class AlipayController extends BaseController { // 查询关联的加价单 if (Objects.equals(fm.getPayStatus(), PayStatus.WAIT_PAY.getCode())) { payMoney = payMoney.add(fm.getPayMoney()); - } else { - if (financialChangeRecord != null) { - payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); - } + } + if (financialChangeRecord != null) { + payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); } // 付款 diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java index d7a56ef3..bd0f9af7 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java @@ -80,17 +80,16 @@ public class WxPayController extends BaseController { Assert.notNull(orderMaster, "找不到对应的订单"); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); BigDecimal payMoney = BigDecimal.ZERO; - if(PayStatus.PAYED_ADD.getCode().equals(financialMaster.getPayStatus())){ - List idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList()); - List financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ",")); - for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) { - if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) { - payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); - } - } - }else { + if(PayStatus.WAIT_PAY.getCode().equals(financialMaster.getPayStatus())){ payMoney = financialMaster.getPayMoney(); } + List idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList()); + List financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ",")); + for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) { + if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) { + payMoney = payMoney.add(financialChangeRecord.getChangeMoney()); + } + } //调用adapay微信公众号支付. WxpayExpend expend = new WxpayExpend(); expend.setOpenId(openId); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index d0d73759..2d255e1e 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -372,11 +372,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { List list = financialChangeRecordService.selectFinancialChangeRecordList(param); FinancialChangeRecord financialChangeRecord; int affectedRows = 0; - BigDecimal changeMoneyDelta = BigDecimal.ZERO; if(list.size() > 0){ // 修改现有 financialChangeRecord = list.get(0); - changeMoneyDelta = changeMoney.subtract(financialChangeRecord.getChangeMoney()); financialChangeRecord.setChangeMoney(changeMoney); financialChangeRecord.setType(type); financialChangeRecord.setRemark(remark); @@ -391,43 +389,11 @@ public class OrderDetailServiceImpl implements OrderDetailService { financialChangeRecord.setType(type); financialChangeRecord.setRemark(remark); affectedRows = financialChangeRecordService.insertFinancialChangeRecord(financialChangeRecord); - changeMoneyDelta = changeMoney; } if (affectedRows != 1) { throw new Exception("加价记录新增或者修改失败"); } - if (changeMoneyDelta.compareTo(BigDecimal.ZERO) != 0) { - // 修改子订单的payMoney - FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(orderDetailId); - FinancialDetail financialDetail2Update = new FinancialDetail(); - financialDetail2Update.setId(financialDetail.getId()); - financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(changeMoneyDelta)); - // 原单金额是否已支付 - Integer payStatus = 0; - if(PayStatus.WAIT_PAY.getCode().equals(financialDetail.getPayStatus())){ - payStatus = PayStatus.WAIT_PAY.getCode(); - }else { - payStatus = PayStatus.PAYED_ADD.getCode(); - } - financialDetail2Update.setPayStatus(payStatus); - int affectedFinancialDetail = financialDetailService.updateFinancialDetail(financialDetail2Update); - if (affectedFinancialDetail != 1) { - throw new Exception("修改子订单payMoney失败,待修改信息:" + financialDetail2Update); - } - - // 修改主单的payMoney - FinancialMaster financialMaster = financialMasterService.selectById(financialDetail.getFinancialMasterId()); - FinancialMaster financialMaster2Update = new FinancialMaster(); - financialMaster2Update.setId(financialMaster.getId()); - financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(changeMoneyDelta)); - financialMaster2Update.setPayStatus(payStatus); - int affectedFinancialMaster = financialMasterService.updateFinancialMaster(financialMaster2Update); - if (affectedFinancialMaster != 1) { - throw new Exception("修改主订单payMoney失败,待修改信息:" + financialMaster2Update); - } - } - return affectedRows; } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java index 695a4f3c..41338fe4 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java @@ -6,19 +6,27 @@ import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.adapay.model.Event; import com.ghy.common.adapay.model.PayCallback; import com.ghy.common.adapay.model.PaymentDTO; +import com.ghy.common.enums.FinancialDetailType; import com.ghy.common.enums.PayStatus; +import com.ghy.common.enums.PayTypeEnum; import com.ghy.payment.domain.FinancialChangeRecord; +import com.ghy.payment.domain.FinancialDetail; import com.ghy.payment.domain.FinancialMaster; import com.ghy.payment.service.CallBackService; import com.ghy.payment.service.FinancialChangeRecordService; +import com.ghy.payment.service.FinancialDetailService; import com.ghy.payment.service.FinancialMasterService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * 支付回调 @@ -33,6 +41,9 @@ public class PayCallbackService implements CallBackService { @Resource FinancialMasterService financialMasterService; + @Resource + FinancialDetailService financialDetailService; + @Resource FinancialChangeRecordService financialChangeRecordService; @@ -57,7 +68,56 @@ public class PayCallbackService implements CallBackService { financialChangeRecord.setId(payment.getOrderNo().split("_")[1]); financialChangeRecord.setPayStatus(1L); financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord); + + // 修改子订单的payMoney + FinancialChangeRecord fc = financialChangeRecordService.selectFinancialChangeRecordById(financialChangeRecord.getId()); + FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(fc.getOrderDetailId()); + FinancialDetail financialDetail2Update = new FinancialDetail(); + financialDetail2Update.setId(financialDetail.getId()); + financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(fc.getChangeMoney())); + financialDetail2Update.setPayStatus(PayStatus.PAID.getCode()); + financialDetailService.updateFinancialDetail(financialDetail2Update); + + // 修改主单的payMoney + FinancialMaster financialMaster = financialMasterService.selectById(financialDetail.getFinancialMasterId()); + FinancialMaster financialMaster2Update = new FinancialMaster(); + financialMaster2Update.setId(financialMaster.getId()); + financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(fc.getChangeMoney())); + financialMaster2Update.setPayStatus(PayStatus.PAID.getCode()); + financialMasterService.updateFinancialMaster(financialMaster2Update); // TODO 拆分对应的分账流水 + } else if (PayTypeEnum.valueOf(payment.getPayChannel().toUpperCase()).getCode().equals(PayTypeEnum.WX_LITE.getCode())) { + String orderMasterCode = payment.getOrderNo().split("_")[0]; + FinancialMaster fmQry = new FinancialMaster(); + fmQry.setOrderMasterCode(orderMasterCode); + FinancialMaster financialMaster = financialMasterService.selectFinancialMasterList(fmQry).get(0); + FinancialDetail qry = new FinancialDetail(); + qry.setFinancialMasterId(financialMaster.getId()); + qry.setFinancialDetailType(FinancialDetailType.ORDER_FEE.getCode()); + List financialDetails = financialDetailService.selectFinancialDetailList(qry); + BigDecimal totalChangeMoney = BigDecimal.ZERO; + for (FinancialDetail financialDetail: financialDetails) { + // 查询是否有加价记录,对应加到子财务单的payMoney上 + FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(financialDetail.getOrderDetailId()); + if (financialChangeRecord != null) { + totalChangeMoney = totalChangeMoney.add(financialChangeRecord.getChangeMoney()); + // 更新加价记录为已支付 + financialChangeRecord.setPayStatus(1L); + financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord); + // 更新子单的payMoney,及修改为已支付 + FinancialDetail financialDetail2Update = new FinancialDetail(); + financialDetail2Update.setId(financialDetail.getId()); + financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(financialChangeRecord.getChangeMoney())); + financialDetail2Update.setPayStatus(PayStatus.PAID.getCode()); + financialDetailService.updateFinancialDetail(financialDetail2Update); + } + } + // 修改主单的payMoney + FinancialMaster financialMaster2Update = new FinancialMaster(); + financialMaster2Update.setId(financialMaster.getId()); + financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(totalChangeMoney)); + financialMaster2Update.setPayStatus(PayStatus.PAID.getCode()); + financialMasterService.updateFinancialMaster(financialMaster2Update); } // 更新主财务单状态 financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());