diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java index 445bd0e..4c8f98d 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/lease/service/impl/LeaseRepairRecordServiceImpl.java @@ -120,7 +120,9 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService { detailDto.setCosts(newTotalPrice); } } - if (detailDto.getReliefCost() != null) { + if (detailDto.getReliefChangeCost() != null) { + totalCost.subtract(detailDto.getReliefChangeCost()); + } else if (detailDto.getReliefCost() != null) { totalCost.subtract(detailDto.getReliefCost()); } } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java index 9ff6cae..b9b235b 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java @@ -184,14 +184,14 @@ public class OrderController extends BaseController { /** * 发起减免 */ - @ApiOperation(value = "确认减免") - @PostMapping("/confirmCostRelief") - public AjaxResult confirmCostRelief(@RequestBody OrderInfoDto orderInfoDto) { - Integer i = orderService.confirmCostRelief(orderInfoDto); + @ApiOperation(value = "减免改价") + @PostMapping("/changeReliefPrice") + public AjaxResult changeReliefPrice(@RequestBody OrderInfoDto orderInfoDto) { + Integer i = orderService.changeReliefPrice(orderInfoDto); if (i > 0) { - return success("发起减免成功"); + return success("减免改价成功"); } else { - return error("发起减免失败"); + return error("减免改价失败"); } } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java index 64d212a..184b38f 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java @@ -125,6 +125,9 @@ public class OrderDetailDto { @ApiModelProperty(value = "减免费用") private BigDecimal reliefCost; + @ApiModelProperty(value = "改价后的减免费用") + private BigDecimal reliefChangeCost; + @ApiModelProperty(value = "减免天数") private Integer reliefDays; diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java index 701de4c..16f9503 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java @@ -43,7 +43,7 @@ public interface OrderMapper { int updateOrder4Relief(OrderDetailDto dto); - int confirmOrder4Relief(OrderDetailDto dto); + int changeReliefPrice(OrderDetailDto dto); // int deleteCostReliefs(@Param("orderId") Integer orderId); // diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java index 0f97c33..353bd34 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java @@ -21,7 +21,7 @@ public interface OrderService { Integer inputCostRelief(OrderInfoDto orderInfoDto); - Integer confirmCostRelief(OrderInfoDto orderInfoDto); + Integer changeReliefPrice(OrderInfoDto orderInfoDto); OrderInfoDto getAgreementByOrderId(String orderId); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index 4cf82d6..68b7bcd 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -123,7 +123,9 @@ public class OrderServiceImpl implements OrderService { detailDto.setCosts(newTotalPrice); } } - if (detailDto.getReliefCost() != null) { + if (detailDto.getReliefChangeCost() != null) { + totalReliefPrice.add(detailDto.getReliefChangeCost()); + } else if (detailDto.getReliefCost() != null) { totalReliefPrice.add(detailDto.getReliefCost()); } } @@ -190,23 +192,33 @@ public class OrderServiceImpl implements OrderService { @Override public Integer inputCostRelief(OrderInfoDto orderInfoDto) { - List list = orderInfoDto.getDetailsList(); - if (!CollectionUtils.isEmpty(list)) { - for (OrderDetailDto dto : list) { - orderMapper.updateOrder4Relief(dto); + int result = 0; + try { + List list = orderInfoDto.getDetailsList(); + if (!CollectionUtils.isEmpty(list)) { + for (OrderDetailDto dto : list) { + if (Objects.nonNull(dto.getReliefStartTime()) && Objects.nonNull(dto.getReliefEndTime())) { + Date reliefStartTime = sdf.parse(dto.getReliefStartTime()); + Date reliefEndTime = sdf.parse(dto.getReliefEndTime()); + long days = DateUtils.daysBetween(reliefStartTime, reliefEndTime) + 1; + dto.setReliefDays((int) days); + result += orderMapper.updateOrder4Relief(dto); + } + } } + return result; + } catch (Exception e) { + return 0; } - return 0; } @Override - public Integer confirmCostRelief(OrderInfoDto orderInfoDto) { - List list = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId()); + public Integer changeReliefPrice(OrderInfoDto orderInfoDto) { + List list = orderInfoDto.getDetailsList(); if (!CollectionUtils.isEmpty(list)) { for (OrderDetailDto dto : list) { - if (Objects.nonNull(dto.getReliefDays())) { - dto.setReliefCost(BigDecimal.ONE.multiply(dto.getDayLeasePrice()).multiply(new BigDecimal(dto.getReliefDays()))); - orderMapper.confirmOrder4Relief(dto); + if (Objects.nonNull(dto.getReliefChangeCost())) { + orderMapper.changeReliefPrice(dto); } } } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml index c48f113..35bf794 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml @@ -95,14 +95,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ma_order_details set relief_start_time = #{reliefStartTime}, relief_end_time = #{reliefEndTime}, + relief_days = #{reliefDays}, update_time = now() WHERE order_id = #{orderId} and ma_id = #{maId} - + UPDATE ma_order_details - set relief_cost = #{reliefCost} + set relief_change_cost = #{reliefChangeCost}, update_time = now() WHERE order_id = #{orderId} and ma_id = #{maId} @@ -193,6 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" hh.rent_over_time, hh.change_cost as changeCost, hh.relief_cost as reliefCost, + hh.relief_change_cost as reliefChangeCost, CASE WHEN DATE(hh.rent_over_time) = DATE(hh.pre_outbound_time) THEN 1 ELSE TIMESTAMPDIFF(DAY, hh.pre_outbound_time, hh.rent_over_time) + 1 @@ -273,6 +275,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" hh.rent_over_user, hh.rent_over_time, hh.change_cost as changeCost, + hh.relief_cost as reliefCost, + hh.relief_change_cost as reliefChangeCost, CASE WHEN DATE(hh.rent_over_time) = DATE(hh.pre_outbound_time) THEN 1 ELSE TIMESTAMPDIFF(DAY, hh.pre_outbound_time, hh.rent_over_time) + 1 @@ -295,6 +299,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" hh.num, mt.manage_type, mt.lease_price as dayLeasePrice, + hh.relief_cost as reliefCost, + hh.relief_change_cost as reliefChangeCost, CASE WHEN DATE(hh.relief_start_time) = DATE(hh.relief_end_time) THEN 1 ELSE TIMESTAMPDIFF(DAY, hh.relief_start_time, hh.relief_end_time) + 1