Parcourir la source

修改完善订单,用户信息

wang il y a 3 jours
Parent
commit
7d672dc8b7

+ 4 - 2
yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java

@@ -140,9 +140,11 @@ public class SubmitOrderListener {
                 com.yami.shop.bean.model.Order order = new com.yami.shop.bean.model.Order();
                 order.setIsPayed(0);
                 order.setHbOrderStatus(OrderStatus.UNPAY.value());
+                order.setOrderType(OrderType.ORDINARY.value());
                 double actualTotal = shopCartOrderDto.getActualTotal();
                 //企业用户才进这个判断,并且该用户的积分必须大于0
                 if (1 == mergerOrder.getPlatform() && null != point && point > 0) {
+                    order.setOrderType(OrderType.SCORE.value());
                     // 计算商品金额和积分
                     Double mul = Arith.mul(actualTotal, 100);
                     Double vp = Double.valueOf(point);
@@ -202,7 +204,7 @@ public class SubmitOrderListener {
                                 isUseTransfee = Boolean.TRUE;
                             }
                             //把钱换算成积分
-                            actualItem = this.doGetOrderItemPoints(Arith.mul(useActualItem, 100), expiryQueue, orderNumber,userId,mergerOrder.getPlatform());
+                            actualItem = this.doGetOrderItemPoints(Arith.mul(useActualItem, 100), expiryQueue, orderNumber, userId, mergerOrder.getPlatform());
                             //把积分换算成钱
                             if (actualItem > 0) {
                                 actualItem = Arith.div(actualItem, 100);
@@ -255,7 +257,7 @@ public class SubmitOrderListener {
                 order.setReduceAmount(shopCartOrderDto.getShopReduce());
                 order.setFreightAmount(shopCartOrderDto.getTransfee());
                 order.setRemarks(shopCartOrderDto.getRemarks());
-                order.setOrderType(OrderType.ORDINARY.value());
+
                 order.setPlatformAmount(shopCartOrderDto.getPlatformAmount());
                 order.setOrderItems(orderItems);
                 order.setScore(shopCartOrderDto.getUseScore());

+ 22 - 2
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -275,6 +275,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             List<OrderItem> orderItems = order.getOrderItems();
             allOrderItems.addAll(orderItems);
             eventPublisher.publishEvent(new CancelOrderEvent(order));
+            // 判定是不是积分订单,如果是或者包含积分则退积分
+            if (Objects.equals(OrderType.ORDINARY.value(), order.getOrderType())) {
+                List<PointsRecord> pointsRecords = pointsRecordMapper.selectList(new LambdaQueryWrapper<PointsRecord>()
+                        .eq(PointsRecord::getOrderNumber, order.getOrderNumber())
+                        .eq(PointsRecord::getPointsType, 2)//购物的积分
+                        .and(wrapper -> wrapper
+                                .gt(PointsRecord::getExpiryDate, LocalDateTime.now())
+                                .or()
+                                .isNull(PointsRecord::getExpiryDate)
+                        ));
+                for (PointsRecord pointsRecord : pointsRecords) {
+                    Long l = pointsRecordMapper.statisticsPoint(pointsRecord.getUserId(), Math.toIntExact(pointsRecord.getChannelId()));
+                    pointsRecord.setId(null);
+                    pointsRecord.setCreationDate(new Date());
+                    pointsRecord.setPoints(pointsRecord.getVariablePoints());
+                    pointsRecord.setVariablePoints(BigDecimal.valueOf(0));
+                    pointsRecord.setPointsType(3);
+                    pointsRecord.setCurrentlyAvailablePoints(BigDecimal.valueOf(l).add(pointsRecord.getPoints()));
+                    pointsRecordMapper.updateById(pointsRecord);
+                }
+            }
         }
         // 如果是秒杀订单也不必还原库存
         if (CollectionUtil.isEmpty(allOrderItems) || OrderType.SECKILL.value().equals(orders.get(0).getOrderType())) {
@@ -795,7 +816,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         // 判断退款单类型(1:整单退款,2:单个物品退款)
 
 
-
         if (orderRefundParam.getRefundType().equals(RefundType.ALL.value())) {
             // 全部物品退款
             // 计算该订单项的分销金额
@@ -926,7 +946,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                         OrderSettlement orderSettlement = orderSettlementMapper.selectOne(new LambdaQueryWrapper<OrderSettlement>()
                                 .eq(OrderSettlement::getOrderNumber, order.getOrderNumber())
                                 .eq(OrderSettlement::getPayType, 1));
-                        if (ObjectUtil.isNotEmpty(order.getOffsetPoints())  && order.getOffsetPoints() > 0) {//混合支付
+                        if (ObjectUtil.isNotEmpty(order.getOffsetPoints()) && order.getOffsetPoints() > 0) {//混合支付
                             //退钱
                             RefundInfoPo po = new RefundInfoPo();
                             po.setOutTradeNo(orderSettlement.getPayNo());