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