Search in sources :

Example 1 with UserDTO

use of com.hb0730.boot.admin.project.system.user.model.dto.UserDTO in project boot-admin by hb0730.

the class MenuEventListener method findMenuByUser.

private List<TreeMenuDTO> findMenuByUser(UserDTO user) {
    if (null == user) {
        return null;
    }
    if (user.getIsAdmin() == 1) {
        MenuParams params = new MenuParams();
        params.setSortType(SortTypeEnum.ASC.getValue());
        params.setSortColumn(Collections.singletonList(MenuEntity.SORT));
        QueryWrapper<MenuEntity> query = QueryWrapperUtils.getQuery(params);
        List<MenuEntity> entities = menuService.list(query);
        return BeanUtil.copyToList(entities, TreeMenuDTO.class);
    }
    Collection<Long> permissionIds = user.getPermissionIds();
    if (CollectionUtils.isEmpty(permissionIds)) {
        return Lists.newArrayList();
    }
    LambdaQueryWrapper<PermissionEntity> queryWrapper = Wrappers.lambdaQuery(PermissionEntity.class).in(PermissionEntity::getId, permissionIds).select(PermissionEntity::getMenuId, PermissionEntity::getPermission);
    // 权限
    List<PermissionEntity> permissionEntities = ((UserInfoServiceImpl) userInfoService.getThis()).getPermissionService().list(queryWrapper);
    if (CollectionUtils.isEmpty(permissionEntities)) {
        return Lists.newArrayList();
    }
    Map<Long, List<String>> permissionMapping = permissionEntities.stream().collect(Collectors.groupingBy(PermissionEntity::getMenuId, Collectors.mapping(PermissionEntity::getPermission, Collectors.toList())));
    // 菜单
    List<Long> menuIds = permissionEntities.parallelStream().map(PermissionEntity::getMenuId).collect(Collectors.toList());
    Set<MenuEntity> entities = Sets.newHashSet();
    for (Long menuId : menuIds) {
        entities.addAll(menuService.getSuperior(menuId, Lists.newArrayList()));
    }
    List<MenuEntity> menuEntities = entities.stream().sorted(Comparator.comparing(MenuEntity::getSort)).collect(Collectors.toList());
    List<TreeMenuDTO> treeMenu = BeanUtil.copyToList(menuEntities, TreeMenuDTO.class);
    for (TreeMenuDTO menu : treeMenu) {
        menu.setAuthority(permissionMapping.get(menu.getId()));
    }
    return treeMenu;
}
Also used : MenuParams(com.hb0730.boot.admin.project.system.menu.model.query.MenuParams) MenuEntity(com.hb0730.boot.admin.project.system.menu.model.entity.MenuEntity) TreeMenuDTO(com.hb0730.boot.admin.project.system.menu.model.dto.TreeMenuDTO) List(java.util.List) PermissionEntity(com.hb0730.boot.admin.project.system.permission.model.entity.PermissionEntity)

Example 2 with UserDTO

use of com.hb0730.boot.admin.project.system.user.model.dto.UserDTO in project boot-admin by hb0730.

the class UserInfoServiceImpl method loadUserByUsername.

@Override
public UserDTO loadUserByUsername(String username) {
    UserAccountEntity accountEntity = accountService.findUserAccountByUsername(username);
    if (null == accountEntity) {
        return null;
    }
    Long userId = accountEntity.getUserId();
    UserInfoEntity entity = super.getById(userId);
    UserDTO user = BeanUtil.toBean(entity, UserDTO.class);
    assert user != null;
    user.setUsername(accountEntity.getUsername());
    user.setPassword(accountEntity.getPassword());
    // 用户角色
    Collection<Long> roleIds = userRoleService.findRoleByUserId(userId);
    if (CollectionUtils.isEmpty(roleIds)) {
        return user;
    }
    List<RoleEntity> roles = roleService.findEnabledRoleByIds(roleIds);
    if (CollectionUtils.isEmpty(roles)) {
        return user;
    }
    Map<Long, String> roleMap = roles.parallelStream().collect(Collectors.toMap(RoleEntity::getId, RoleEntity::getCode));
    user.setRoleIds(roleMap.keySet());
    user.setRole(roleMap.values());
    // 权限
    Map<Long, List<Long>> permission = rolePermissionService.findPermissionIdByRoleId(roleIds);
    if (CollectionUtils.isEmpty(permission)) {
        return user;
    }
    Set<Long> permissionIds = permission.values().stream().flatMap(List::stream).collect(Collectors.toSet());
    List<PermissionEntity> permissionEntities = permissionService.findEnabledPermissionByIds(permissionIds);
    if (CollectionUtils.isEmpty(permissionEntities)) {
        return user;
    }
    Map<Long, String> permissionMap = permissionEntities.parallelStream().collect(Collectors.toMap(PermissionEntity::getId, PermissionEntity::getPermission));
    user.setPermission(permissionMap.values());
    user.setPermissionIds(permissionMap.keySet());
    // 岗位
    List<Long> postIds = userPostService.findPostIdByUserIds(Collections.singletonList(userId));
    user.setPostIds(postIds);
    return user;
}
Also used : UserAccountEntity(com.hb0730.boot.admin.project.system.user.model.entity.UserAccountEntity) UserDTO(com.hb0730.boot.admin.project.system.user.model.dto.UserDTO) UserInfoEntity(com.hb0730.boot.admin.project.system.user.model.entity.UserInfoEntity) UserRoleEntity(com.hb0730.boot.admin.project.system.user.model.entity.UserRoleEntity) RoleEntity(com.hb0730.boot.admin.project.system.role.model.entity.RoleEntity) List(java.util.List) PermissionEntity(com.hb0730.boot.admin.project.system.permission.model.entity.PermissionEntity)

Example 3 with UserDTO

use of com.hb0730.boot.admin.project.system.user.model.dto.UserDTO in project boot-admin by hb0730.

the class MenuEventListener method onApplicationEvent.

@Override
public void onApplicationEvent(@Nonnull MenuEvent event) {
    Long userId = event.getUserId();
    if (null == userId) {
        return;
    }
    UserDTO user = findUserById(userId);
    if (null == user) {
        return;
    }
    // 
    List<TreeMenuDTO> menu = findMenuByUser(user);
    if (CollectionUtils.isEmpty(menu)) {
        return;
    }
    HashOperations<String, Long, List<TreeMenuDTO>> hash = redisTemplate.opsForHash();
    hash.put(RedisConstant.MENU_KEY_PREFIX, userId, menu);
}
Also used : TreeMenuDTO(com.hb0730.boot.admin.project.system.menu.model.dto.TreeMenuDTO) UserDTO(com.hb0730.boot.admin.project.system.user.model.dto.UserDTO) List(java.util.List)

Example 4 with UserDTO

use of com.hb0730.boot.admin.project.system.user.model.dto.UserDTO in project boot-admin by hb0730.

the class RolePermissionListener method onApplicationEvent.

@Override
@Async("threadPoolTaskExecutor")
public void onApplicationEvent(@Nonnull RolePermissionEvent event) {
    Long roleId = event.getRoleId();
    Set<UserDetails> onlineUser = getOnlineUserByRoleId(roleId);
    if (CollectionUtils.isEmpty(onlineUser)) {
        return;
    }
    Set<String> usernameList = onlineUser.stream().map(UserDetails::getUsername).collect(Collectors.toSet());
    Map<String, UserDetails> onlineUserMap = onlineUser.stream().collect(Collectors.toMap(UserDetails::getUsername, Function.identity()));
    // 用户
    for (String username : usernameList) {
        UserDTO userDTO = userInfoService.loadUserByUsername(username);
        UserDetails details = onlineUserMap.get(username);
        BeanUtil.copyProperties(userDTO, details);
        // 刷新token
        tokenService.refreshAccessToken((User) details);
        eventPublisher.publishEvent(new MenuEvent(this, userDTO.getId()));
    }
}
Also used : UserDetails(org.springframework.security.core.userdetails.UserDetails) UserDTO(com.hb0730.boot.admin.project.system.user.model.dto.UserDTO) MenuEvent(com.hb0730.boot.admin.event.menu.MenuEvent) Async(org.springframework.scheduling.annotation.Async)

Aggregations

UserDTO (com.hb0730.boot.admin.project.system.user.model.dto.UserDTO)3 List (java.util.List)3 TreeMenuDTO (com.hb0730.boot.admin.project.system.menu.model.dto.TreeMenuDTO)2 PermissionEntity (com.hb0730.boot.admin.project.system.permission.model.entity.PermissionEntity)2 MenuEvent (com.hb0730.boot.admin.event.menu.MenuEvent)1 MenuEntity (com.hb0730.boot.admin.project.system.menu.model.entity.MenuEntity)1 MenuParams (com.hb0730.boot.admin.project.system.menu.model.query.MenuParams)1 RoleEntity (com.hb0730.boot.admin.project.system.role.model.entity.RoleEntity)1 UserAccountEntity (com.hb0730.boot.admin.project.system.user.model.entity.UserAccountEntity)1 UserInfoEntity (com.hb0730.boot.admin.project.system.user.model.entity.UserInfoEntity)1 UserRoleEntity (com.hb0730.boot.admin.project.system.user.model.entity.UserRoleEntity)1 Async (org.springframework.scheduling.annotation.Async)1 UserDetails (org.springframework.security.core.userdetails.UserDetails)1