From d16c08644d85da5dfd1d793db86e49e84842b186 Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Fri, 17 Oct 2025 02:31:10 +0800
Subject: [PATCH] 1

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java |   73 +++++++++++++++++++++++++-----------
 1 files changed, 50 insertions(+), 23 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java
index 358c81e..3832c5a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java
@@ -6,8 +6,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.im.service.UserPolicyService;
 import com.ruoyi.im.service.impl.InsurancePositionServiceImpl;
-import com.ruoyi.im.util.UserPolicyUtils;
-import com.ruoyi.system.domain.InsurancePosition;
 import com.ruoyi.system.domain.UserAccount;
 import com.ruoyi.system.domain.UserPolicy;
 import com.ruoyi.system.domain.out.HomePageStatisticsOut;
@@ -64,10 +62,14 @@
     public AjaxResult getUserTeamAndPosition(@RequestParam(value = "invitationCode", required = false) String invitationCode) {
         HomePageStatisticsOut statisticsOut = new HomePageStatisticsOut();
 
+        // 标志是否统计所有用户
+        boolean isStatisticsAll = StringUtils.isEmpty(invitationCode);
+
         // 所有需要统计的下级账号列表
         List<String> allSubordinateAccounts = new ArrayList<>();
 
-        if (StringUtils.isNotEmpty(invitationCode)) {
+        if (!isStatisticsAll) {
+            // 如果指定了邀请码,只统计该邀请码对应的用户及其下级
             UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>()
                     .eq(UserAccount::getInvitationCode, invitationCode)
                     .select(UserAccount::getAccount) // 只查询需要的字段
@@ -78,22 +80,23 @@
                 allSubordinateAccounts = getCachedSubordinateAccounts(rootAccount);
             }
         }
-
-        // 如果下级账号数量为0,直接返回空结果,避免不必要的查询
-        if (allSubordinateAccounts.isEmpty()) {
-            return AjaxResult.success(statisticsOut);
-        }
+        // 如果 invitationCode 为 null,isStatisticsAll 为 true,将不设置 allSubordinateAccounts
+        // 在后续查询中,如果 allSubordinateAccounts 为空且 isStatisticsAll 为 true,则查询所有用户
 
         // 并行执行统计查询
         try {
             List<String> finalAllSubordinateAccounts = allSubordinateAccounts;
-            CompletableFuture<Long> todayRegisterFuture = CompletableFuture.supplyAsync(() -> getTodayRegister(finalAllSubordinateAccounts));
-            List<String> finalAllSubordinateAccounts2 = allSubordinateAccounts;
-            CompletableFuture<Long> totalRegisterFuture = CompletableFuture.supplyAsync(() -> getTotalRegister(finalAllSubordinateAccounts2));
+            CompletableFuture<Long> todayRegisterFuture = CompletableFuture.supplyAsync(() ->
+                    getTodayRegister(finalAllSubordinateAccounts, isStatisticsAll));
             List<String> finalAllSubordinateAccounts1 = allSubordinateAccounts;
-            CompletableFuture<Long> todayActivateFuture = CompletableFuture.supplyAsync(() -> getTodayActivate(finalAllSubordinateAccounts1));
+            CompletableFuture<Long> totalRegisterFuture = CompletableFuture.supplyAsync(() ->
+                    getTotalRegister(finalAllSubordinateAccounts1, isStatisticsAll));
+            List<String> finalAllSubordinateAccounts2 = allSubordinateAccounts;
+            CompletableFuture<Long> todayActivateFuture = CompletableFuture.supplyAsync(() ->
+                    getTodayActivate(finalAllSubordinateAccounts2, isStatisticsAll));
             List<String> finalAllSubordinateAccounts3 = allSubordinateAccounts;
-            CompletableFuture<Long> totalActivateFuture = CompletableFuture.supplyAsync(() -> getTotalActivate(finalAllSubordinateAccounts3));
+            CompletableFuture<Long> totalActivateFuture = CompletableFuture.supplyAsync(() ->
+                    getTotalActivate(finalAllSubordinateAccounts3, isStatisticsAll));
 
             // 等待所有查询完成
             statisticsOut.setTodayRegister(todayRegisterFuture.get());
@@ -108,31 +111,55 @@
     }
 
     // 分离的查询方法,便于并行执行
-    private Long getTodayRegister(List<String> subordinateAccounts) {
+    private Long getTodayRegister(List<String> subordinateAccounts, boolean isStatisticsAll) {
         LambdaQueryWrapper<UserAccount> wrapper = new LambdaQueryWrapper<>();
-        wrapper.apply("DATE(create_time) = CURDATE()")
-                .in(UserAccount::getAccount, subordinateAccounts);
+        wrapper.apply("DATE(create_time) = CURDATE()");
+
+        // 如果指定了邀请码,按账号列表过滤;否则查询所有
+        if (!isStatisticsAll && !subordinateAccounts.isEmpty()) {
+            wrapper.in(UserAccount::getAccount, subordinateAccounts);
+        }
+        // 如果 isStatisticsAll 为 true,不添加账号过滤条件,查询所有用户
+
         return userAccountService.count(wrapper);
     }
 
-    private Long getTotalRegister(List<String> subordinateAccounts) {
+    private Long getTotalRegister(List<String> subordinateAccounts, boolean isStatisticsAll) {
         LambdaQueryWrapper<UserAccount> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(UserAccount::getAccount, subordinateAccounts);
+
+        // 如果指定了邀请码,按账号列表过滤;否则查询所有
+        if (!isStatisticsAll && !subordinateAccounts.isEmpty()) {
+            wrapper.in(UserAccount::getAccount, subordinateAccounts);
+        }
+        // 如果 isStatisticsAll 为 true,不添加账号过滤条件,查询所有用户
+
         return userAccountService.count(wrapper);
     }
 
-    private Long getTodayActivate(List<String> subordinateAccounts) {
+    private Long getTodayActivate(List<String> subordinateAccounts, boolean isStatisticsAll) {
         LambdaQueryWrapper<UserPolicy> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(UserPolicy::getApprovalStatus, 1)
-                .in(UserPolicy::getAccount, subordinateAccounts)
                 .apply("DATE(created_at) = CURDATE()");
+
+        // 如果指定了邀请码,按账号列表过滤;否则查询所有
+        if (!isStatisticsAll && !subordinateAccounts.isEmpty()) {
+            wrapper.in(UserPolicy::getAccount, subordinateAccounts);
+        }
+        // 如果 isStatisticsAll 为 true,不添加账号过滤条件,查询所有用户
+
         return userPolicyService.count(wrapper);
     }
 
-    private Long getTotalActivate(List<String> subordinateAccounts) {
+    private Long getTotalActivate(List<String> subordinateAccounts, boolean isStatisticsAll) {
         LambdaQueryWrapper<UserPolicy> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(UserPolicy::getApprovalStatus, 1)
-                .in(UserPolicy::getAccount, subordinateAccounts);
+        wrapper.eq(UserPolicy::getApprovalStatus, 1);
+
+        // 如果指定了邀请码,按账号列表过滤;否则查询所有
+        if (!isStatisticsAll && !subordinateAccounts.isEmpty()) {
+            wrapper.in(UserPolicy::getAccount, subordinateAccounts);
+        }
+        // 如果 isStatisticsAll 为 true,不添加账号过滤条件,查询所有用户
+
         return userPolicyService.count(wrapper);
     }
 

--
Gitblit v1.9.3