From f680581fc8b1654782995c9797ae431e708be043 Mon Sep 17 00:00:00 2001 From: donqi Date: Sun, 16 Oct 2022 22:50:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=94=AE=E5=90=8E=EF=BC=8C=E5=8A=A0=E4=BB=B7?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=87=91=E9=A2=9D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/AfterServiceRecordController.java | 8 +- .../order/OrderDetailController.java | 40 +++++----- .../order/OrderMasterController.java | 77 ++++++++++--------- .../ghy/web/pojo/vo/OrderStandardDetail.java | 2 +- .../ghy/order/domain/AfterServiceRecord.java | 25 +++++- .../service/IAfterServiceRecordService.java | 4 +- .../ghy/order/service/OrderDetailService.java | 2 +- .../impl/AfterServiceRecordServiceImpl.java | 24 +++++- .../service/impl/OrderDetailServiceImpl.java | 40 +++++++++- .../mapper/order/AfterServiceRecordMapper.xml | 9 ++- 10 files changed, 157 insertions(+), 74 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/AfterServiceRecordController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/AfterServiceRecordController.java index 53c2c0ad..8133cecc 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/AfterServiceRecordController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/AfterServiceRecordController.java @@ -3,6 +3,7 @@ package com.ghy.web.controller.order; import java.util.List; import java.util.stream.Collectors; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -130,7 +131,12 @@ public class AfterServiceRecordController extends BaseController @ResponseBody public AjaxResult editSave(@RequestBody AfterServiceRecord afterServiceRecord) { - return toAjax(afterServiceRecordService.updateAfterServiceRecord(afterServiceRecord)); + try { + return toAjax(afterServiceRecordService.updateAfterServiceRecord(afterServiceRecord)); + } catch (Exception exception) { + logger.error(ExceptionUtils.getStackTrace(exception)); + return AjaxResult.error(exception.getMessage()); + } } /** diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java index cbc28fd8..b4c4fb91 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -161,12 +161,12 @@ public class OrderDetailController extends BaseController { FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(orderMaster.getAddressId()); @@ -273,12 +273,12 @@ public class OrderDetailController extends BaseController { FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(orderMaster.getAddressId()); @@ -335,7 +335,9 @@ public class OrderDetailController extends BaseController { @PostMapping("/after/list") @ResponseBody public TableDataInfo afterServiceList(@RequestBody OrderDetail orderDetail) { - List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(new AfterServiceRecord()); + AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); + afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE); + List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); Map> detailRecordMap = afterServiceRecordList.stream().collect(Collectors.groupingBy(record->record.getOrderDetailId())); // 踢重后的子单ids List detailIds = afterServiceRecordList.stream().map(AfterServiceRecord::getOrderDetailId).distinct().collect(Collectors.toList()); @@ -385,12 +387,12 @@ public class OrderDetailController extends BaseController { FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// detailPayMoney = detailPayMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(orderMaster.getAddressId()); 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 7a689ae5..89f7531a 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 @@ -144,17 +144,17 @@ public class OrderMasterController extends BaseController { // 财务信息 FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(master.getId()); BigDecimal totalPayMoney = financialMaster.getPayMoney(); - BigDecimal totalChangeMoney = new BigDecimal(0); - for (OrderDetail detail: detailList) { - // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - totalChangeMoney = totalChangeMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } - } - totalPayMoney = totalPayMoney.add(totalChangeMoney); +// BigDecimal totalChangeMoney = new BigDecimal(0); +// for (OrderDetail detail: detailList) { +// // 查询子单加价记录 +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// totalChangeMoney = totalChangeMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } +// } +// totalPayMoney = totalPayMoney.add(totalChangeMoney); // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); @@ -185,7 +185,7 @@ public class OrderMasterController extends BaseController { orderListResponse.setDiscountMoney(financialMaster.getDiscountMoney()); orderListResponse.setTotalMoney(financialMaster.getTotalMoney()); orderListResponse.setPayMoney(totalPayMoney); - orderListResponse.setChangeMoney(totalChangeMoney); +// orderListResponse.setChangeMoney(totalChangeMoney); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setCustomerName(customerAddress.getName()); @@ -227,7 +227,9 @@ public class OrderMasterController extends BaseController { public TableDataInfo afterList(@RequestBody OrderMaster orderMaster) { // 查所有售后的单 - List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(new AfterServiceRecord()); + AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); + afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE); + List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); // 踢重后的子单ids List detailIds = afterServiceRecordList.stream().map(AfterServiceRecord::getOrderDetailId).distinct().collect(Collectors.toList()); StringBuilder orderDetailIds = new StringBuilder(); @@ -285,17 +287,17 @@ public class OrderMasterController extends BaseController { // 财务信息 FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(master.getId()); BigDecimal totalPayMoney = financialMaster.getPayMoney(); - BigDecimal totalChangeMoney = new BigDecimal(0); - for (OrderDetail detail: detailList) { - // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - totalChangeMoney = totalChangeMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } - } - totalPayMoney = totalPayMoney.add(totalChangeMoney); +// BigDecimal totalChangeMoney = new BigDecimal(0); +// for (OrderDetail detail: detailList) { +// // 查询子单加价记录 +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// totalChangeMoney = totalChangeMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } +// } +// totalPayMoney = totalPayMoney.add(totalChangeMoney); // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); @@ -326,7 +328,7 @@ public class OrderMasterController extends BaseController { orderListResponse.setDiscountMoney(financialMaster.getDiscountMoney()); orderListResponse.setTotalMoney(financialMaster.getTotalMoney()); orderListResponse.setPayMoney(totalPayMoney); - orderListResponse.setChangeMoney(totalChangeMoney); +// orderListResponse.setChangeMoney(totalChangeMoney); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setCustomerName(customerAddress.getName()); @@ -408,16 +410,15 @@ public class OrderMasterController extends BaseController { FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(orderDetail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); - FinancialChangeRecord financialChangeRecord = null; // 查询子单加价记录 FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); changeRecordQry.setOrderDetailId(orderDetail.getId()); List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - financialChangeRecord = financialChangeRecords.get(0); - totalPayMoney = totalPayMoney.add(financialChangeRecord.getChangeMoney()); - detailPayMoney = detailPayMoney.add(financialChangeRecord.getChangeMoney()); - } +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// financialChangeRecord = financialChangeRecords.get(0); +// totalPayMoney = totalPayMoney.add(financialChangeRecord.getChangeMoney()); +// detailPayMoney = detailPayMoney.add(financialChangeRecord.getChangeMoney()); +// } OrderStandardDetail orderStandardDetail = new OrderStandardDetail(); orderStandardDetail.setOrderDetailId(orderDetail.getId()); @@ -433,7 +434,7 @@ public class OrderMasterController extends BaseController { orderStandardDetail.setFinishImgList(finishImgList); orderStandardDetail.setRemark(orderDetail.getRemark()); orderStandardDetail.setPayMoney(detailPayMoney); - orderStandardDetail.setFinancialChangeRecord(financialChangeRecord); + orderStandardDetail.setFinancialChangeRecord(financialChangeRecords); orderStandardDetail.setOrderStatus(orderDetail.getOrderStatus()); AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); @@ -681,12 +682,12 @@ public class OrderMasterController extends BaseController { } // 查询子单加价记录 - FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); - changeRecordQry.setOrderDetailId(detail.getId()); - List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); - if (CollectionUtils.isNotEmpty(financialChangeRecords)) { - totalMoney = totalMoney.add(financialChangeRecords.get(0).getChangeMoney()); - } +// FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); +// changeRecordQry.setOrderDetailId(detail.getId()); +// List financialChangeRecords = financialChangeRecordService.selectFinancialChangeRecordList(changeRecordQry); +// if (CollectionUtils.isNotEmpty(financialChangeRecords)) { +// totalMoney = totalMoney.add(financialChangeRecords.get(0).getChangeMoney()); +// } OrderStandardDetail detailRes = new OrderStandardDetail(); detailRes.setOrderDetailId(detail.getId()); diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java index 2e91b5ba..8f684eb4 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStandardDetail.java @@ -34,7 +34,7 @@ public class OrderStandardDetail { private BigDecimal payMoney; - private FinancialChangeRecord financialChangeRecord; + private List financialChangeRecord; private String remark; diff --git a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java index 648a8bfa..080a6705 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java @@ -61,6 +61,11 @@ public class AfterServiceRecord extends BaseEntity @Excel(name = "客户最终确认:0为不同意,1为同意") private Long customerFinalCheck; + @Excel(name = "最终原路返还的金额") + private BigDecimal originalRefund; + + private boolean excludeAfterServiceFinished; + private List imgsList; @@ -172,6 +177,22 @@ public class AfterServiceRecord extends BaseEntity return customerFinalCheck; } + public BigDecimal getOriginalRefund() { + return originalRefund; + } + + public void setOriginalRefund(BigDecimal originalRefund) { + this.originalRefund = originalRefund; + } + + public boolean isExcludeAfterServiceFinished() { + return excludeAfterServiceFinished; + } + + public void setExcludeAfterServiceFinished(boolean excludeAfterServiceFinished) { + this.excludeAfterServiceFinished = excludeAfterServiceFinished; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -185,12 +206,14 @@ public class AfterServiceRecord extends BaseEntity .append("workerFeedbackReason", getWorkerFeedbackReason()) .append("refund", getRefund()) .append("agreedRefund", getAgreedRefund()) + .append("originalRefund", getOriginalRefund()) .append("customerFinalCheck", getCustomerFinalCheck()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) + .append("excludeAfterServiceFinished", isExcludeAfterServiceFinished()) .toString(); } -} \ No newline at end of file +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java b/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java index 4f72c34c..970e1ef8 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/IAfterServiceRecordService.java @@ -41,7 +41,7 @@ public interface IAfterServiceRecordService * @param afterServiceRecord 售后记录 * @return 结果 */ - public int updateAfterServiceRecord(AfterServiceRecord afterServiceRecord); + public int updateAfterServiceRecord(AfterServiceRecord afterServiceRecord) throws Exception; /** * 批量删除售后记录 @@ -58,4 +58,4 @@ public interface IAfterServiceRecordService * @return 结果 */ public int deleteAfterServiceRecordById(String id); -} \ No newline at end of file +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java index 4c4eb735..cdfa209a 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -125,7 +125,7 @@ public interface OrderDetailService { * @param remark 备注 * @return 成功/失败 */ - int changePrice(Long orderDetailId, BigDecimal changeMoney, Integer type, String remark); + int changePrice(Long orderDetailId, BigDecimal changeMoney, Integer type, String remark) throws Exception; int sureChange(Long financialChangeRecordId); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index e5456062..face9999 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.adapay.model.PaymentDTO; import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.enums.OrderStatus; import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.PayTypeEnum; import com.ghy.common.exception.base.BaseException; @@ -30,6 +31,7 @@ import com.ghy.order.mapper.AfterServiceRecordMapper; import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.service.IAfterServiceRecordService; import com.ghy.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; /** @@ -120,7 +122,8 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService * @return 结果 */ @Override - public int updateAfterServiceRecord(AfterServiceRecord param) { + @Transactional(rollbackFor = Exception.class) + public int updateAfterServiceRecord(AfterServiceRecord param) throws Exception { AfterServiceRecord afterServiceRecord = this.selectAfterServiceRecordById(param.getId()); Assert.notNull(afterServiceRecord, "售后记录不存在!"); // 实际同意,需要发起退款,减少原单分账金额-调用退款接口 @@ -150,22 +153,35 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney)); financialMasterService.updateFinancialMaster(financialMaster); financialDetailService.updateFinancialDetail(financialDetail); - }else { + param.setOriginalRefund(BigDecimal.ZERO); + } else { Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); JSONObject response = null; try { response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), String.valueOf(refundMoney)); - if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) { + if (AdapayStatusEnum.pending.code.equals(response.getString("status"))) { financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney)); financialMasterService.updateFinancialMaster(financialMaster); financialDetailService.updateFinancialDetail(financialDetail); + param.setOriginalRefund(refundMoney); } else if (AdapayStatusEnum.failed.code.equals(response.getString("status"))) { - throw new BaseException(response.getString("error_msg")); + throw new BaseException("发起退款异常"); } } catch (BaseAdaPayException e) { throw new BaseException(e.getMessage()); } } + + // 判断子单payMoney是否已经是0了,是的话就修改子单状态为已取消;主单状态会随之更改,不用做处理。 + if (financialDetail.getPayMoney().compareTo(BigDecimal.ZERO) == 0) { + OrderDetail orderDetail2Update = new OrderDetail(); + orderDetail2Update.setId(orderDetail.getId()); + orderDetail2Update.setOrderStatus(OrderStatus.CANCEL.code()); + int affectedOrderDetail = orderDetailService.updateOrderDetail(orderDetail); + if (affectedOrderDetail != 1) { + throw new Exception("子订单修改状态为已取消失败。"); + } + } } param.setUpdateTime(DateUtils.getNowDate()); return afterServiceRecordMapper.updateAfterServiceRecord(param); 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 cce10a66..717c1a47 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 @@ -360,7 +360,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { } @Override - public int changePrice(Long orderDetailId, BigDecimal changeMoney, Integer type, String remark) { + @Transactional(rollbackFor = Exception.class) + public int changePrice(Long orderDetailId, BigDecimal changeMoney, Integer type, String remark) throws Exception { OrderDetail orderDetail = orderDetailMapper.selectById(orderDetailId); if(orderDetail==null){ throw new BaseException("子单不存在!"); @@ -370,13 +371,16 @@ public class OrderDetailServiceImpl implements OrderDetailService { param.setOrderDetailId(orderDetailId); 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); - return financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord); + affectedRows = financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord); }else { // 创建改单记录 financialChangeRecord = new FinancialChangeRecord(); @@ -386,8 +390,38 @@ public class OrderDetailServiceImpl implements OrderDetailService { financialChangeRecord.setPayStatus(0L); financialChangeRecord.setType(type); financialChangeRecord.setRemark(remark); - return financialChangeRecordService.insertFinancialChangeRecord(financialChangeRecord); + 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)); + financialDetail2Update.setPayStatus(PayStatus.WAIT_PAY.getCode()); + 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.WAIT_PAY.getCode()); + int affectedFinancialMaster = financialMasterService.updateFinancialMaster(financialMaster2Update); + if (affectedFinancialMaster != 1) { + throw new Exception("修改主订单payMoney失败,待修改信息:" + financialMaster2Update); + } + } + + return affectedRows; } @Override diff --git a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml index 13202594..3a3e1166 100644 --- a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml @@ -21,10 +21,11 @@ + - select id, customer_reason_type, customer_reason, order_detail_id, oper_type, worker_feedback_result, worker_feedback_reason_type, worker_feedback_reason, refund, agreed_refund, customer_final_check, create_by, create_time, update_by, update_time, remark from after_service_record + select id, customer_reason_type, customer_reason, order_detail_id, oper_type, worker_feedback_result, worker_feedback_reason_type, worker_feedback_reason, refund, agreed_refund, original_refund, customer_final_check, create_by, create_time, update_by, update_time, remark from after_service_record