|
|
@@ -868,7 +868,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// }
|
|
|
|
|
|
// 待发货状态-最后一件商品进行退款,退款金额 = 商品金额 + 订单运费金额
|
|
|
- if ((Objects.equals(order.getHbOrderStatus(), OrderStatus.PADYED.value())||
|
|
|
+ if ((Objects.equals(order.getHbOrderStatus(), OrderStatus.PADYED.value()) ||
|
|
|
Objects.equals(order.getHbOrderStatus(), OrderStatus.CONSIGNMENT.value())) && order.getFreightAmount() > 0) {
|
|
|
int orderItenCount = orderItemService.count(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, order.getOrderNumber()));
|
|
|
if (Objects.equals(orderRefunds.size(), orderItenCount - 1)) {
|
|
|
@@ -945,6 +945,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.eq(OrderRefund::getReturnMoneySts, 70)
|
|
|
);
|
|
|
if (ObjectUtils.isNotEmpty(orderRefund)) {
|
|
|
+ //退款的金额
|
|
|
+ BigDecimal refundActual = BigDecimal.ZERO;
|
|
|
+ //退款的积分
|
|
|
+ Long refundScore = 0L;
|
|
|
+ //过期的积分
|
|
|
+ Long refundExpiredScore = 0L;
|
|
|
+
|
|
|
Order order = orderMapper.selectById(orderRefund.getOrderId());
|
|
|
if (null == order) throw new GlobalException("该订单不支持退款");
|
|
|
//判定已完成的时间
|
|
|
@@ -967,6 +974,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
po.setRefundMoney((int) Arith.mul(Arith.add(order.getActualTotal(), order.getFreightAmount()), 100));
|
|
|
String s = wxProviderService.refundOrder(po);
|
|
|
System.out.println("微信退款结果:" + s);
|
|
|
+ refundActual = BigDecimal.valueOf(Arith.add(order.getActualTotal(), order.getFreightAmount()));
|
|
|
//优先退未过期的积分,退积分
|
|
|
List<PointsRecord> pointsRecords = pointsRecordMapper.selectList(new LambdaQueryWrapper<PointsRecord>()
|
|
|
.eq(PointsRecord::getOrderNumber, order.getOrderNumber()).eq(PointsRecord::getPointsType, 2)
|
|
|
@@ -976,6 +984,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.isNull(PointsRecord::getExpiryDate)
|
|
|
).orderByDesc(PointsRecord::getExpiryDate));
|
|
|
for (PointsRecord pointsRecord : pointsRecords) {
|
|
|
+ refundScore = (long) (refundScore + Arith.add(order.getActualTotal(), order.getFreightAmount()));
|
|
|
PointsRecord npr = new PointsRecord();
|
|
|
BeanUtils.copyProperties(pointsRecord, npr);
|
|
|
npr.setId(null);
|
|
|
@@ -987,6 +996,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
npr.setCreationDate(new Date());
|
|
|
pointsRecordMapper.insert(npr);
|
|
|
}
|
|
|
+ refundExpiredScore = order.getOffsetPoints() - refundScore;
|
|
|
} else {//仅微信支付
|
|
|
RefundInfoPo po = new RefundInfoPo();
|
|
|
po.setOutTradeNo(orderSettlement.getPayNo());
|
|
|
@@ -994,6 +1004,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
po.setRefundMoney((int) Arith.mul(Arith.add(order.getTotal(), order.getFreightAmount()), 100));
|
|
|
String s = wxProviderService.refundOrder(po);
|
|
|
System.out.println("微信退款结果:" + s);
|
|
|
+ refundActual = BigDecimal.valueOf(Arith.add(order.getTotal(), order.getFreightAmount()));
|
|
|
}
|
|
|
} else {
|
|
|
//退,积分【优先退未过期的积分】
|
|
|
@@ -1014,8 +1025,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
Long l = pointsRecordMapper.statisticsPoint(pointsRecord.getUserId(), Math.toIntExact(pointsRecord.getChannelId()));
|
|
|
npr.setCurrentlyAvailablePoints(pointsRecord.getVariablePoints().add(BigDecimal.valueOf(l)));
|
|
|
npr.setCreationDate(new Date());
|
|
|
+ refundScore = (long) (refundScore + Arith.add(order.getActualTotal(), order.getFreightAmount()));
|
|
|
pointsRecordMapper.insert(npr);
|
|
|
}
|
|
|
+ refundExpiredScore = order.getOffsetPoints() - refundScore;
|
|
|
}
|
|
|
break;
|
|
|
case 2://2:单个物品退款
|
|
|
@@ -1043,8 +1056,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
totalRefundActual = Arith.add(totalRefundActual, productCount * orderItem.getPrice());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//退积分
|
|
|
if (totalRefundScore > 0) {
|
|
|
+ refundScore = (long) totalRefundScore;
|
|
|
+ refundExpiredScore = order.getOffsetPoints() - refundScore;
|
|
|
for (PointsRecord pointsRecord : pointsRecords) {
|
|
|
//下单支付的金额
|
|
|
int variablePoints = pointsRecord.getVariablePoints().intValue();
|
|
|
@@ -1066,6 +1082,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
pointsRecordMapper.insert(npr);
|
|
|
if (variablePoints >= totalRefundScore) return;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
//退钱
|
|
|
if (totalRefundActual > 0) {
|
|
|
@@ -1078,12 +1095,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
po.setRefundMoney((int) Arith.mul(totalRefundActual, 100));
|
|
|
String s = wxProviderService.refundOrder(po);
|
|
|
System.out.println("微信退款结果:" + s);
|
|
|
+ refundActual = BigDecimal.valueOf(totalRefundActual);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
order.setHbOrderStatus(OrderStatus.CLOSE.value());
|
|
|
orderMapper.updateById(order);
|
|
|
|
|
|
+ orderRefund.setRefundAmount(refundActual.doubleValue());
|
|
|
+ orderRefund.setOffsetPoints(refundScore);
|
|
|
+ orderRefund.setRefundExpiredScore(refundExpiredScore);
|
|
|
+ orderRefundMapper.updateById(orderRefund);
|
|
|
+
|
|
|
//生成待商家审核记录
|
|
|
OrderRefundRecord orderRefundRecord = new OrderRefundRecord();
|
|
|
orderRefundRecord.setOrderRefundId(orderRefund.getRefundId());
|