Explorar o código

解决退单报错

wang hai 18 horas
pai
achega
95f448be2c

+ 19 - 4
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -985,8 +985,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                             //退钱
                             RefundInfoPo po = new RefundInfoPo();
                             po.setOutTradeNo(orderSettlement.getPayNo());
-                            po.setTotal((int) Arith.mul(Arith.add(order.getActualTotal(), order.getFreightAmount()), 100));
-                            po.setRefundMoney((int) Arith.mul(Arith.add(order.getActualTotal(), order.getFreightAmount()), 100));
+                            //混合支付,有积分时运费优先扣积分
+                            po.setTotal((int) Arith.mul(order.getActualTotal(), 100));
+                            po.setRefundMoney((int) Arith.mul(order.getActualTotal(), 100));
                             String s = wxProviderService.refundOrder(po);
                             System.out.println("微信退款结果:" + s);
                             refundActual = BigDecimal.valueOf(Arith.add(order.getActualTotal(), order.getFreightAmount()));
@@ -1038,7 +1039,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                             npr.setPoints(pointsRecord.getVariablePoints());
                             npr.setVariablePoints(BigDecimal.valueOf(0));
                             Long l = pointsRecordMapper.statisticsPoint(pointsRecord.getUserId(), Math.toIntExact(pointsRecord.getChannelId()));
-                            npr.setCurrentlyAvailablePoints(pointsRecord.getVariablePoints().add(BigDecimal.valueOf(l)));
+                            if (null == l) {
+                                l = 0L;
+                            }
+                            if (null != pointsRecord.getVariablePoints()) {
+                                npr.setCurrentlyAvailablePoints(pointsRecord.getVariablePoints().add(BigDecimal.valueOf(l)));
+                            } else {
+                                npr.setCurrentlyAvailablePoints(BigDecimal.valueOf(0.0).add(BigDecimal.valueOf(l)));
+                            }
                             npr.setCreationDate(new Date());
                             refundScore = (long) (refundScore + Arith.add(order.getActualTotal(), order.getFreightAmount()));
                             pointsRecordMapper.insert(npr);
@@ -1084,7 +1092,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                             npr.setId(null);
                             npr.setPointsType(3);
                             Long l = pointsRecordMapper.statisticsPoint(pointsRecord.getUserId(), Math.toIntExact(pointsRecord.getChannelId()));
-                            npr.setCurrentlyAvailablePoints(pointsRecord.getVariablePoints().add(BigDecimal.valueOf(l)));
+                            if (null == l) {
+                                l = 0L;
+                            }
+                            if (null != pointsRecord.getVariablePoints()) {
+                                npr.setCurrentlyAvailablePoints(pointsRecord.getVariablePoints().add(BigDecimal.valueOf(l)));
+                            } else {
+                                npr.setCurrentlyAvailablePoints(BigDecimal.valueOf(0.0).add(BigDecimal.valueOf(l)));
+                            }
                             npr.setCreationDate(new Date());
                             if (variablePoints < totalRefundScore) {//下单金额全退
                                 npr.setPoints(pointsRecord.getVariablePoints());