refactor: 项目结构优化
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动填充数据库创建人、创建时间、更新人、更新时间
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = "注销")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class TokenResult {
|
||||
public class LoginResult {
|
||||
|
||||
private String accessToken;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.youlai.system.pojo.vo.menu;
|
||||
package com.youlai.system.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user