From a8241275585056e6a5abea857df806efafe4a4c7 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Tue, 30 Apr 2024 19:47:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.0.0):=20=E7=AE=80=E5=8C=96getSystem?= =?UTF-8?q?UserPageList=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SystemUserServiceImpl.java | 113 +++++++++--------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java index 3103188d7..5043f1677 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java @@ -3,35 +3,32 @@ package com.aizuda.snailjob.server.web.service.impl; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; +import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.server.common.config.SystemProperties; import com.aizuda.snailjob.server.common.exception.SnailJobServerException; +import com.aizuda.snailjob.server.web.annotation.RoleEnum; +import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO; +import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO; import com.aizuda.snailjob.server.web.model.request.UserPermissionRequestVO; import com.aizuda.snailjob.server.web.model.request.UserSessionVO; import com.aizuda.snailjob.server.web.model.response.PermissionsResponseVO; +import com.aizuda.snailjob.server.web.model.response.SystemUserResponseVO; +import com.aizuda.snailjob.server.web.service.SystemUserService; import com.aizuda.snailjob.server.web.service.convert.NamespaceResponseVOConverter; import com.aizuda.snailjob.server.web.service.convert.PermissionsResponseVOConverter; +import com.aizuda.snailjob.server.web.service.convert.SystemUserResponseVOConverter; import com.aizuda.snailjob.template.datasource.persistence.mapper.NamespaceMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserPermissionMapper; import com.aizuda.snailjob.template.datasource.persistence.po.Namespace; import com.aizuda.snailjob.template.datasource.persistence.po.SystemUser; import com.aizuda.snailjob.template.datasource.persistence.po.SystemUserPermission; -import com.aizuda.snailjob.server.web.service.SystemUserService; -import com.aizuda.snailjob.server.web.model.response.PermissionsResponseVO; -import com.aizuda.snailjob.server.web.service.convert.NamespaceResponseVOConverter; -import com.aizuda.snailjob.server.web.service.convert.PermissionsResponseVOConverter; -import com.aizuda.snailjob.server.web.service.convert.SystemUserResponseVOConverter; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; -import com.aizuda.snailjob.common.core.util.JsonUtil; -import com.aizuda.snailjob.server.web.service.convert.SystemUserResponseVOConverter; -import com.aizuda.snailjob.server.web.annotation.RoleEnum; -import com.aizuda.snailjob.server.web.model.base.PageResult; -import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO; -import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO; -import com.aizuda.snailjob.server.web.model.response.SystemUserResponseVO; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -63,15 +60,9 @@ public class SystemUserServiceImpl implements SystemUserService { public SystemUserResponseVO login(SystemUserRequestVO requestVO) { SystemUser systemUser = systemUserMapper.selectOne( - new LambdaQueryWrapper() - .eq(SystemUser::getUsername, requestVO.getUsername().trim())); - if (Objects.isNull(systemUser)) { - throw new SnailJobServerException("用户名或密码错误"); - } - - if (!SecureUtil.sha256(requestVO.getPassword()).equals(systemUser.getPassword())) { - throw new SnailJobServerException("用户名或密码错误"); - } + new LambdaQueryWrapper() + .eq(SystemUser::getUsername, requestVO.getUsername().trim())); + validateUserPassword(requestVO, systemUser); String token = getToken(systemUser); @@ -84,23 +75,33 @@ public class SystemUserServiceImpl implements SystemUserService { return systemUserResponseVO; } + private static void validateUserPassword(SystemUserRequestVO requestVO, SystemUser systemUser) { + if (Objects.isNull(systemUser)) { + throw new SnailJobServerException("用户名或密码错误"); + } + + if (!SecureUtil.sha256(requestVO.getPassword()).equals(systemUser.getPassword())) { + throw new SnailJobServerException("用户名或密码错误"); + } + } + private void getPermission(Integer role, Long userId, final SystemUserResponseVO systemUserResponseVO) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName); if (RoleEnum.USER.getRoleId().equals(role)) { List systemUserPermissions = systemUserPermissionMapper.selectList( - new LambdaQueryWrapper() - .select(SystemUserPermission::getNamespaceId) - .eq(SystemUserPermission::getSystemUserId, userId) - .groupBy(SystemUserPermission::getNamespaceId)); + new LambdaQueryWrapper() + .select(SystemUserPermission::getNamespaceId) + .eq(SystemUserPermission::getSystemUserId, userId) + .groupBy(SystemUserPermission::getNamespaceId)); queryWrapper.in(Namespace::getUniqueId, systemUserPermissions.stream() - .map(SystemUserPermission::getNamespaceId).collect(Collectors.toList())); + .map(SystemUserPermission::getNamespaceId).collect(Collectors.toList())); } List namespaces = namespaceMapper.selectList(queryWrapper); systemUserResponseVO.setNamespaceIds( - NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces)); + NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces)); } @Override @@ -117,7 +118,7 @@ public class SystemUserServiceImpl implements SystemUserService { @Transactional public void addUser(SystemUserRequestVO requestVO) { long count = systemUserMapper.selectCount( - new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); + new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); if (count > 0) { throw new SnailJobServerException("该用户已存在"); } @@ -141,7 +142,7 @@ public class SystemUserServiceImpl implements SystemUserService { systemUserPermission.setGroupName(permission.getGroupName()); systemUserPermission.setNamespaceId(permission.getNamespaceId()); Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), - () -> new SnailJobServerException("新增用户权限失败")); + () -> new SnailJobServerException("新增用户权限失败")); } } @@ -150,14 +151,14 @@ public class SystemUserServiceImpl implements SystemUserService { @Transactional public void update(SystemUserRequestVO requestVO) { SystemUser systemUser = systemUserMapper.selectOne( - new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId())); + new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId())); if (Objects.isNull(systemUser)) { throw new SnailJobServerException("该用户不存在"); } if (!systemUser.getUsername().equals(requestVO.getUsername())) { long count = systemUserMapper.selectCount( - new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); + new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); if (count > 0) { throw new SnailJobServerException("该用户已存在"); } @@ -179,7 +180,7 @@ public class SystemUserServiceImpl implements SystemUserService { } systemUserPermissionMapper.delete(new LambdaQueryWrapper() - .eq(SystemUserPermission::getSystemUserId, systemUser.getId())); + .eq(SystemUserPermission::getSystemUserId, systemUser.getId())); for (UserPermissionRequestVO permission : permissions) { SystemUserPermission systemUserPermission = new SystemUserPermission(); @@ -187,41 +188,41 @@ public class SystemUserServiceImpl implements SystemUserService { systemUserPermission.setGroupName(permission.getGroupName()); systemUserPermission.setNamespaceId(permission.getNamespaceId()); Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), - () -> new SnailJobServerException("更新用户权限失败")); + () -> new SnailJobServerException("更新用户权限失败")); } } @Override public PageResult> getSystemUserPageList(SystemUserQueryVO queryVO) { PageDTO userPageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize()); - - LambdaQueryWrapper systemUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); - - if (StrUtil.isNotBlank(queryVO.getUsername())) { - systemUserLambdaQueryWrapper.like(SystemUser::getUsername, "%" + queryVO.getUsername() + "%"); - } - userPageDTO = systemUserMapper.selectPage(userPageDTO, - systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId)); + Wrappers.lambdaQuery() + .likeRight(StrUtil.isNotBlank(queryVO.getUsername()), SystemUser::getUsername, queryVO.getUsername()) + .orderByDesc(SystemUser::getId)); + + if (CollectionUtils.isEmpty(userPageDTO.getRecords())) { + return new PageResult<>(userPageDTO, Collections.emptyList()); + } List userResponseVOList = SystemUserResponseVOConverter.INSTANCE.batchConvert( - userPageDTO.getRecords()); - if (CollectionUtils.isEmpty(userResponseVOList)) { - return new PageResult<>(userPageDTO, userResponseVOList); - } - + userPageDTO.getRecords()); List userPermissions = systemUserPermissionMapper.selectList( - new LambdaQueryWrapper() - .in(SystemUserPermission::getSystemUserId, - userResponseVOList.stream().map(SystemUserResponseVO::getId).collect(Collectors.toSet()))); + Wrappers.lambdaQuery() + .in(SystemUserPermission::getSystemUserId, + userResponseVOList.stream().map(SystemUserResponseVO::getId).collect(Collectors.toSet()))); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName); - queryWrapper.in(Namespace::getUniqueId, userPermissions.stream().map(SystemUserPermission::getNamespaceId).collect(Collectors.toSet())); - List namespaces = namespaceMapper.selectList(queryWrapper); + Set uniqueIds = userPermissions.stream() + .map(SystemUserPermission::getNamespaceId) + .collect(Collectors.toSet()); + + // TODO: uniqueIds可能为空 + List namespaces = namespaceMapper.selectList(Wrappers.lambdaQuery() + .select(Namespace::getId, Namespace::getUniqueId, Namespace::getName) + .in(Namespace::getUniqueId, uniqueIds)); Map namespaceMap = namespaces.stream().collect(Collectors.toMap(Namespace::getUniqueId, Namespace::getName)); - Map> userPermissionsMap = userPermissions.stream().collect(Collectors.groupingBy(SystemUserPermission::getSystemUserId)); + Map> userPermissionsMap = userPermissions.stream() + .collect(Collectors.groupingBy(SystemUserPermission::getSystemUserId)); userResponseVOList.stream() .filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId())) .forEach(systemUserResponseVO -> { @@ -236,8 +237,8 @@ public class SystemUserServiceImpl implements SystemUserService { permissionsResponseVOS.add(responseVO); } - systemUserResponseVO.setPermissions(permissionsResponseVOS); - }); + systemUserResponseVO.setPermissions(permissionsResponseVOS); + }); return new PageResult<>(userPageDTO, userResponseVOList); }