1
zj
2025-10-14 8e1c5b13e9dd4a88f17dfe4569d4a51b3495d83a
ruoyi-admin/src/main/java/com/ruoyi/web/controller/user/UserController.java
@@ -14,11 +14,13 @@
import com.ruoyi.im.out.UserAccountOut;
import com.ruoyi.im.service.ImApiServcie;
import com.ruoyi.im.service.UserKycService;
import com.ruoyi.im.service.UserPolicyService;
import com.ruoyi.im.util.ConverterUtil;
import com.ruoyi.im.util.PhoneNumberValidatorUtil;
import com.ruoyi.im.util.SymmetricCryptoUtil;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.UserKyc;
import com.ruoyi.system.domain.UserPolicy;
import com.ruoyi.system.domain.vo.UserAccountUpdateVo;
import com.ruoyi.system.domain.vo.UserAccountVo;
import com.ruoyi.system.service.UserAccountService;
@@ -45,6 +47,9 @@
    @Autowired
    private UserKycService userKycService;
    @Autowired
    UserPolicyService userPolicyService;
    /**
     * 获取会员列表
@@ -126,9 +131,34 @@
        if (ObjectUtil.isEmpty(userAccounts) || maxLevel <= 0) {
            return new ArrayList<>();
        }
        // 收集用户ID用于查询激活状态
        List<Integer> idList = userAccounts.stream()
                .map(UserAccount::getId)
                .filter(ObjectUtil::isNotEmpty)
                .collect(Collectors.toList());
        // 先转换基础信息
        List<UserAccountOut> result = ConverterUtil.convertToList(userAccounts, UserAccountOut.class);
        // 批量查询激活状态
        Set<Integer> activatedUserIds = Collections.emptySet();
        if (!idList.isEmpty()) {
            LambdaQueryWrapper<UserPolicy> userPolicyWrapper = new LambdaQueryWrapper<>();
            userPolicyWrapper.in(UserPolicy::getUserId, idList)
                    .eq(UserPolicy::getApprovalStatus, 1)
                    .select(UserPolicy::getUserId);
            List<UserPolicy> policyList = userPolicyService.list(userPolicyWrapper);
            activatedUserIds = policyList.stream()
                    .map(UserPolicy::getUserId)
                    .collect(Collectors.toSet());
        }
        // 转换基础信息并设置激活状态
        List<UserAccountOut> result = new ArrayList<>();
        for (UserAccount user : userAccounts) {
            UserAccountOut out = ConverterUtil.convert(user, UserAccountOut.class);
            // 设置激活状态
            out.setActivate(activatedUserIds.contains(user.getId()));
            result.add(out);
        }
        // 递归加载下级用户
        loadSubordinateUsersRecursive(result, maxLevel);
@@ -290,7 +320,6 @@
            List<UserAccount> subordinates = userAccountService.list(queryWrapper);
            List<UserAccountOut> result = ConverterUtil.convertToList(subordinates, UserAccountOut.class);
            return AjaxResult.success(result);
        } catch (Exception e) {
            log.error("获取直接下级列表失败", e);