From 2b0b64182263d922b946ec898070e59b602382dc Mon Sep 17 00:00:00 2001
From: Bang Hu <hu_bang@hotmail.com>
Date: 星期四, 11 九月 2025 18:38:09 +0800
Subject: [PATCH] 交易审批多节点问题处理完善

---
 src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java b/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
index 14fd125..c09eb66 100644
--- a/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
@@ -182,11 +182,11 @@
         }
 
         // 姣忔棩涓婇檺鏍¢獙锛堝垎鍒牎楠岋級
-        if (applyUser && userRule.getIsLimit() != null && userRule.getIsLimit() == 0) {
+        if (applyUser && userRule.getIsLimit() != null && userRule.getIsLimit() == 1) {
             checkDailyLimitByRule(userId, unitId, userRule, userPointsChange);
         }
-        if (applyProvider && providerRule.getIsLimit() != null && providerRule.getIsLimit() == 0) {
-            checkDailyLimitByRule(providerId, providerId, providerRule, providerPointsChange);
+        if (applyProvider && providerRule.getIsLimit() != null && providerRule.getIsLimit() == 1) {
+            checkDailyLimitByRule(providerId, null, providerRule, providerPointsChange);
         }
 
         // 浣欓鏍¢獙锛堜粎鍦ㄦ墸鍑忔椂锛�
@@ -221,7 +221,7 @@
         if (applyProvider && providerPointsChange != 0) {
             PointsFlow providerFlow = new PointsFlow();
             providerFlow.setUserId(providerId);
-            providerFlow.setUnitId(providerId);
+            providerFlow.setUnitId(null);
             providerFlow.setDataType(ruleType);
             providerFlow.setDataCategory(addPointsFlowDTO.getCategory());
             providerFlow.setPoints(providerPointsChange);
@@ -233,8 +233,8 @@
             if (!providerSaved) {
                 throw new BusinessException("淇濆瓨鎻愪緵鑰呯Н鍒嗘祦姘村け璐�");
             }
-
-            updateProviderUnitPoints(providerId, providerPointsChange);
+            updateUserPointsByRule(providerId, null, userPointsChange);
+            // updateProviderUnitPoints(providerId, providerPointsChange);
         }
 
         return true;
@@ -357,11 +357,14 @@
         QueryWrapper<PointsFlow> wrapper = new QueryWrapper<>();
         wrapper.eq("deleted", 0)
                .eq("user_id", userId)
-               .eq("unit_id", unitId)
 //               .eq("data_category", pointsRule.getRuleName())
                 .eq("rule_id",pointsRule.getId())
+                // .eq("data_type", 0)
                .ge("flow_time", startOfDay)
                .le("flow_time", endOfDay);
+        if(StringUtils.hasText(unitId)){
+            wrapper.eq("unit_id", unitId);
+        }
 
         List<PointsFlow> todayFlows = list(wrapper);
         
@@ -374,14 +377,14 @@
         Integer dailyLimit = pointsRule.getDailyLimit();
         if (dailyLimit != null && dailyLimit > 0) {
             // 濡傛灉浠婃棩绱绉垎瓒呰繃姣忔棩涓婇檺锛屽垯鎶涘嚭寮傚父
-            if (Math.abs(todayTotal) >= dailyLimit) {
+            if (Math.abs(todayTotal) > dailyLimit) {
                 throw new BusinessException("浠婃棩璇ヨ鍒欑Н鍒嗗凡杈句笂闄�: " + dailyLimit);
             }
             
             // 濡傛灉鍔犱笂褰撳墠绉垎浼氳秴杩囨瘡鏃ヤ笂闄愶紝鍒欐姏鍑哄紓甯�
-            if (Math.abs(todayTotal + currentPoints) > dailyLimit) {
-                throw new BusinessException("鏈绉垎鎿嶄綔灏嗚秴杩囨瘡鏃ヤ笂闄�: " + dailyLimit + "锛屽綋鍓嶅凡绱: " + Math.abs(todayTotal));
-            }
+//            if (Math.abs(todayTotal + currentPoints) > dailyLimit) {
+//                throw new BusinessException("鏈绉垎鎿嶄綔灏嗚秴杩囨瘡鏃ヤ笂闄�: " + dailyLimit + "锛屽綋鍓嶅凡绱: " + Math.abs(todayTotal));
+//            }
         }
     }
 
@@ -492,7 +495,9 @@
             
             userPoints = new UserPoints();
             userPoints.setUserId(userId);
-            userPoints.setUnitId(unitId);
+            if(StringUtils.hasText(unitId)){
+                userPoints.setUnitId(unitId);
+            }
             userPoints.setBalance(pointsValue);
             userPoints.setTotalEarned(pointsValue > 0 ? pointsValue : 0);
             userPoints.setTotalConsumed(pointsValue < 0 ? Math.abs(pointsValue) : 0);
@@ -522,7 +527,7 @@
         }
 
         // 鏇存柊鍗曚綅绉垎璐︽埛
-        QueryWrapper<UserPoints> unitWrapper = new QueryWrapper<>();
+         /* QueryWrapper<UserPoints> unitWrapper = new QueryWrapper<>();
         unitWrapper.eq("deleted", 0)
                   .eq("unit_id", unitId);
         
@@ -562,7 +567,7 @@
             
             unitPoints.setUpdateTime(LocalDateTime.now());
             userPointsMapper.updateById(unitPoints);
-        }
+        } */
     }
 
     /**

--
Gitblit v1.8.0