Browse Source

优化修改角色菜单慢

lirui 2 years ago
parent
commit
0fc733fb2b

+ 10 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java

@@ -24,6 +24,7 @@ import org.springframework.data.repository.query.Param;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -81,6 +82,15 @@ public interface UserRepository extends JpaRepository<User, String>, JpaSpecific
             " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
     List<User> findByRoleId(String roleId);
 
+    /**
+     * 根据角色查询用户
+     * @param roleId /
+     * @return /
+     */
+    @Query(value = "SELECT u.user_id as userId,u.username FROM sys_user u, sys_users_roles r WHERE" +
+            " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
+    List<Map<String,Object>> findByRoleId2(String roleId);
+
     /**
      * 根据角色中的部门查询
      * @param deptId /

+ 8 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java

@@ -128,7 +128,14 @@ public class RoleServiceImpl implements RoleService {
     @Override
     public void updateMenu(Role resources, RoleDto roleDTO) {
         Role role = roleMapper.toEntity(roleDTO);
-        List<User> users = userRepository.findByRoleId(role.getId());
+        List<User> users = new ArrayList<>();
+        List<Map<String,Object>> userMap = userRepository.findByRoleId2(role.getId());
+        for(Map<String,Object> map : userMap){
+            User user = new User();
+            user.setId(map.get("userId").toString());
+            user.setUsername(map.get("username").toString());
+            users.add(user);
+        }
         // 更新菜单
         role.setMenus(resources.getMenus());
         delCaches(resources.getId(), users);