|
@@ -195,37 +195,37 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
|
|
|
updateById(afterSales);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public void agree(String afterSalesNo) {
|
|
|
- AfterSales afterSales = lambdaQuery().eq(AfterSales::getAfterSalesNo, afterSalesNo).one();
|
|
|
- Assert.notNull(afterSales, "售后数据不存在");
|
|
|
- afterSales.setStatus(AfterSalesStatusEnum.FINISH.getValue());
|
|
|
- updateById(afterSales);
|
|
|
-
|
|
|
- if (AfterSalesTypeEnum.REFUND.getValue().equals(afterSales.getType())) {
|
|
|
- if (YesOrNoEnum.YES.getValue().equals(afterSales.getRefundState())) {
|
|
|
- throw new ServiceException("该售后订单已退款");
|
|
|
- }
|
|
|
- Order order = orderService.getById(afterSales.getOrderId());
|
|
|
- Assert.notNull(order, "订单数据不存在");
|
|
|
- orderService.commonRefund(order, afterSales.getId());
|
|
|
- } else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType()) ||
|
|
|
- AfterSalesTypeEnum.NOT_ARRIVE_REFUND.getValue().equals(afterSales.getType())) {
|
|
|
- if (YesOrNoEnum.YES.getValue().equals(afterSales.getRefundState())) {
|
|
|
- throw new ServiceException("该售后订单已退款");
|
|
|
- }
|
|
|
- Order order = orderService.getById(afterSales.getOrderId());
|
|
|
- Assert.notNull(order, "订单数据不存在");
|
|
|
- // 计算退款金额
|
|
|
- List<OrderGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
|
|
|
- BigDecimal refundAmount = new BigDecimal(0);
|
|
|
- for (OrderGoods good : goods) {
|
|
|
- refundAmount = refundAmount.add(good.getGoodsPrice().multiply(BigDecimal.valueOf(good.getRefundGoodsNum())));
|
|
|
- }
|
|
|
- orderService.commonRefund(order.getOrderNo(), order.getId(), refundAmount, order.getTotalAmount(), afterSales.getId());
|
|
|
- }
|
|
|
- }
|
|
|
+// @Override
|
|
|
+// @Transactional
|
|
|
+// public void agree(String afterSalesNo) {
|
|
|
+// AfterSales afterSales = lambdaQuery().eq(AfterSales::getAfterSalesNo, afterSalesNo).one();
|
|
|
+// Assert.notNull(afterSales, "售后数据不存在");
|
|
|
+// afterSales.setStatus(AfterSalesStatusEnum.FINISH.getValue());
|
|
|
+// updateById(afterSales);
|
|
|
+//
|
|
|
+// if (AfterSalesTypeEnum.REFUND.getValue().equals(afterSales.getType())) {
|
|
|
+// if (YesOrNoEnum.YES.getValue().equals(afterSales.getRefundState())) {
|
|
|
+// throw new ServiceException("该售后订单已退款");
|
|
|
+// }
|
|
|
+// Order order = orderService.getById(afterSales.getOrderId());
|
|
|
+// Assert.notNull(order, "订单数据不存在");
|
|
|
+// orderService.commonRefund(order, afterSales.getId());
|
|
|
+// } else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType()) ||
|
|
|
+// AfterSalesTypeEnum.NOT_ARRIVE_REFUND.getValue().equals(afterSales.getType())) {
|
|
|
+// if (YesOrNoEnum.YES.getValue().equals(afterSales.getRefundState())) {
|
|
|
+// throw new ServiceException("该售后订单已退款");
|
|
|
+// }
|
|
|
+// Order order = orderService.getById(afterSales.getOrderId());
|
|
|
+// Assert.notNull(order, "订单数据不存在");
|
|
|
+// // 计算退款金额
|
|
|
+// List<OrderGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
|
|
|
+// BigDecimal refundAmount = new BigDecimal(0);
|
|
|
+// for (OrderGoods good : goods) {
|
|
|
+// refundAmount = refundAmount.add(good.getGoodsPrice().multiply(BigDecimal.valueOf(good.getRefundGoodsNum())));
|
|
|
+// }
|
|
|
+// orderService.commonRefund(order.getOrderNo(), order.getId(), refundAmount, order.getTotalAmount(), afterSales.getId());
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public void refuse(String afterSalesNo, String refuseReason) {
|
|
@@ -413,52 +413,6 @@ public class AfterSalesServiceImpl extends ServiceImpl<AfterSalesMapper, AfterSa
|
|
|
afterSales.setRefundState(YesOrNoEnum.YES.getValue());
|
|
|
afterSales.setStatus(AfterSalesStatusEnum.FINISH.getValue());
|
|
|
updateById(afterSales);
|
|
|
-
|
|
|
- // 类型为售后的时候,查询该订单下是否还有未处理的售后,如果没有则重新计算收益
|
|
|
- if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType())) {
|
|
|
- List<AfterSales> list = lambdaQuery().eq(AfterSales::getOrderId, afterSales.getOrderId()).list();
|
|
|
- if (CollUtil.isNotEmpty(list)) {
|
|
|
- List<AfterSales> collect = list.stream().filter(e -> AfterSalesStatusEnum.PROCESSED.getValue().equals(e.getStatus())).collect(Collectors.toList());
|
|
|
- // 如果没有则重新计算收益
|
|
|
- if (CollUtil.isEmpty(collect)) {
|
|
|
- List<Long> longs = list.stream().map(AfterSales::getId).collect(Collectors.toList());
|
|
|
- List<OrderRefund> refunds = orderRefundService.lambdaQuery().in(OrderRefund::getAfterSalesId, longs).list();
|
|
|
-
|
|
|
- BigDecimal totalRefund = new BigDecimal(0);
|
|
|
- // 计算总的退款金额
|
|
|
- for (OrderRefund refund : refunds) {
|
|
|
- totalRefund = totalRefund.add(refund.getRefuseAmount());
|
|
|
- }
|
|
|
- Order order = orderService.getById(afterSales.getOrderId());
|
|
|
- // 退款金额跟订单金额一致则不处理
|
|
|
- if (!order.getPaymentAmount().equals(totalRefund)) {
|
|
|
- commissionService.commissionCalculationTwo(order.getId(), order.getPaymentAmount().subtract(totalRefund));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (AfterSalesTypeEnum.PART_REFUND.getValue().equals(afterSales.getType())) {
|
|
|
- List<OrderGoods> goods = afterSalesGoodsService.getGoodsByAfterSalesId(afterSales.getId());
|
|
|
- for (OrderGoods good : goods) {
|
|
|
- good.setIsRefund(YesOrNoEnum.YES.getValue());
|
|
|
- }
|
|
|
- orderGoodsService.updateBatchById(goods);
|
|
|
-
|
|
|
- // 如果该订单下所有商品都已退款,则吧订单状态修改为已退款
|
|
|
- Integer count = orderGoodsService.lambdaQuery().eq(OrderGoods::getOrderId, afterSales.getOrderId()).eq(OrderGoods::getIsRefund, YesOrNoEnum.NO.getValue())
|
|
|
- .count();
|
|
|
-
|
|
|
- // 判断所有的商品是否都已申请退款
|
|
|
- boolean flag = true;
|
|
|
- for (OrderGoods g : goods) {
|
|
|
- if (g.getGoodsNum() > g.getAfterSalesGoodsNum()) {
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (count < 1 && flag) {
|
|
|
- orderService.lambdaUpdate().set(Order::getOrderState, OrderStateEnum.REFUNDED.getValue()).eq(BaseEntity::getId, afterSales.getOrderId()).update();
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
@Override
|