From cbf2486983b77a27af9968bbb362cb8d43789115 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 26 三月 2025 15:30:53 +0800
Subject: [PATCH] 修改统计bug和部分功能修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |   79 ++++++++++++++++++++++++++++-----------
 1 files changed, 56 insertions(+), 23 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index f0fa211..52e263b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -103,6 +103,7 @@
 
     @Resource
     private BalanceChangeRecordClient balanceChangeRecordClient;
+    
 
     @Resource
     private UserPointClient userPointClient;
@@ -468,9 +469,6 @@
         if (200 != r3.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致
             throw new RuntimeException("订单取消失败");
         }
-        shopPointClient.deleteShopPointCopy(orderId, Arrays.asList(1,2,3));
-        appUserGiveawayTemporaryClient.delAppUserGiveawayTemporary(orderId);
-        shopGiveawayTemporaryClient.delShopGiveawayTemporary(orderId);
         return r;
     }
 
@@ -527,10 +525,13 @@
             OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, order.getId()));
             BigDecimal balance = appUser.getBalance();
             if (null != orderBalancePayment) {
+                //回加红包金额
                 appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN));
 //                appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
             }
+            //回加账户余额
             appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
+            //扣减门店消费金额
             appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
             //查询最后一次的消费订单
             Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2)
@@ -541,24 +542,21 @@
                 appUser.setLastShopTime(null);
             }
 
-            //构建账户余额流水明细
+            //构建账户余额流水明细(账户支付订单的流水,不属于冻结数据)
             BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
             balanceChangeRecord.setOrderId(order.getId());
             balanceChangeRecord.setAppUserId(order.getAppUserId());
             balanceChangeRecord.setVipId(appUser.getVipId());
             balanceChangeRecord.setChangeType(6);
-            balanceChangeRecord.setBeforeAmount(balance);
             balanceChangeRecord.setChangeAmount(paymentAmount);
-            balanceChangeRecord.setAfterAmount(appUser.getBalance());
             balanceChangeRecord.setDelFlag(0);
             balanceChangeRecord.setCreateTime(LocalDateTime.now());
+            balanceChangeRecord.setChangeDirection(1);
             balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
 
 
             //退回获得的消费积分
             //需要先检查会员等级时候回回退,使用回退后的会员等级查询配置
-            Integer lavePoint = appUser.getLavePoint();
-
             UserPoint userPoint1 = new UserPoint();
             userPoint1.setType(1);
             userPoint1.setAppUserId(appUser.getId());
@@ -577,16 +575,15 @@
             }
             appUser.setTotalPoint(appUser.getTotalPoint() - shopPoint);
 
-            //构建积分流水明细
+            //构建积分流水明细(消费金额,不属于冻结数据)
             if (shopPoint > 0) {
                 UserPoint userPoint = new UserPoint();
                 userPoint.setType(1);
-                userPoint.setHistoricalPoint(lavePoint);
                 userPoint.setVariablePoint(shopPoint);
-                userPoint.setBalance(appUser.getLavePoint());
                 userPoint.setCreateTime(LocalDateTime.now());
                 userPoint.setAppUserId(order.getAppUserId());
                 userPoint.setObjectId(order.getId());
+                userPoint.setChangeDirection(-1);
                 userPointClient.saveUserPoint(userPoint);
             }
             appUserClient.editAppUserById(appUser);
@@ -624,17 +621,16 @@
 //                        appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
                     }
                     appUser.setBalance(balance.add(expressAmount).setScale(2, RoundingMode.HALF_EVEN));
-                    //构建账户余额流水明细
+                    //构建账户余额流水明细(消费支付的余额流水)
                     BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
                     balanceChangeRecord.setOrderId(order.getId());
                     balanceChangeRecord.setAppUserId(order.getAppUserId());
                     balanceChangeRecord.setVipId(appUser.getVipId());
                     balanceChangeRecord.setChangeType(6);
-                    balanceChangeRecord.setBeforeAmount(balance);
                     balanceChangeRecord.setChangeAmount(expressAmount);
-                    balanceChangeRecord.setAfterAmount(appUser.getBalance());
                     balanceChangeRecord.setDelFlag(0);
                     balanceChangeRecord.setCreateTime(LocalDateTime.now());
+                    balanceChangeRecord.setChangeDirection(1);
                     balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
                 }
             }
@@ -654,16 +650,15 @@
             }
             appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
 
-            //构建积分流水明细
+            //构建积分流水明细(支付的积分,不属于冻结数据)
             if (order.getPoint() > 0) {
                 UserPoint userPoint = new UserPoint();
                 userPoint.setType(11);
-                userPoint.setHistoricalPoint(lavePoint);
                 userPoint.setVariablePoint(order.getPoint());
-                userPoint.setBalance(appUser.getLavePoint());
                 userPoint.setCreateTime(LocalDateTime.now());
                 userPoint.setAppUserId(order.getAppUserId());
                 userPoint.setObjectId(order.getId());
+                userPoint.setChangeDirection(1);
                 userPointClient.saveUserPoint(userPoint);
             }
             appUserClient.editAppUserById(appUser);
@@ -672,8 +667,36 @@
         order.setRefundStatus(2);
         order.setRefundTime(LocalDateTime.now());
 
-        shopPointClient.deleteShopPointCopy(order.getId(), Arrays.asList(1,2,3));
-        shopBalanceStatementClient.deleteShopBalanceStatementCopy(order.getId(), Arrays.asList(1,2,3));
+        //生成反向冻结流水数据
+        List<UserPointCopy> data2 = userPointClient.getUserPointCopy(order.getId(), Arrays.asList(2, 8, 9, 10, 14)).getData();
+        for (UserPointCopy userPointCopy : data2) {
+            userPointCopy.setId(null);
+            userPointCopy.setCreateTime(LocalDateTime.now());
+            userPointCopy.setChangeDirection(-1);
+            userPointClient.saveUserPointCopy(userPointCopy);
+        }
+        List<BalanceChangeRecordCopy> data3 = balanceChangeRecordClient.getBalanceChangeRecordCopy(order.getId(), Arrays.asList(4)).getData();
+        for (BalanceChangeRecordCopy balanceChangeRecordCopy : data3) {
+            balanceChangeRecordCopy.setId(null);
+            balanceChangeRecordCopy.setCreateTime(LocalDateTime.now());
+            balanceChangeRecordCopy.setChangeDirection(-1);
+            balanceChangeRecordClient.saveBalanceChangeRecordCopy(balanceChangeRecordCopy);
+        }
+        List<ShopPointCopy> data = shopPointClient.getShopPointCopy(order.getId(), Arrays.asList(1, 2, 3)).getData();
+        for (ShopPointCopy datum : data) {
+            datum.setId(null);
+            datum.setCreateTime(LocalDateTime.now());
+            datum.setChangeDirection(-1);
+            shopPointClient.saveShopPointCopy(datum);
+        }
+        List<ShopBalanceStatementCopy> data1 = shopBalanceStatementClient.getShopBalanceStatementCopy(order.getId(), Arrays.asList(1, 2, 3)).getData();
+        for (ShopBalanceStatementCopy shopBalanceStatementCopy : data1) {
+            shopBalanceStatementCopy.setId(null);
+            shopBalanceStatementCopy.setCreateTime(LocalDateTime.now());
+            shopBalanceStatementCopy.setChangeDirection(-1);
+            shopBalanceStatementClient.saveShopBalanceStatementCopy(shopBalanceStatementCopy);
+        }
+        //删除用户和门店添加的汇总数据(冻结数据)
         appUserGiveawayTemporaryClient.delAppUserGiveawayTemporary(order.getId());
         shopGiveawayTemporaryClient.delShopGiveawayTemporary(order.getId());
         return R.ok();
@@ -722,12 +745,11 @@
         if (shopPoint > 0) {
             UserPoint userPoint = new UserPoint();
             userPoint.setType(1);
-            userPoint.setHistoricalPoint(lavePoint);
             userPoint.setVariablePoint(shopPoint);
-            userPoint.setBalance(appUser.getLavePoint());
             userPoint.setCreateTime(LocalDateTime.now());
             userPoint.setAppUserId(order.getAppUserId());
             userPoint.setObjectId(order.getId());
+            userPoint.setChangeDirection(-1);
             userPointClient.saveUserPoint(userPoint);
         }
         appUserClient.editAppUserById(appUser);
@@ -784,12 +806,11 @@
         if (order.getPoint() > 0) {
             UserPoint userPoint = new UserPoint();
             userPoint.setType(11);
-            userPoint.setHistoricalPoint(lavePoint);
             userPoint.setVariablePoint(order.getPoint());
-            userPoint.setBalance(appUser.getLavePoint());
             userPoint.setCreateTime(LocalDateTime.now());
             userPoint.setAppUserId(order.getAppUserId());
             userPoint.setObjectId(order.getId());
+            userPoint.setChangeDirection(1);
             userPointClient.saveUserPoint(userPoint);
         }
         return R.ok();
@@ -1167,4 +1188,16 @@
     public List<OrderExport> getOrderExportList(OrderPageList orderPageList) {
         return Collections.emptyList();
     }
+    
+    
+    /**
+     * 查询给定用户在给定门店核销的订单
+     * @param shopId
+     * @param appUserId
+     * @return
+     */
+    @Override
+    public List<Order> getOrderByAppUserIdsAndWriteOffShop(Integer shopId, Set<Long> appUserId) {
+        return this.baseMapper.getOrderByAppUserIdsAndWriteOffShop(shopId, appUserId);
+    }
 }

--
Gitblit v1.7.1