feat(sj_1.0.0): 简化getSystemUserPageList代码

This commit is contained in:
dhb52 2024-04-30 19:47:44 +08:00
parent cc499696f2
commit a824127558

View File

@ -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;
@ -65,13 +62,7 @@ public class SystemUserServiceImpl implements SystemUserService {
SystemUser systemUser = systemUserMapper.selectOne(
new LambdaQueryWrapper<SystemUser>()
.eq(SystemUser::getUsername, requestVO.getUsername().trim()));
if (Objects.isNull(systemUser)) {
throw new SnailJobServerException("用户名或密码错误");
}
if (!SecureUtil.sha256(requestVO.getPassword()).equals(systemUser.getPassword())) {
throw new SnailJobServerException("用户名或密码错误");
}
validateUserPassword(requestVO, systemUser);
String token = getToken(systemUser);
@ -84,6 +75,16 @@ 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<Namespace> queryWrapper = new LambdaQueryWrapper<>();
@ -194,34 +195,34 @@ public class SystemUserServiceImpl implements SystemUserService {
@Override
public PageResult<List<SystemUserResponseVO>> getSystemUserPageList(SystemUserQueryVO queryVO) {
PageDTO<SystemUser> userPageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
LambdaQueryWrapper<SystemUser> systemUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(queryVO.getUsername())) {
systemUserLambdaQueryWrapper.like(SystemUser::getUsername, "%" + queryVO.getUsername() + "%");
}
userPageDTO = systemUserMapper.selectPage(userPageDTO,
systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId));
Wrappers.<SystemUser>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<SystemUserResponseVO> userResponseVOList = SystemUserResponseVOConverter.INSTANCE.batchConvert(
userPageDTO.getRecords());
if (CollectionUtils.isEmpty(userResponseVOList)) {
return new PageResult<>(userPageDTO, userResponseVOList);
}
List<SystemUserPermission> userPermissions = systemUserPermissionMapper.selectList(
new LambdaQueryWrapper<SystemUserPermission>()
Wrappers.<SystemUserPermission>lambdaQuery()
.in(SystemUserPermission::getSystemUserId,
userResponseVOList.stream().map(SystemUserResponseVO::getId).collect(Collectors.toSet())));
LambdaQueryWrapper<Namespace> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName);
queryWrapper.in(Namespace::getUniqueId, userPermissions.stream().map(SystemUserPermission::getNamespaceId).collect(Collectors.toSet()));
List<Namespace> namespaces = namespaceMapper.selectList(queryWrapper);
Set<String> uniqueIds = userPermissions.stream()
.map(SystemUserPermission::getNamespaceId)
.collect(Collectors.toSet());
// TODO: uniqueIds可能为空
List<Namespace> namespaces = namespaceMapper.selectList(Wrappers.<Namespace>lambdaQuery()
.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName)
.in(Namespace::getUniqueId, uniqueIds));
Map<String, String> namespaceMap = namespaces.stream().collect(Collectors.toMap(Namespace::getUniqueId, Namespace::getName));
Map<Long, List<SystemUserPermission>> userPermissionsMap = userPermissions.stream().collect(Collectors.groupingBy(SystemUserPermission::getSystemUserId));
Map<Long, List<SystemUserPermission>> userPermissionsMap = userPermissions.stream()
.collect(Collectors.groupingBy(SystemUserPermission::getSystemUserId));
userResponseVOList.stream()
.filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId()))
.forEach(systemUserResponseVO -> {