From 02d5cf98ab127c3464ecc6fb9342b2d700e4a0de Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期二, 08 四月 2025 19:03:46 +0800
Subject: [PATCH] 订单代码修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |   86 +++++++++++++++++++++++++++++--------------
 1 files changed, 58 insertions(+), 28 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 90ec3d6..73c5254 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
@@ -107,7 +107,7 @@
     private RedisTemplate redisTemplate;
 
     @Resource
-    private  ShopBalanceStatment shopBalanceStatment;
+    private  ShopBalanceStatementClient shopBalanceStatementClient;
 
     @Resource
     private SystemConfigClient systemConfigClient;
@@ -401,9 +401,9 @@
         }
 
         if (0 != order.getPoint()) {//使用的积分是否为0
-            Integer lavePoint = appUser.getLavePoint();
+            Integer lavePoint = appUser.getAvailablePoint();
             //积分退款
-            appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
+            appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
             appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
             UserPoint userPoint1 = new UserPoint();
             userPoint1.setType(11);
@@ -414,7 +414,6 @@
                 UserPoint userPoint = data.get(0);
                 transferablePoint = Integer.valueOf(userPoint.getExtention());
             }
-            appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
 
             //构建积分流水明细
             if (order.getPoint() > 0) {
@@ -422,7 +421,7 @@
                 userPoint.setType(11);
                 userPoint.setHistoricalPoint(lavePoint);
                 userPoint.setVariablePoint(order.getPoint());
-                userPoint.setBalance(appUser.getLavePoint());
+                userPoint.setBalance(appUser.getAvailablePoint());
                 userPoint.setCreateTime(LocalDateTime.now());
                 userPoint.setAppUserId(order.getAppUserId());
                 userPoint.setObjectId(order.getId());
@@ -665,7 +664,7 @@
 
     /**
      * 订单支付
-     *
+     * todo 用户积分流水情况
      */
     @Override
     public R orderPayment(OrderPayment orderPayment) {
@@ -742,6 +741,7 @@
         }else{
             //积分支付
             orderPoint=goods.getIntegral();
+            orderMoney = goods.getSellingPrice();
             Integer availablePoint = appUser.getAvailablePoint();//用户可用积分
             if(availablePoint.compareTo(orderPoint) < 0){
                 return R.fail("账户可用积分不足");
@@ -793,30 +793,21 @@
         //判断积分是否为零,积分支付
         if (0 != order.getPoint()){
             //积分支付
-            Integer lavePoint = appUser.getLavePoint();
+            Integer lavePoint = appUser.getAvailablePoint();
             //扣减订单支付积分
-            appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
-            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
-            //可转赠积分
-            Integer transferablePoint = appUser.getTransferablePoint();
-            Integer tra = 0;
-            if(transferablePoint > 0){
-                tra = transferablePoint - orderPoint;
-                appUser.setTransferablePoint(tra >= 0 ? tra : 0);
-            }else{
-                appUser.setTransferablePoint(appUser.getTransferablePoint() - orderPoint);
-            }
+            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);//剩余积分
+            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);//可用积分
+
             //构建积分流水记录
             if(orderPoint > 0){
                 UserPoint userPoint = new UserPoint();
                 userPoint.setType(11);
                 userPoint.setHistoricalPoint(lavePoint);
                 userPoint.setVariablePoint(orderPoint);
-                userPoint.setBalance(appUser.getLavePoint());
+                userPoint.setBalance(appUser.getAvailablePoint());
                 userPoint.setCreateTime(LocalDateTime.now());
                 userPoint.setAppUserId(appUser.getId());
                 userPoint.setObjectId(order.getId());
-                userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
                 userPointClient.saveUserPoint(userPoint);
             }
 
@@ -845,14 +836,34 @@
 
         }
 
-        //不需要微信支付,直接修改订支付状态
+        //积分支付,不需要微信支付,直接修改订支付状态
         order.setPayStatus(2);
         orderMapper.updateById(order);
         //商品销量增加
         goodsClient.editGoodsNum(orderGood.getGoodsId(), 1);
 
-        //todo 门店增加冻结资金
+        //门店增加冻结资金 即增加金额, 冻结资金=余额-可用资金
+        Shop shop = shopClient.getShopById(order.getShopId()).getData();
+        BigDecimal historicalBalance=shop.getBalance();//历史余额
+        BigDecimal balance=shop.getBalance().add(goods.getSellingPrice());//变动后余额
+        shop.setBalance(balance);
+        shop.setOrderNumber(shop.getOrderNumber()+1);
+        shopClient.updateShop(shop);
 
+        //门店余额流水记录
+        ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
+        shopBalanceStatement.setShopId(shop.getId());
+        shopBalanceStatement.setShopName(shop.getName());
+        shopBalanceStatement.setShopManagerName(shop.getShopManager());
+        shopBalanceStatement.setPhone(shop.getPhone());
+        shopBalanceStatement.setType(5);//变更类型,订单收入
+        shopBalanceStatement.setHistoricalBalance(historicalBalance);
+        shopBalanceStatement.setVariableAmount(goods.getSellingPrice());
+        shopBalanceStatement.setCreateTime(LocalDateTime.now());
+        shopBalanceStatement.setBalance(balance);
+        shopBalanceStatement.setCreateUserId(appUser.getId());
+        shopBalanceStatement.setObjectId(order.getId());
+        shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
         return R.ok(order.getId().toString());
     }
 
@@ -881,20 +892,39 @@
         order.setSerialNumber(r7TrxNo);
         orderMapper.updateById(order);
 
-        //商店余额改变,增加冻结余额
-        Shop shop = shopClient.getShopById(order.getShopId()).getData();
-
-
-
-        //商品销量增加
         OrderGood orderGood = orderGoodService.getOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
+        //商品销量增加
         goodsClient.editGoodsNum(orderGood.getGoodsId(), 1);
+
+        //门店增加冻结资金 即增加金额, 冻结资金=余额-可用资金
+        Shop shop = shopClient.getShopById(order.getShopId()).getData();
+        BigDecimal historicalBalance=shop.getBalance();//历史余额
+        BigDecimal balance=shop.getBalance().add(order.getTotalAmount());//变动后余额
+        shop.setBalance(balance);
+        shop.setOrderNumber(shop.getOrderNumber()+1);
+        shopClient.updateShop(shop);
+
+        //门店金额变动记录
+        ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
+        shopBalanceStatement.setShopId(shop.getId());
+        shopBalanceStatement.setShopName(shop.getName());
+        shopBalanceStatement.setShopManagerName(shop.getShopManager());
+        shopBalanceStatement.setPhone(shop.getPhone());
+        shopBalanceStatement.setType(5);//变更类型,订单收入
+        shopBalanceStatement.setHistoricalBalance(historicalBalance);
+        shopBalanceStatement.setVariableAmount(order.getTotalAmount());
+        shopBalanceStatement.setCreateTime(LocalDateTime.now());
+        shopBalanceStatement.setBalance(balance);
+        shopBalanceStatement.setCreateUserId(appUser.getId());
+        shopBalanceStatement.setObjectId(order.getId());
+        shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
 
         return R.ok();
     }
 
     /**
      * 定时任务关闭订单
+     * todo 关闭订单前,检查是否先支付过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水,门店余额流水的删除
      */
     @Override
     public void closeOrder() {

--
Gitblit v1.7.1