Ver código fonte

bugfix:退款时修改订单状态为完成的情况

lyx 3 meses atrás
pai
commit
dc98e79a97

+ 7 - 2
alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java

@@ -416,8 +416,8 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
                 .eq("order_id", refundOrder.getOrderId()).eq("delete_flag",0));
         // 1.查询订单信息  订单表 + 中间表
         LifeUserOrder order = lifeUserOrderMapper.selectById(refundOrder.getOrderId());
-        // 待使用的券(可退款的券)
-        List<OrderCouponMiddle> orderCouponMiddles1 = orderCouponMiddles.stream().filter(orderCouponMiddle -> orderCouponMiddle.getStatus() == 1).collect(Collectors.toList());
+        // 待使用的券(可退款的券 || 退款失败的券 目前没做失败的券状态更新 暂时不加
+        List<OrderCouponMiddle> orderCouponMiddles1 = orderCouponMiddles.stream().filter(orderCouponMiddle -> orderCouponMiddle.getStatus() == OrderStatusEnum.WAIT_USE.getStatus()).collect(Collectors.toList());
         if (orderCouponMiddles1.size() < refundOrder.getRefundCouponAmount()) {
             returnMap.put("fail", "退款券数不足");
             return returnMap;
@@ -487,6 +487,11 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
                 // 处理 quanId 为 null 的情况,例如日志记录
                 log.error("更新优惠券状态失败");
             }
+        } else if (refundCouponCount + refundOrder.getRefundCouponAmount() != orderCouponMiddles.size() && refundOrder.getRefundCouponAmount() == orderCouponMiddles1.size()) {
+            // 累计退券个数+当前退券个数!=总个数 且 当前退券数量 = 可退券数
+            lifeUserOrderMapper.update(null,new UpdateWrapper<LifeUserOrder>().eq("id",order.getId())
+                    .set("status",OrderStatusEnum.COMPLETE.getStatus())
+                    .set("finish_time",now));
         }
 
         // 将退款记录插入到数据库中