|
@@ -339,8 +339,68 @@ public class AdminUserLogic {
|
|
|
.eq(AdminUserPermissionsRela::getAdminUserId, adminUser.getAdminUserId())
|
|
|
.list();
|
|
|
|
|
|
+ // 商家id集合
|
|
|
+ final List<String> websitIdList = permissionsRelaList.stream()
|
|
|
+ .map(AdminUserPermissionsRela::getAdminUserPermissionsId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 根据商家id集合查找有关联的账号
|
|
|
+ final List<AdminUserPermissionsRela> adminUserPermissionsRelaList = adminUserPermissionsRelaService.lambdaQuery()
|
|
|
+ .select(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .eq(AdminUserPermissionsRela::getAdminUserPermissionsId, websitIdList)
|
|
|
+ .groupBy(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ List<String> queryAdminUserIdList = adminUserPermissionsRelaList.stream()
|
|
|
+ .map(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .filter(v -> !v.equals(adminUser.getAdminUserId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 当前登录账号为商家需要排除商户、平台账号;当前登录账号为商户需要排除平台账号
|
|
|
+ if (adminUser.getType() != 0) {
|
|
|
+ List<AdminUser> adminUserList = adminUserService.lambdaQuery()
|
|
|
+ .select(AdminUser::getAdminUserId, AdminUser::getType)
|
|
|
+ .in(AdminUser::getAdminUserId, queryAdminUserIdList)
|
|
|
+ .list();
|
|
|
+ final Map<Integer, List<AdminUser>> userTypeMap = adminUserList.stream().collect(Collectors.groupingBy(AdminUser::getType));
|
|
|
+
|
|
|
+ // 当前登录账号为商户或主商家或商家账号类型
|
|
|
+ if ((adminUser.getType() == 3 || adminUser.getType() == 2 || adminUser.getType() == 4)
|
|
|
+ && userTypeMap.containsKey(1)) {
|
|
|
+ // 排除商户主账号
|
|
|
+ this.clearNotCanSeeAdminUserId(userTypeMap, 1, queryAdminUserIdList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当前登录账号为主商家或商家账号类型
|
|
|
+ if ((adminUser.getType() == 2 || adminUser.getType() == 4)
|
|
|
+ && userTypeMap.containsKey(3)) {
|
|
|
+ // 排除商户账号
|
|
|
+ this.clearNotCanSeeAdminUserId(userTypeMap, 3, queryAdminUserIdList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当前登录账号为商家账号类型
|
|
|
+ if (adminUser.getType() == 4 && userTypeMap.containsKey(2)) {
|
|
|
+ // 排除商家主账号
|
|
|
+ this.clearNotCanSeeAdminUserId(userTypeMap, 2, queryAdminUserIdList);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (userTypeMap.containsKey(0)) {
|
|
|
+ // 排除平台账号
|
|
|
+ this.clearNotCanSeeAdminUserId(userTypeMap, 0, queryAdminUserIdList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ adminUserIdList.addAll(queryAdminUserIdList);
|
|
|
}
|
|
|
|
|
|
+ private void clearNotCanSeeAdminUserId(Map<Integer, List<AdminUser>> userTypeMap, int type, List<String> queryAdminUserIdList) {
|
|
|
+ final List<String> adminUsers = userTypeMap.get(type).stream().map(AdminUser::getAdminUserId).collect(Collectors.toList());
|
|
|
+ final List<String> userIdList = queryAdminUserIdList.stream()
|
|
|
+ .filter(adminUsers::contains)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ queryAdminUserIdList.removeAll(userIdList);
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 商户列表
|