|
|
@@ -414,6 +414,8 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
|
|
|
}
|
|
|
List<OrderCouponMiddle> orderCouponMiddles = orderCouponMiddleMapper.selectList(new QueryWrapper<OrderCouponMiddle>()
|
|
|
.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());
|
|
|
if (orderCouponMiddles1.size() < refundOrder.getRefundCouponAmount()) {
|
|
|
@@ -430,37 +432,47 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
|
|
|
totalRefundMoney = totalRefundMoney.add(new BigDecimal(lifeRefundOrder.getRefundMoney()));
|
|
|
refundCouponCount += lifeRefundOrder.getRefundCouponAmount();
|
|
|
}
|
|
|
- if(totalRefundMoney.compareTo(new BigDecimal(refundOrder.getRefundMoney()))>0){
|
|
|
+ if(totalRefundMoney.compareTo(new BigDecimal(order.getFinalPrice()))>0){
|
|
|
returnMap.put("fail","退款金额(已退+当前退)不能大于订单金额");
|
|
|
return returnMap;
|
|
|
}
|
|
|
Date now = new Date();
|
|
|
- LifeUserOrder order = lifeUserOrderMapper.selectById(refundOrder.getOrderId());
|
|
|
- String result = aliApi.processRefund(order.getOrderNo(), refundOrder.getRefundMoney(), refundOrder.getDescription());
|
|
|
+ boolean ifPartialRefund = false;
|
|
|
+ String PartialRefundCode = "";
|
|
|
+ // 只要本次退款不是全退都是部分退
|
|
|
+ if (refundOrder.getRefundCouponAmount() != orderCouponMiddles.size()){
|
|
|
+ ifPartialRefund = true;
|
|
|
+ PartialRefundCode = UniqueRandomNumGenerator.generateUniqueCode(12);
|
|
|
+ }
|
|
|
+ String result = aliApi.processRefund(order.getOrderNo(), refundOrder.getRefundMoney(), refundOrder.getDescription(),PartialRefundCode);
|
|
|
String refundMessage = "";
|
|
|
|
|
|
// 更新的中间表id
|
|
|
List<Integer> updateIds = orderCouponMiddles1.stream().limit(refundOrder.getRefundCouponAmount()).map(x -> x.getId()).collect(Collectors.toList());
|
|
|
if (result.equals("调用失败")) {
|
|
|
refundMessage = "退款失败";
|
|
|
- orderCouponMiddleMapper.update(null,new UpdateWrapper<OrderCouponMiddle>().in("id",updateIds)
|
|
|
+ // TODO 退款失败目前不做处理
|
|
|
+ /*orderCouponMiddleMapper.update(null,new UpdateWrapper<OrderCouponMiddle>().in("id",updateIds)
|
|
|
.set("status",OrderStatusEnum.REFUND_FAILED.getStatus())
|
|
|
.set("refund_time",now)
|
|
|
+ .set(ifPartialRefund,"refund_code",PartialRefundCode)
|
|
|
.set("refund_reason",refundOrder.getReason()));
|
|
|
// 退款记录
|
|
|
- refundOrder.setApplicationTime(now);
|
|
|
- refundOrder.setRefundTime(now);
|
|
|
- refundOrder.setStatus(1);
|
|
|
+ refundOrder.setApplicationTime(now).setRefundTime(now).setStatus(1);*/
|
|
|
+ returnMap.put("success", refundMessage);
|
|
|
+ return returnMap;
|
|
|
} else {
|
|
|
refundMessage = "退款成功";
|
|
|
orderCouponMiddleMapper.update(null,new UpdateWrapper<OrderCouponMiddle>().in("id",updateIds)
|
|
|
.set("status",OrderStatusEnum.REFUND.getStatus())
|
|
|
.set("refund_time",now)
|
|
|
+ .set(ifPartialRefund,"partial_refund_code",PartialRefundCode)
|
|
|
.set("refund_reason",refundOrder.getReason()));
|
|
|
// 退款记录
|
|
|
- refundOrder.setApplicationTime(now);
|
|
|
- refundOrder.setRefundTime(now);
|
|
|
- refundOrder.setStatus(0);
|
|
|
+ refundOrder.setApplicationTime(now).setRefundTime(now).setStatus(0);
|
|
|
+ if(ifPartialRefund){
|
|
|
+ refundOrder.setPartialRefundCode(PartialRefundCode);
|
|
|
+ }
|
|
|
}
|
|
|
// 更新数据(中间表数据+订单表数据:当已退款个数+当前退款个数=已使用的券数时,订单状态改为已退款)
|
|
|
if (refundCouponCount + refundOrder.getRefundCouponAmount() == orderCouponMiddles.size()) {
|
|
|
@@ -477,8 +489,6 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 中间表数据更新
|
|
|
- returnMap.put("success", refundMessage);
|
|
|
// 将退款记录插入到数据库中
|
|
|
if (lifeRefundOrderMapper.insert(refundOrder) > 0) {
|
|
|
// 发送通知
|
|
|
@@ -507,6 +517,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
|
|
|
// record.setMoney(-money.intValue());
|
|
|
// storeIncomeDetailsRecordMapper.insert(record);
|
|
|
// }
|
|
|
+ returnMap.put("success", refundMessage);
|
|
|
return returnMap;
|
|
|
}
|
|
|
|