Przeglądaj źródła

pref: selectUserList 4

shc 8 miesięcy temu
rodzic
commit
062dd3ee67

+ 2 - 4
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysUserDTO.java

@@ -103,11 +103,9 @@ public final class SysUserDTO {
 
         private String username;
 
-        private String realName;
-
-        private Integer roleId;
+        private String realname;
 
-        private Set<Integer> finalQueryRoleIds;
+        private List<Integer> role;
 
         private Integer deptId;
 

+ 30 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.pig4cloud.plugin.excel.annotation.RequestExcel;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysUserDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.UserDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.UserInfo;
@@ -68,13 +69,16 @@ import javax.validation.Valid;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -1109,6 +1113,7 @@ public class SysUserController {
 
 
         SysRole role = null;
+        boolean needArea = false;
 
         // 系统管理员
         if (operatorRoleIds.contains(1)) {
@@ -1129,13 +1134,15 @@ public class SysUserController {
         // 区域管理员
         else if (operatorRoleIds.contains(4)) {
             role = roleId2RoleMap.get(4);
+            needArea = true;
         }
         // 服务商管理员
         else if (operatorRoleIds.contains(37)) {
             role = roleId2RoleMap.get(37);
+            needArea = true;
         }
 
-        if (role == null){
+        if (role == null) {
             throw new BizException("当前用户角色不可用");
         } else {
             String visible = role.getVisible();
@@ -1145,9 +1152,9 @@ public class SysUserController {
 
             Set<Integer> visibles = Arrays.stream(visible.split(StrUtil.COMMA)).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
 
-            Integer targetRoleId = query.getRoleId();
+            Integer targetRoleId = CollUtil.isEmpty(query.getRole()) ? null : query.getRole().get(0);
 
-            if (targetRoleId == null){
+            if (targetRoleId == null) {
                 targetRoleIds.addAll(visibles);
             } else if (visibles.contains(targetRoleId)) {
                 targetRoleIds.add(targetRoleId);
@@ -1156,7 +1163,26 @@ public class SysUserController {
             }
         }
 
-        query.setFinalQueryRoleIds(targetRoleIds);
+        // 获取所有三级区域
+
+        String areaCacheKey = "sys:area:lv3";
+        Set<Long> areaEntities;
+        if (Boolean.TRUE.equals(redisTemplate.hasKey(areaCacheKey))) {
+            areaEntities = (Set<Long>) redisTemplate.opsForValue().get(areaCacheKey);
+        } else {
+            areaEntities = areaEntityService.list(Wrappers.<SysAreaEntity>lambdaQuery().eq(SysAreaEntity::getAreaType, UpmsType.AreaType.DISTRICT))
+                    .stream().map(SysAreaEntity::getAreaId).collect(Collectors.toSet());
+            redisTemplate.opsForValue().set(areaCacheKey, areaEntities, 12, TimeUnit.HOURS);
+        }
+
+        List<Long> areas = query.getAreaCodes();
+
+        if (CollUtil.isEmpty(areas) && needArea) {
+            areas = userAreaService.listUserAreas(Long.valueOf(SecurityUtils.getUser().getId()));
+        }
+
+        query.setAreaCodes(new LinkedList<>(CollUtil.intersectionDistinct(areaEntities, areas)));
+        query.setRole(new LinkedList<>(targetRoleIds));
 
         Page<?> userVosPage = userService.pageUser(query, SecurityUtils.getUser());
 

+ 7 - 20
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -247,33 +247,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         Page<SysUser> toPage = new Page<>(query.getCurrent(), query.getSize());
 
-        List<Long> areas;
-        if (CollUtil.isNotEmpty(query.getAreaCodes())) {
-            areas = query.getAreaCodes();
-        } else {
-            areas = userAreaService.listUserAreas(Long.valueOf(operator.getId()));
-            // if (CollUtil.isNotEmpty(areas)) {
-            //     areas = areaEntityService.list(Wrappers.<SysAreaEntity>lambdaQuery()
-            //                     .in(SysAreaEntity::getAreaId, areas)
-            //                     .eq(SysAreaEntity::getAreaStatus, Boolean.TRUE)
-            //                     .eq(SysAreaEntity::getAreaType, UpmsType.AreaType.DISTRICT))
-            //             .stream()
-            //             .mapToLong(SysAreaEntity::getAreaId).boxed().distinct().collect(Collectors.toList());
-            // }
 
+        Set<Integer> areaUserIds = null;
+        if (CollUtil.isNotEmpty(query.getAreaCodes())) {
+            areaUserIds = userAreaService.listAreaUser(query.getAreaCodes()).stream().map(Long::intValue).collect(Collectors.toSet());
         }
 
-        Set<Integer> areaUserIds = userAreaService.listAreaUser(areas).stream().map(Long::intValue).collect(Collectors.toSet());
-
-
         if (CollUtil.isEmpty(areaUserIds)) {
             return toPage;
         }
 
 
         List<SysUserRole> userRoles = sysUserRoleService.list(Wrappers.<SysUserRole>lambdaQuery()
-                .in(SysUserRole::getUserId, areaUserIds)
-                .in(SysUserRole::getRoleId, query.getFinalQueryRoleIds()));
+                .in(CollUtil.isNotEmpty(areaUserIds), SysUserRole::getUserId, areaUserIds)
+                .in(SysUserRole::getRoleId, query.getRole()));
 
 
         Map<Integer, List<Integer>> collect = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId, Collectors.mapping(SysUserRole::getRoleId, Collectors.toList())));
@@ -288,7 +275,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.<SysUser>lambdaQuery()
                 .like(StrUtil.isNotBlank(query.getUsername()), SysUser::getUsername, query.getUsername())
-                .like(StrUtil.isNotBlank(query.getRealName()), SysUser::getRealname, query.getRealName())
+                .like(StrUtil.isNotBlank(query.getRealname()), SysUser::getRealname, query.getRealname())
                 .eq(StrUtil.isNotBlank(query.getLockFlag()), SysUser::getLockFlag, query.getLockFlag())
                 .eq(query.getDeptId() != null, SysUser::getDeptId, query.getDeptId())
                 .in(SysUser::getUserId, collect.keySet())
@@ -297,7 +284,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         this.page(toPage, queryWrapper);
 
         List<SysUser> records = toPage.getRecords();
-        if (CollUtil.isEmpty(records)){
+        if (CollUtil.isEmpty(records)) {
             return toPage;
         }