refactor: 项目结构优化

This commit is contained in:
haoxr
2023-03-01 23:24:07 +08:00
parent 42420b7019
commit aa422ff45c
64 changed files with 168 additions and 414 deletions

View File

@@ -7,7 +7,6 @@ import com.youlai.system.common.result.ResultCode;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
// import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -20,7 +19,7 @@ import java.io.IOException;
public class ResponseUtils {
/**
* 异常消息返回(适用过滤器异常响应)
* 异常消息返回(适用过滤器中处理异常响应)
*
* @param response
* @param resultCode

View File

@@ -1,20 +1,18 @@
package com.youlai.system.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.youlai.system.handler.*;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandlerRegistry;
import com.youlai.system.framework.mybatisplus.MyDataPermissionHandler;
import com.youlai.system.framework.mybatisplus.MyMetaObjectHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Mybatis-Plus配置类
* mybatis-plus 配置类
*
* @author haoxr
* @date 2022/7/2
@@ -37,17 +35,6 @@ public class MybatisPlusConfig {
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> {
// 全局注册自定义TypeHandler
TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
typeHandlerRegistry.register(String[].class, JdbcType.OTHER, StringArrayJsonTypeHandler.class);
typeHandlerRegistry.register(Long[].class, JdbcType.OTHER, LongArrayJsonTypeHandler.class);
typeHandlerRegistry.register(Integer[].class, JdbcType.OTHER, IntegerArrayJsonTypeHandler.class);
};
}
/**
* 自动填充数据库创建人、创建时间、更新人、更新时间
*/

View File

@@ -1,9 +1,9 @@
package com.youlai.system.config;
import com.youlai.system.security.filter.JwtAuthenticationFilter;
import com.youlai.system.security.exception.MyAccessDeniedHandler;
import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
import com.youlai.system.security.JwtTokenManager;
import com.youlai.system.framework.security.filter.JwtAuthenticationFilter;
import com.youlai.system.framework.security.exception.MyAccessDeniedHandler;
import com.youlai.system.framework.security.exception.MyAuthenticationEntryPoint;
import com.youlai.system.framework.security.JwtTokenManager;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -2,10 +2,11 @@ package com.youlai.system.controller;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.dto.TokenResult;
import com.youlai.system.security.JwtTokenManager;
import com.youlai.system.pojo.dto.LoginResult;
import com.youlai.system.framework.security.JwtTokenManager;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -23,9 +24,9 @@ public class AuthController {
@Operation(summary = "登录")
@PostMapping("/login")
public Result<TokenResult> login(
@RequestParam String username,
@RequestParam String password
public Result<LoginResult> login(
@Parameter(name = "用户名",example = "admin") @RequestParam String username,
@Parameter(name = "密码") @RequestParam String password
) {
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
username.toLowerCase().trim(),
@@ -35,10 +36,10 @@ public class AuthController {
SecurityContextHolder.getContext().setAuthentication(authentication);
// 生成token
String accessToken = "Bearer " + jwtTokenManager.createToken(authentication);
TokenResult tokenResult = TokenResult.builder()
LoginResult loginResult = LoginResult.builder()
.accessToken(accessToken)
.build();
return Result.success(tokenResult);
return Result.success(loginResult);
}
@Operation(summary = "注销")

View File

@@ -1,7 +1,7 @@
package com.youlai.system.controller;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.vo.file.FileInfo;
import com.youlai.system.pojo.vo.FileInfoVO;
import com.youlai.system.service.FileService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -21,11 +21,11 @@ public class FileController {
@PostMapping
@Operation(summary = "文件上传")
public Result<FileInfo> uploadFile(
public Result<FileInfoVO> uploadFile(
@Parameter(name ="表单文件对象") @RequestParam(value = "file") MultipartFile file
) {
FileInfo fileInfo = fileService.uploadFile(file);
return Result.success(fileInfo);
FileInfoVO fileInfoVO = fileService.uploadFile(file);
return Result.success(fileInfoVO);
}
@DeleteMapping

View File

@@ -1,14 +1,13 @@
package com.youlai.system.controller;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.query.DeptQuery;
import com.youlai.system.pojo.vo.dept.DeptVO;
import com.youlai.system.pojo.vo.DeptVO;
import com.youlai.system.service.SysDeptService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;

View File

@@ -5,11 +5,10 @@ import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.query.DictItemPageQuery;
import com.youlai.system.pojo.vo.dict.DictItemPageVO;
import com.youlai.system.pojo.vo.DictItemPageVO;
import com.youlai.system.service.SysDictItemService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;

View File

@@ -1,16 +1,15 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.dict.DictTypePageVO;
import com.youlai.system.pojo.vo.DictTypePageVO;
import com.youlai.system.service.SysDictTypeService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;

View File

@@ -1,16 +1,15 @@
package com.youlai.system.controller;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.query.MenuQuery;
import com.youlai.system.pojo.vo.menu.MenuVO;
import com.youlai.system.pojo.vo.menu.ResourceVO;
import com.youlai.system.pojo.vo.menu.RouteVO;
import com.youlai.system.pojo.vo.MenuVO;
import com.youlai.system.pojo.vo.ResourceVO;
import com.youlai.system.pojo.vo.RouteVO;
import com.youlai.system.service.SysMenuService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,17 +1,16 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.pojo.vo.RolePageVO;
import com.youlai.system.service.SysRoleService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;

View File

@@ -6,17 +6,19 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.dto.UserImportDTO;
import com.youlai.system.common.util.ExcelUtils;
import com.youlai.system.framework.easyexcel.ExcelResult;
import com.youlai.system.listener.UserImportListener;
import com.youlai.system.pojo.vo.UserImportVO;
import com.youlai.system.pojo.form.UserForm;
import com.youlai.system.pojo.entity.SysUser;
import com.youlai.system.pojo.query.UserPageQuery;
import com.youlai.system.pojo.vo.user.UserExportVO;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserVO;
import com.youlai.system.pojo.vo.UserExportVO;
import com.youlai.system.pojo.vo.UserInfoVO;
import com.youlai.system.pojo.vo.UserPageVO;
import com.youlai.system.service.SysUserService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
@@ -27,6 +29,8 @@ import org.springframework.web.bind.annotation.*;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -49,17 +53,17 @@ public class SysUserController {
@Operation(summary = "用户分页列表")
@GetMapping("/pages")
public PageResult<UserVO> listUserPages(
public PageResult<UserPageVO> listUserPages(
@ParameterObject UserPageQuery queryParams
) {
IPage<UserVO> result = userService.listUserPages(queryParams);
IPage<UserPageVO> result = userService.listUserPages(queryParams);
return PageResult.success(result);
}
@Operation(summary = "用户表单数据")
@GetMapping("/{userId}/form")
public Result<UserForm> getUserDetail(
@Parameter(name = "用户ID") @PathVariable Long userId
public Result<UserForm> getUserForm(
@Parameter(name = "用户ID") @PathVariable Long userId
) {
UserForm formData = userService.getUserFormData(userId);
return Result.success(formData);
@@ -79,7 +83,7 @@ public class SysUserController {
@PutMapping(value = "/{userId}")
@PreAuthorize("@pms.hasPermission('sys:user:edit')")
public Result updateUser(
@Parameter(name ="用户ID") @PathVariable Long userId,
@Parameter(name = "用户ID") @PathVariable Long userId,
@RequestBody @Validated UserForm userForm) {
boolean result = userService.updateUser(userId, userForm);
return Result.judge(result);
@@ -89,7 +93,7 @@ public class SysUserController {
@DeleteMapping("/{ids}")
@PreAuthorize("@pms.hasPermission('sys:user:delete')")
public Result deleteUsers(
@Parameter(name ="用户ID多个以英文逗号(,)分割") @PathVariable String ids
@Parameter(name = "用户ID多个以英文逗号(,)分割") @PathVariable String ids
) {
boolean result = userService.deleteUsers(ids);
return Result.judge(result);
@@ -98,7 +102,7 @@ public class SysUserController {
@Operation(summary = "修改用户密码")
@PatchMapping(value = "/{userId}/password")
public Result updatePassword(
@Parameter(name ="用户ID") @PathVariable Long userId,
@Parameter(name = "用户ID") @PathVariable Long userId,
@RequestParam String password
) {
boolean result = userService.updatePassword(userId, password);
@@ -108,8 +112,8 @@ public class SysUserController {
@Operation(summary = "修改用户状态")
@PatchMapping(value = "/{userId}/status")
public Result updatePassword(
@Parameter(name ="用户ID") @PathVariable Long userId,
@Parameter(name ="用户状态(1:启用;0:禁用)") @RequestParam Integer status
@Parameter(name = "用户ID") @PathVariable Long userId,
@Parameter(name = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
) {
boolean result = userService.update(new LambdaUpdateWrapper<SysUser>()
.eq(SysUser::getId, userId)
@@ -118,14 +122,14 @@ public class SysUserController {
return Result.judge(result);
}
@Operation(summary = "获取登录用户信息")
@Operation(summary = "获取当前登录用户信息")
@GetMapping("/me")
public Result<UserLoginVO> getUserLoginInfo() {
UserLoginVO userLoginVO = userService.getUserLoginInfo();
return Result.success(userLoginVO);
public Result<UserInfoVO> getUserLoginInfo() {
UserInfoVO userInfoVO = userService.getUserLoginInfo();
return Result.success(userInfoVO);
}
@Operation(summary ="用户导入模板下载")
@Operation(summary = "用户导入模板下载")
@GetMapping("/template")
public void downloadTemplate(HttpServletResponse response) throws IOException {
String fileName = "用户导入模板.xlsx";
@@ -141,14 +145,15 @@ public class SysUserController {
excelWriter.finish();
}
@Operation(summary ="导入用户")
@Operation(summary = "导入用户")
@PostMapping("/_import")
public Result importUsers(UserImportDTO userImportDTO) throws IOException {
String msg = userService.importUsers(userImportDTO);
return Result.success(msg);
public Result importUsers(@Parameter(name = "部门ID") Long deptId, MultipartFile file) throws IOException {
UserImportListener listener = new UserImportListener(deptId);
ExcelResult excelResult = ExcelUtils.importExcel(file.getInputStream(), UserImportVO.class, listener);
return Result.success(excelResult.getMsg());
}
@Operation(summary ="导出用户")
@Operation(summary = "导出用户")
@GetMapping("/_export")
public void exportUsers(UserPageQuery queryParams, HttpServletResponse response) throws IOException {
String fileName = "用户列表.xlsx";

View File

@@ -2,7 +2,7 @@ package com.youlai.system.converter;
import com.youlai.system.pojo.entity.SysDept;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.vo.dept.DeptVO;
import com.youlai.system.pojo.vo.DeptVO;
import org.mapstruct.Mapper;
/**

View File

@@ -3,7 +3,7 @@ package com.youlai.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.vo.dict.DictItemPageVO;
import com.youlai.system.pojo.vo.DictItemPageVO;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;

View File

@@ -3,7 +3,7 @@ package com.youlai.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.vo.dict.DictTypePageVO;
import com.youlai.system.pojo.vo.DictTypePageVO;
import org.mapstruct.Mapper;
/**

View File

@@ -1,7 +1,7 @@
package com.youlai.system.converter;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.vo.menu.MenuVO;
import com.youlai.system.pojo.vo.MenuVO;
import org.mapstruct.Mapper;
/**

View File

@@ -1,10 +1,10 @@
package com.youlai.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.pojo.vo.RolePageVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

View File

@@ -5,8 +5,8 @@ import com.youlai.system.pojo.bo.UserBO;
import com.youlai.system.pojo.entity.SysUser;
import com.youlai.system.pojo.form.UserForm;
import com.youlai.system.pojo.bo.UserFormBO;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserVO;
import com.youlai.system.pojo.vo.UserInfoVO;
import com.youlai.system.pojo.vo.UserPageVO;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -24,9 +24,9 @@ public interface UserConverter {
@Mappings({
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(po.getGender(), com.youlai.system.common.enums.GenderEnum.class))")
})
UserVO po2Vo(UserBO po);
UserPageVO po2Vo(UserBO po);
Page<UserVO> po2Vo(Page<UserBO> po);
Page<UserPageVO> po2Vo(Page<UserBO> po);
UserForm po2Form(UserFormBO po);
@@ -38,7 +38,7 @@ public interface UserConverter {
@Mappings({
@Mapping(target = "userId", source = "id")
})
UserLoginVO entity2LoginUser(SysUser entity);
UserInfoVO entity2LoginUser(SysUser entity);
}

View File

@@ -1,4 +1,4 @@
package com.youlai.system.handler;
package com.youlai.system.framework.mybatisplus;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
import com.youlai.system.common.annotation.DataPermission;
import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.common.enums.DataScopeEnum;
import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.framework.security.util.SecurityUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.expression.Expression;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.handler;
package com.youlai.system.framework.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;

View File

@@ -1,7 +1,7 @@
package com.youlai.system.security;
package com.youlai.system.framework.security;
import cn.hutool.core.convert.Convert;
import com.youlai.system.security.userdetails.SysUserDetails;
import com.youlai.system.framework.security.userdetails.SysUserDetails;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.security.exception;
package com.youlai.system.framework.security.exception;
import com.youlai.system.common.result.ResultCode;
import com.youlai.system.common.util.ResponseUtils;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.security.exception;
package com.youlai.system.framework.security.exception;
import com.youlai.system.common.result.ResultCode;
import com.youlai.system.common.util.ResponseUtils;

View File

@@ -1,8 +1,8 @@
package com.youlai.system.security.filter;
package com.youlai.system.framework.security.filter;
import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.result.ResultCode;
import com.youlai.system.security.JwtTokenManager;
import com.youlai.system.framework.security.JwtTokenManager;
import com.youlai.system.common.util.ResponseUtils;
import org.springframework.http.HttpMethod;
import org.springframework.security.core.Authentication;

View File

@@ -1,8 +1,8 @@
package com.youlai.system.security.service;
package com.youlai.system.framework.security.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.framework.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.security.userdetails;
package com.youlai.system.framework.security.userdetails;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.security.userdetails;
package com.youlai.system.framework.security.userdetails;
import com.youlai.system.pojo.bo.UserAuthInfo;
import com.youlai.system.service.SysUserService;

View File

@@ -1,10 +1,10 @@
package com.youlai.system.security.util;
package com.youlai.system.framework.security.util;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.security.userdetails.SysUserDetails;
import com.youlai.system.framework.security.userdetails.SysUserDetails;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;

View File

@@ -1,120 +0,0 @@
package com.youlai.system.handler;
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.springframework.util.StringUtils;
import java.lang.reflect.Array;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Objects;
/**
* 数组类型转换 json
* <p>
* 主要是用于对象数据 基础类型包装对象不建议用
* <a href="https://www.jianshu.com/p/ab832f3fe81c">https://www.jianshu.com/p/ab832f3fe81c</a>
*
* @author Gadfly
* @since 2021-06-30 15:20
*/
@Slf4j
@MappedJdbcTypes(value = {JdbcType.OTHER}, includeNullJdbcType = true)
public class ArrayObjectJsonTypeHandler<E> extends BaseTypeHandler<E[]> {
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final String STRING_JSON_ARRAY_EMPTY = "[]";
static {
// 未知字段忽略
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 不使用科学计数
MAPPER.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
// null 值不输出(节省内存)
MAPPER.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
}
private final Class<E[]> type;
public ArrayObjectJsonTypeHandler(Class<E[]> type) {
Objects.requireNonNull(type);
this.type = type;
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, E[] parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, toJson(parameter));
}
@Override
public E[] getNullableResult(ResultSet rs, String columnName) throws SQLException {
return toObject(rs.getString(columnName), type);
}
@Override
public E[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return toObject(rs.getString(columnIndex), type);
}
@Override
public E[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return toObject(cs.getString(columnIndex), type);
}
/**
* object 转 json
*
* @param obj 对象
* @return String json字符串
*/
private String toJson(E[] obj) {
if (ArrayUtils.isEmpty(obj)) {
return STRING_JSON_ARRAY_EMPTY;
}
try {
return MAPPER.writeValueAsString(obj);
} catch (JsonProcessingException e) {
throw new RuntimeException("mybatis column to json error,obj:" + Arrays.toString(obj), e);
}
}
/**
* 转换对象
*
* @param json json数据
* @param clazz 类
* @return E
*/
private E[] toObject(String json, Class<E[]> clazz) {
if (json == null) {
return null;
}
if (!StringUtils.hasText(json)) {
return newArray(clazz);
}
try {
return MAPPER.readValue(json, clazz);
} catch (JsonProcessingException e) {
log.error("mybatis column json to object error,json:{}", json, e);
return newArray(clazz);
}
}
@SuppressWarnings("unchecked")
private E[] newArray(Class<E[]> clazz) {
return (E[]) Array.newInstance(clazz.getComponentType(), 0);
}
}

View File

@@ -1,24 +0,0 @@
package com.youlai.system.handler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.springframework.stereotype.Component;
/**
* Integer 数组类型转换 json
* <a href="https://www.jianshu.com/p/ab832f3fe81c">https://www.jianshu.com/p/ab832f3fe81c</a>
*
* @author haoxr
* @since 2022/10/14 15:19
*/
@Slf4j
@Component
@MappedTypes(value = {Integer[].class})
@MappedJdbcTypes(value = {JdbcType.VARCHAR}, includeNullJdbcType = true)
public class IntegerArrayJsonTypeHandler extends ArrayObjectJsonTypeHandler<Integer> {
public IntegerArrayJsonTypeHandler() {
super(Integer[].class);
}
}

View File

@@ -1,23 +0,0 @@
package com.youlai.system.handler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.springframework.stereotype.Component;
/**
* Long 数组类型转换 json
*
* @author haoxr
* @since 2022/10/14
*/
@Slf4j
@Component
@MappedTypes(value = {Long[].class})
@MappedJdbcTypes(value = {JdbcType.OTHER}, includeNullJdbcType = true)
public class LongArrayJsonTypeHandler extends ArrayObjectJsonTypeHandler<Long> {
public LongArrayJsonTypeHandler() {
super(Long[].class);
}
}

View File

@@ -1,23 +0,0 @@
package com.youlai.system.handler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.springframework.stereotype.Component;
/**
* String 数组类型转换 json
*
* @author haoxr
* @since 2022/10/14
*/
@Slf4j
@Component
@MappedTypes(value = {String[].class})
@MappedJdbcTypes(value = {JdbcType.OTHER}, includeNullJdbcType = true)
public class StringArrayJsonTypeHandler extends ArrayObjectJsonTypeHandler<String> {
public StringArrayJsonTypeHandler() {
super(String[].class);
}
}

View File

@@ -8,7 +8,7 @@ import com.youlai.system.pojo.entity.SysUser;
import com.youlai.system.pojo.bo.UserAuthInfo;
import com.youlai.system.pojo.bo.UserFormBO;
import com.youlai.system.pojo.query.UserPageQuery;
import com.youlai.system.pojo.vo.user.UserExportVO;
import com.youlai.system.pojo.vo.UserExportVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

View File

@@ -5,7 +5,7 @@ import lombok.Data;
@Data
@Builder
public class TokenResult {
public class LoginResult {
private String accessToken;

View File

@@ -1,6 +1,5 @@
package com.youlai.system.pojo.form;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.dept;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.dict;
package com.youlai.system.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.dict;
package com.youlai.system.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,9 +1,9 @@
package com.youlai.system.pojo.vo.file;
package com.youlai.system.pojo.vo;
import lombok.Data;
@Data
public class FileInfo {
public class FileInfoVO {
private String name;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.menu;
package com.youlai.system.pojo.vo;
import lombok.Data;

View File

@@ -1,9 +1,8 @@
package com.youlai.system.pojo.vo.menu;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.youlai.system.common.enums.MenuTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;

View File

@@ -1,8 +1,7 @@
package com.youlai.system.pojo;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

View File

@@ -1,8 +1,7 @@
package com.youlai.system.pojo.vo.menu;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.role;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.menu;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.user;
package com.youlai.system.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.pojo.vo.user;
package com.youlai.system.pojo.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;

View File

@@ -1,10 +1,8 @@
package com.youlai.system.pojo.vo.user;
package com.youlai.system.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Set;
/**
@@ -15,7 +13,7 @@ import java.util.Set;
*/
@Schema(description ="当前登录用户视图对象")
@Data
public class UserLoginVO {
public class UserInfoVO {
@Schema(description="用户ID")
private Long userId;

View File

@@ -1,8 +1,7 @@
package com.youlai.system.pojo.vo.user;
package com.youlai.system.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
@@ -15,7 +14,7 @@ import java.util.Date;
*/
@Schema(description ="用户分页视图对象")
@Data
public class UserVO {
public class UserPageVO {
@Schema(description="用户ID")
private Long id;

View File

@@ -1,35 +0,0 @@
package com.youlai.system.pojo.vo.perm;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 权限视图对象
*
* @author haoxr
* @date 2021/10/30 10:54
*/
@Schema(description ="权限视图对象")
@Data
public class PermPageVO {
@Schema(description="权限ID")
private Long id;
@Schema(description="权限名称")
private String name;
@Schema(description="URL权限标识-服务名称")
private String serviceName;
@Schema(description="URL权限标识-请求标识")
private String requestMethod;
@Schema(description="URL权限标识-请求方式")
private String requestPath;
@Schema(description="按钮权限标识")
private String btnPerm;
}

View File

@@ -1,6 +1,6 @@
package com.youlai.system.service;
import com.youlai.system.pojo.vo.file.FileInfo;
import com.youlai.system.pojo.vo.FileInfoVO;
import org.springframework.web.multipart.MultipartFile;
/**
@@ -18,7 +18,7 @@ public interface FileService {
* @param file 表单文件对象
* @return
*/
FileInfo uploadFile(MultipartFile file);
FileInfoVO uploadFile(MultipartFile file);
/**
* 删除文件

View File

@@ -1,11 +1,11 @@
package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.pojo.entity.SysDept;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.query.DeptQuery;
import com.youlai.system.pojo.vo.dept.DeptVO;
import com.youlai.system.pojo.vo.DeptVO;
import java.util.List;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.query.DictItemPageQuery;
import com.youlai.system.pojo.vo.dict.DictItemPageVO;
import com.youlai.system.pojo.vo.DictItemPageVO;
/**
*

View File

@@ -2,11 +2,11 @@ package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.dict.DictTypePageVO;
import com.youlai.system.pojo.vo.DictTypePageVO;
import java.util.List;

View File

@@ -1,12 +1,12 @@
package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.query.MenuQuery;
import com.youlai.system.pojo.vo.menu.MenuVO;
import com.youlai.system.pojo.vo.menu.ResourceVO;
import com.youlai.system.pojo.vo.menu.RouteVO;
import com.youlai.system.pojo.vo.MenuVO;
import com.youlai.system.pojo.vo.ResourceVO;
import com.youlai.system.pojo.vo.RouteVO;
import java.util.List;
import java.util.Set;

View File

@@ -3,11 +3,11 @@ package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.pojo.vo.RolePageVO;
import java.util.List;
import java.util.Set;

View File

@@ -3,14 +3,14 @@ package com.youlai.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.pojo.dto.UserImportDTO;
import com.youlai.system.pojo.vo.UserImportVO;
import com.youlai.system.pojo.entity.SysUser;
import com.youlai.system.pojo.form.UserForm;
import com.youlai.system.pojo.bo.UserAuthInfo;
import com.youlai.system.pojo.query.UserPageQuery;
import com.youlai.system.pojo.vo.user.UserExportVO;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserVO;
import com.youlai.system.pojo.vo.UserExportVO;
import com.youlai.system.pojo.vo.UserInfoVO;
import com.youlai.system.pojo.vo.UserPageVO;
import java.io.IOException;
import java.util.List;
@@ -28,7 +28,7 @@ public interface SysUserService extends IService<SysUser> {
*
* @return
*/
IPage<UserVO> listUserPages(UserPageQuery queryParams);
IPage<UserPageVO> listUserPages(UserPageQuery queryParams);
/**
@@ -88,10 +88,10 @@ public interface SysUserService extends IService<SysUser> {
/**
* 导入用户
*
* @param userImportDTO
* @param userImportVO
* @return
*/
String importUsers(UserImportDTO userImportDTO) throws IOException;
String importUsers(UserImportVO userImportVO) throws IOException;
/**
* 获取导出用户列表
@@ -107,5 +107,5 @@ public interface SysUserService extends IService<SysUser> {
*
* @return
*/
UserLoginVO getUserLoginInfo();
UserInfoVO getUserLoginInfo();
}

View File

@@ -5,7 +5,7 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.youlai.system.pojo.vo.file.FileInfo;
import com.youlai.system.pojo.vo.FileInfoVO;
import com.youlai.system.service.FileService;
import io.minio.*;
import io.minio.http.Method;
@@ -20,7 +20,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.time.LocalDateTime;
/**
* MinIO 文件实现类
*
@@ -86,7 +85,7 @@ public class MinioServiceImpl implements FileService, InitializingBean {
*/
@Override
@SneakyThrows
public FileInfo uploadFile(MultipartFile file) {
public FileInfoVO uploadFile(MultipartFile file) {
// 存储桶不存在则创建
createBucketIfAbsent(bucketName);
@@ -120,10 +119,10 @@ public class MinioServiceImpl implements FileService, InitializingBean {
fileUrl = customDomain + '/' + bucketName + "/" + fileName;
}
FileInfo fileInfo=new FileInfo();
fileInfo.setName(fileName);
fileInfo.setUrl(fileUrl);
return fileInfo;
FileInfoVO fileInfoVO = new FileInfoVO();
fileInfoVO.setName(fileName);
fileInfoVO.setUrl(fileUrl);
return fileInfoVO;
}

View File

@@ -8,13 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.converter.DeptConverter;
import com.youlai.system.mapper.SysDeptMapper;
import com.youlai.system.pojo.entity.SysDept;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.query.DeptQuery;
import com.youlai.system.pojo.vo.dept.DeptVO;
import com.youlai.system.pojo.vo.DeptVO;
import com.youlai.system.service.SysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -10,7 +10,7 @@ import com.youlai.system.mapper.SysDictItemMapper;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.query.DictItemPageQuery;
import com.youlai.system.pojo.vo.dict.DictItemPageVO;
import com.youlai.system.pojo.vo.DictItemPageVO;
import com.youlai.system.service.SysDictItemService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -7,14 +7,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.converter.DictTypeConverter;
import com.youlai.system.mapper.SysDictTypeMapper;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.dict.DictTypePageVO;
import com.youlai.system.pojo.vo.DictTypePageVO;
import com.youlai.system.service.SysDictItemService;
import com.youlai.system.service.SysDictTypeService;
import lombok.RequiredArgsConstructor;

View File

@@ -9,15 +9,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.converter.MenuConverter;
import com.youlai.system.mapper.SysMenuMapper;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.bo.RouteBO;
import com.youlai.system.pojo.query.MenuQuery;
import com.youlai.system.pojo.vo.menu.MenuVO;
import com.youlai.system.pojo.vo.menu.ResourceVO;
import com.youlai.system.pojo.vo.menu.RouteVO;
import com.youlai.system.pojo.vo.MenuVO;
import com.youlai.system.pojo.vo.ResourceVO;
import com.youlai.system.pojo.vo.RouteVO;
import com.youlai.system.service.SysMenuService;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;

View File

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.converter.RoleConverter;
import com.youlai.system.mapper.SysRoleMapper;
import com.youlai.system.pojo.entity.SysRole;
@@ -16,11 +16,11 @@ import com.youlai.system.pojo.entity.SysRoleMenu;
import com.youlai.system.pojo.entity.SysUserRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.pojo.vo.RolePageVO;
import com.youlai.system.service.SysRoleMenuService;
import com.youlai.system.service.SysRoleService;
import com.youlai.system.service.SysUserRoleService;
import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.framework.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;

View File

@@ -20,21 +20,21 @@ import com.youlai.system.common.enums.GenderEnum;
import com.youlai.system.listener.UserImportListener;
import com.youlai.system.mapper.SysUserMapper;
import com.youlai.system.pojo.bo.UserBO;
import com.youlai.system.pojo.dto.UserImportDTO;
import com.youlai.system.pojo.vo.UserImportVO;
import com.youlai.system.pojo.entity.SysUser;
import com.youlai.system.pojo.entity.SysUserRole;
import com.youlai.system.pojo.form.UserForm;
import com.youlai.system.pojo.bo.UserAuthInfo;
import com.youlai.system.pojo.bo.UserFormBO;
import com.youlai.system.pojo.query.UserPageQuery;
import com.youlai.system.pojo.vo.user.UserExportVO;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserVO;
import com.youlai.system.pojo.vo.UserExportVO;
import com.youlai.system.pojo.vo.UserInfoVO;
import com.youlai.system.pojo.vo.UserPageVO;
import com.youlai.system.service.SysMenuService;
import com.youlai.system.service.SysRoleService;
import com.youlai.system.service.SysUserRoleService;
import com.youlai.system.service.SysUserService;
import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.framework.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;
@@ -78,7 +78,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
* @return
*/
@Override
public IPage<UserVO> listUserPages(UserPageQuery queryParams) {
public IPage<UserPageVO> listUserPages(UserPageQuery queryParams) {
// 参数构建
int pageNum = queryParams.getPageNum();
@@ -89,7 +89,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
Page<UserBO> userPoPage = this.baseMapper.listUserPages(page, queryParams);
// 实体转换
Page<UserVO> userVoPage = userConverter.po2Vo(userPoPage);
Page<UserPageVO> userVoPage = userConverter.po2Vo(userPoPage);
return userVoPage;
}
@@ -232,34 +232,34 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/**
* 导入用户
*
* @param userImportDTO
* @param userImportVO
* @return
*/
@Transactional
@Override
public String importUsers(UserImportDTO userImportDTO) throws IOException {
public String importUsers(UserImportVO userImportVO) throws IOException {
Long deptId = userImportDTO.getDeptId();
List<Long> roleIds = Arrays.stream(userImportDTO.getRoleIds().split(","))
Long deptId = userImportVO.getDeptId();
List<Long> roleIds = Arrays.stream(userImportVO.getRoleIds().split(","))
.map(roleId -> Convert.toLong(roleId))
.collect(Collectors.toList());
InputStream inputStream = userImportDTO.getFile().getInputStream();
InputStream inputStream = userImportVO.getFile().getInputStream();
ExcelReaderBuilder excelReaderBuilder = EasyExcel.read(inputStream, UserImportDTO.UserItem.class, userImportListener);
ExcelReaderBuilder excelReaderBuilder = EasyExcel.read(inputStream, UserImportVO.UserItem.class, userImportListener);
ExcelReaderSheetBuilder sheet = excelReaderBuilder.sheet();
List<UserImportDTO.UserItem> list = sheet.doReadSync();
List<UserImportVO.UserItem> list = sheet.doReadSync();
Assert.isTrue(CollectionUtil.isNotEmpty(list), "未检测到任何数据");
// 有效数据集合
List<UserImportDTO.UserItem> validDataList = list.stream()
List<UserImportVO.UserItem> validDataList = list.stream()
.filter(item -> StrUtil.isNotBlank(item.getUsername()))
.collect(Collectors.toList());
Assert.isTrue(CollectionUtil.isNotEmpty(validDataList), "未检测到有效数据");
long distinctCount = validDataList.stream()
.map(UserImportDTO.UserItem::getUsername)
.map(UserImportVO.UserItem::getUsername)
.distinct()
.count();
Assert.isTrue(validDataList.size() == distinctCount, "导入数据中有重复的用户名,请检查!");
@@ -268,7 +268,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
StringBuilder errMsg = new StringBuilder();
for (int i = 0; i < validDataList.size(); i++) {
UserImportDTO.UserItem userItem = validDataList.get(i);
UserImportVO.UserItem userItem = validDataList.get(i);
String username = userItem.getUsername();
if (StrUtil.isBlank(username)) {
@@ -339,7 +339,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
* @return
*/
@Override
public UserLoginVO getUserLoginInfo() {
public UserInfoVO getUserLoginInfo() {
// 登录用户entity
SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getUsername, SecurityUtils.getUser().getUsername())
@@ -350,17 +350,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
)
);
// entity->VO
UserLoginVO userLoginVO = userConverter.entity2LoginUser(user);
UserInfoVO userInfoVO = userConverter.entity2LoginUser(user);
// 用户角色集合
Set<String> roles = SecurityUtils.getRoles();
userLoginVO.setRoles(roles);
userInfoVO.setRoles(roles);
// 用户权限集合
Set<String> perms = (Set<String>)redisTemplate.opsForValue().get("USER_PERMS:" + user.getId());
userLoginVO.setPerms(perms);
userInfoVO.setPerms(perms);
return userLoginVO;
return userInfoVO;
}