From d33d05773d3a28d63693b0bad31189f035a1d826 Mon Sep 17 00:00:00 2001 From: liucong <18963733660@163.com> Date: Fri, 31 Dec 2021 15:20:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9constantcode=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 11 +-- .../base/exception/PlatformException.java | 11 +-- .../platform/auth/base/result/Result.java | 10 +-- .../auth/base/result/UploadResult.java | 2 +- .../auth/config/WebSecurityConfig.java | 5 +- .../platform/auth/constant/ConstantEnum.java | 72 +++++++++++-------- .../auth/filter/JWTAuthenticationFilter.java | 7 +- .../platform/auth/filter/JWTLoginFilter.java | 7 +- src/main/resources/application-dev.yml | 3 + 9 files changed, 69 insertions(+), 59 deletions(-) diff --git a/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java b/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java index 80b8ac7..db0d836 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java +++ b/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java @@ -2,6 +2,7 @@ package org.micai.platform.auth.base.exception; import lombok.extern.slf4j.Slf4j; import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.constant.ConstantEnum; import org.springframework.dao.DuplicateKeyException; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.annotation.ControllerAdvice; @@ -26,31 +27,31 @@ public class GlobalExceptionHandler { @ExceptionHandler(NoHandlerFoundException.class) public Result handlerNoFoundException(Exception e) { log.error(e.getMessage(), e); - return new Result("404", "路径不存在,请检查路径是否正确"); + return new Result(ConstantEnum.NOT_FOUND); } @ExceptionHandler(DuplicateKeyException.class) public Result handleDuplicateKeyException(DuplicateKeyException e){ log.error(e.getMessage(), e); - return new Result("数据库中已存在该记录"); + return new Result(ConstantEnum.DUPLICATE_KEY); } @ExceptionHandler(ConnectException.class) public Result connectException(ConnectException e){ log.error(e.getMessage(), e); - return new Result("系统调用异常"); + return new Result(ConstantEnum.REQUEST_TIMEOUT); } @ExceptionHandler(ResourceAccessException.class) public Result connectException(ResourceAccessException e){ log.error(e.getMessage(), e); - return new Result("系统之间调用异常"); + return new Result(ConstantEnum.RESOURCE_ACCESS); } @ExceptionHandler(value = AccessDeniedException.class) @ResponseBody public Result accessDeniedException(AccessDeniedException e) { log.error(e.getMessage(), e); - return new Result("Token非法参数异常"); + return new Result(ConstantEnum.ACCESS_DENIED); } } diff --git a/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java b/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java index 2e5c185..126848c 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java +++ b/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java @@ -15,18 +15,13 @@ import org.micai.platform.auth.constant.ConstantEnum; public class PlatformException extends RuntimeException{ private static final long serialVersionUID = 1L; - private String errorCode; + private Integer errorCode; private String errorMessage; public PlatformException() { super(); } - public PlatformException(String errorMessage) { - super(errorMessage); - this.errorMessage = errorMessage; - } - public PlatformException(Throwable cause) { super(cause); } @@ -36,13 +31,13 @@ public class PlatformException extends RuntimeException{ this.errorMessage = msg; } - public PlatformException(String code, String msg) { + public PlatformException(Integer code, String msg) { super(msg); this.errorCode = code; this.errorMessage = msg; } - public PlatformException(String errorCode, String errorMessage, Throwable cause) { + public PlatformException(Integer errorCode, String errorMessage, Throwable cause) { super("[" + errorCode + "]" + errorMessage, cause); this.errorCode = errorCode; this.errorMessage = errorMessage; diff --git a/src/main/java/org/micai/platform/auth/base/result/Result.java b/src/main/java/org/micai/platform/auth/base/result/Result.java index bebed90..966f8cf 100644 --- a/src/main/java/org/micai/platform/auth/base/result/Result.java +++ b/src/main/java/org/micai/platform/auth/base/result/Result.java @@ -8,25 +8,21 @@ import org.micai.platform.auth.constant.ConstantEnum; */ @Data public class Result { - private String code; + private Integer code; private String message; private Object data; public Result() {} - public Result(String code, String message) { + public Result(Integer code, String message) { this.code = code; this.message = message; } - public Result(String code, String message, Object data) { + public Result(Integer code, String message, Object data) { this(code, message); this.data = data; } - public Result(String message) { - this.message = message; - } - public Result(ConstantEnum constantEnum) { this.code = constantEnum.getCode(); this.message = constantEnum.getMessage(); diff --git a/src/main/java/org/micai/platform/auth/base/result/UploadResult.java b/src/main/java/org/micai/platform/auth/base/result/UploadResult.java index 2f5ed01..43cfba2 100644 --- a/src/main/java/org/micai/platform/auth/base/result/UploadResult.java +++ b/src/main/java/org/micai/platform/auth/base/result/UploadResult.java @@ -17,7 +17,7 @@ public class UploadResult{ /** * 上传状态 */ - private String status; + private Integer status; /** * 提示文字 diff --git a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java index 64ad9bf..2827b96 100644 --- a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java +++ b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java @@ -69,6 +69,9 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${sign.key}") private String signKey; + @Value("${expiration.time}") + private int expirationTime; + /** * 设置 HTTP 验证规则 * @param http @@ -88,7 +91,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .and() // .exceptionHandling().accessDeniedHandler(customAccessDeniedHandler) // 自定义访问失败处理器 // .and() - .addFilter(new JWTLoginFilter(authenticationManager(), signKey)) + .addFilter(new JWTLoginFilter(authenticationManager(), signKey,expirationTime)) .addFilter(new JWTAuthenticationFilter(authenticationManager(), signKey)) .logout() // 默认注销行为为logout,可以通过下面的方式来修改 .logoutUrl("/logout") diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java index 28ce06f..0f0e8e3 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java @@ -1,5 +1,7 @@ package org.micai.platform.auth.constant; +import javax.servlet.http.HttpServletResponse; + /** * @Author liuCong * @Date 2021/12/30 10:15 @@ -8,77 +10,87 @@ package org.micai.platform.auth.constant; */ public enum ConstantEnum { - SUCCESS("10000", "成功"), + SUCCESS(HttpServletResponse.SC_OK, "成功"), + + FAIL(HttpServletResponse.SC_BAD_REQUEST, "失败"), + + TOKEN_ERROR(HttpServletResponse.SC_FORBIDDEN, "无效TOKEN, 请重新登录!"), + + TOKEN_MISS(HttpServletResponse.SC_FORBIDDEN, "token 丢失"), + + USER_CODE_ERROR(HttpServletResponse.SC_FORBIDDEN, "用户名或密码错误"), + + NOT_FOUND(HttpServletResponse.SC_NOT_FOUND, "路径不存在,请检查路径是否正确"), - FAIL("10001", "失败"), + REQUEST_TIMEOUT(HttpServletResponse.SC_REQUEST_TIMEOUT, "系统调用异常"), - TOKEN_ERROR("10002", "无效TOKEN, 请重新登录!"), + USER_OLD_PASSWORD(10005,"原密码不正确"), - TOKEN_MISS("10003", "token 丢失"), + USER_FREEZE(10007,"用户已冻结"), - USER_CODE_ERROR("10004", "用户名或密码错误"), + REDIS_CONNECT_ERROR(10008,"redis 连接异常"), - USER_OLD_PASSWORD("10005","原密码不正确"), + PARAM_ERROR(10009, "参数为空"), - USER_FREEZE("10007","用户已冻结"), + VALIDATION_CODE_ERROR(10010, "验证码失效,请重新获取"), - REDIS_CONNECT_ERROR("10008","redis 连接异常"), + USER_EXIST(10011, "该用户已存在"), - PARAM_ERROR("10009", "参数为空"), + UPDATE_ERROR(10012, "更新失败,请重试"), - VALIDATION_CODE_ERROR("10010", "验证码失效,请重新获取"), + NO_FILE(10013, "未包含文件上传域"), - USER_EXIST("10011", "该用户已存在"), + TYPE(10014, "不允许的文件格式"), - UPDATE_ERROR("10012", "更新失败,请重试"), + SIZE(10015, "文件大小超出限制,最大支持2Mb"), - NO_FILE("10013", "未包含文件上传域"), + EN_TYPE(10016, "请求类型ENTYPE错误"), - TYPE("10014", "不允许的文件格式"), + REQUEST(10017, "上传请求异常"), - SIZE("10015", "文件大小超出限制,最大支持2Mb"), + IO(10018, "IO异常"), - EN_TYPE("10016", "请求类型ENTYPE错误"), + DIR(10019, "目录创建失败"), - REQUEST("10017", "上传请求异常"), + UNKNOWN(10020, "未知错误"), - IO("10018", "IO异常"), + NO_ROLE(10021, "没有角色信息"), - DIR("10019", "目录创建失败"), + NO_ALIYUN_CONFIG(10022, "请先在后台设置阿里云配置信息"), - UNKNOWN("10020", "未知错误"), + NO_PERMISSION(10023, "没有权限信息"), - NO_ROLE("10021", "没有角色信息"), + SIGNATURE_EX(10024, "签名错误"), - NO_ALIYUN_CONFIG("10022", "请先在后台设置阿里云配置信息"), + ILLEGAL_ARG(10025, "非法错误"), - NO_PERMISSION("10023", "没有权限信息"), + EXPIRED_JWT(10026, "token过期,请重新登录"), - SIGNATURE_EX("10024", "签名错误"), + DUPLICATE_KEY(10027, "数据库中已存在该记录"), - ILLEGAL_ARG("10025", "非法错误"), + RESOURCE_ACCESS(10028, "系统之间调用异常"), - EXPIRED_JWT("10026", "token过期,请重新登录"); + ACCESS_DENIED(HttpServletResponse.SC_FORBIDDEN, "Token非法参数异常"); - private String code; + private Integer code; private String message; - ConstantEnum(String code, String message) { + ConstantEnum(Integer code, String message) { this.code = code; this.message = message; } - public String getCode() { + public int getCode() { return code; } - public void setCode(String code) { + public void setCode(Integer code) { this.code = code; } diff --git a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java b/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java index d9870e5..1200420 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java @@ -19,10 +19,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 自定义JWT认证过滤器 @@ -82,7 +79,7 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { // 设置签发时间 calendar.setTime(new Date()); // 设置过期时间 - calendar.add(Calendar.MINUTE, 15);// 5分钟 + calendar.add(Calendar.MINUTE, Long.bitCount(expirationTime)); Date time = calendar.getTime(); String refreshToken = Jwts.builder() .setSubject(claims.getSubject()) diff --git a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java index 1e986b5..27ae6c1 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java @@ -39,10 +39,13 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; private final String signKey; + + private final int expirationTime; - public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey) { + public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey, int expirationTime) { this.authenticationManager = authenticationManager; this.signKey = signKey; + this.expirationTime = expirationTime; } /** @@ -125,7 +128,7 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { // 设置签发时间 calendar.setTime(new Date()); // 设置过期时间 - calendar.add(Calendar.MINUTE, 120);// 5分钟 + calendar.add(Calendar.MINUTE, expirationTime);// 5分钟 Date time = calendar.getTime(); String rolesStr = JSON.toJSONString(roleList); token = Jwts.builder() diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e6c2616..9203495 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,4 +13,7 @@ spring: #签名key sign: key: spring-security-@Jwt!&Secret^# + +expiration: + time: 15 password: root \ No newline at end of file -- Gitee From a72d3dc70868da49a87aca2e90ecc388149abe6d Mon Sep 17 00:00:00 2001 From: liucong <18963733660@163.com> Date: Wed, 12 Jan 2022 13:53:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E4=BA=86security?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=202.=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=AA=8C=E8=AF=81=E7=A0=81=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD,=E4=BB=A5=E5=8F=8A=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=A0=81=E8=BF=87=E6=BB=A4=E5=99=A8=203.swagger=20=E5=BF=BD?= =?UTF-8?q?=E7=95=A5Jwt=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/exception/SecurityException.java | 40 ++++++++++++++ .../micai/platform/auth/bo/UserQueryBo.java | 19 ++++++- .../auth/config/WebSecurityConfig.java | 55 ++++++++++++------- .../platform/auth/constant/ConstantCode.java | 37 +++++++++++++ .../platform/auth/constant/ConstantEnum.java | 6 +- .../auth/controller/ImageCodeController.java | 47 ++++++++++++++++ .../controller/JwtExceptionController.java | 6 +- .../auth/controller/UserController.java | 4 +- .../auth/filter/ImageCodeValidateFilter.java | 52 ++++++++++++++++++ .../platform/auth/filter/JWTLoginFilter.java | 41 +++++++------- .../CustomAuthenticationFailureHandler.java | 34 ++++++++++++ ...sInterceptor.java => PlusInterceptor.java} | 15 +++-- .../CustomAuthenticationProvider.java | 16 +++--- .../service/impl/PermissionServiceImpl.java | 8 +-- .../auth/service/impl/RoleServiceImpl.java | 8 +-- .../auth/service/impl/SysMenuServiceImpl.java | 8 +-- .../auth/service/impl/UserServiceImpl.java | 8 +-- .../org/micai/platform/auth/utils/MD5.java | 2 +- src/main/resources/application-dev.yml | 16 +++++- 19 files changed, 341 insertions(+), 81 deletions(-) create mode 100644 src/main/java/org/micai/platform/auth/base/exception/SecurityException.java create mode 100644 src/main/java/org/micai/platform/auth/controller/ImageCodeController.java create mode 100644 src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java create mode 100644 src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java rename src/main/java/org/micai/platform/auth/interceptor/{MybatisPlusInterceptor.java => PlusInterceptor.java} (31%) diff --git a/src/main/java/org/micai/platform/auth/base/exception/SecurityException.java b/src/main/java/org/micai/platform/auth/base/exception/SecurityException.java new file mode 100644 index 0000000..eeb8770 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/base/exception/SecurityException.java @@ -0,0 +1,40 @@ +package org.micai.platform.auth.base.exception; + +import org.micai.platform.auth.constant.ConstantEnum; +import org.springframework.security.core.AuthenticationException; + +/** + * @Author liuCong + * @Date 2022/1/4 17:18 + * @ClassName SecurityException + * @Description + */ +public class SecurityException extends AuthenticationException { + + private Integer errorCode; + private String errorMessage; + + public SecurityException(String msg, Throwable cause) { + super(msg, cause); + } + + public SecurityException(String msg) { + super(msg); + } + + public SecurityException(Integer code, String msg) { + super(msg); + this.errorCode = code; + this.errorMessage = msg; + } + + public SecurityException(Integer errorCode, String errorMessage, Throwable cause) { + super("[" + errorCode + "]" + errorMessage, cause); + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } + + public SecurityException(ConstantEnum constantEnum) { + this(constantEnum.getCode(), constantEnum.getMessage()); + } +} diff --git a/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java b/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java index 052c8de..2ebb498 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java +++ b/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java @@ -1,11 +1,26 @@ package org.micai.platform.auth.bo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; @Data -public class UserQueryBo { +@ApiModel(value = "用户登录bo") +@Accessors(chain = true) +public class UserQueryBo implements Serializable { + + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "用户名") private String username; + + @ApiModelProperty(value = "密码") private String password; - private String code; + + @ApiModelProperty(value = "图形验证码") + private String imageCode; + } diff --git a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java index 6ac0845..284d26e 100644 --- a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java +++ b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java @@ -1,7 +1,10 @@ package org.micai.platform.auth.config; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.filter.ImageCodeValidateFilter; import org.micai.platform.auth.filter.JWTAuthenticationFilter; import org.micai.platform.auth.filter.JWTLoginFilter; +import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; import org.micai.platform.auth.handler.Http401AuthenticationEntryPoint; import org.micai.platform.auth.provider.CustomAuthenticationProvider; import org.micai.platform.auth.service.*; @@ -19,6 +22,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** * SpringSecurity的配置 * 通过SpringSecurity的配置,将JWTLoginFilter,JWTAuthenticationFilter组合在一起 + * * @author zhaoxinguo on 2017/9/13. */ @Configuration @@ -32,18 +36,17 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private static final String[] AUTH_WHITELIST = { // -- register url "/users/signup", - "/users/addTask", "/upload/store", + // -- swagger ui "/v2/api-docs", "/swagger-resources", "/swagger-resources/**", - "/configuration/ui", - "/configuration/security", "/webjars/**", - //"classpath:/META-INF/resources/webjars/", - "/doc.html" - // "classpath:/META-INF/resources/" + "/doc.html", + + // -- image code + "/image/code" // other public endpoints of your API may be appended to this array }; @@ -65,33 +68,46 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private PermissionService permissionService; - @Value("${sign.key}") + @Autowired + private CustomAuthenticationFailureHandler customAuthenticationFailureHandler; + + @Autowired + private ImageCodeValidateFilter imageCodeValidateFilter; + + @Value("${jwt.sign.key}") private String signKey; - @Value("${expiration.time}") + @Value("${jwt.expiration.time}") private int expirationTime; /** * 设置 HTTP 验证规则 + * * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { - http.cors().and().csrf().disable() - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() - .authorizeRequests() - .antMatchers(AUTH_WHITELIST).permitAll() - .anyRequest().authenticated() // 所有请求需要身份认证 + http + + .cors().and().csrf().disable()//禁止跨域 + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)//session管理机制: 不会保存session状态 + .and() - .exceptionHandling() - .authenticationEntryPoint( - new Http401AuthenticationEntryPoint("Basic realm=\"MyApp\"")) + .exceptionHandling()// 自定义异常处理 + .authenticationEntryPoint(new Http401AuthenticationEntryPoint(ConstantCode.BASE_REALM)) // 未登录处理 +// .and()//权限不足处理.exceptionHandling().accessDeniedHandler(customAccessDeniedHandler) // 自定义访问失败处理器 + .and() -// .exceptionHandling().accessDeniedHandler(customAccessDeniedHandler) // 自定义访问失败处理器 -// .and() - .addFilter(new JWTLoginFilter(authenticationManager(), signKey,expirationTime)) + // 自定义过滤器 + .addFilterBefore(imageCodeValidateFilter,JWTLoginFilter.class) + .addFilter(new JWTLoginFilter(authenticationManager(), signKey, expirationTime, customAuthenticationFailureHandler)) .addFilter(new JWTAuthenticationFilter(authenticationManager(), signKey)) + .authorizeRequests()// 验证策略 + .antMatchers(AUTH_WHITELIST).permitAll()// 无需验证路径 + .anyRequest().authenticated() // 所有请求需要身份认证 + + .and() .logout() // 默认注销行为为logout,可以通过下面的方式来修改 .logoutUrl("/logout") .logoutSuccessUrl("/login")// 设置注销成功后跳转页面,默认是跳转到登录页面; @@ -101,6 +117,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { /** * 该方法是登录的时候会进入 + * * @param auth * @throws Exception */ diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java index df7f5a0..059542d 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java @@ -54,6 +54,16 @@ public class ConstantCode { */ public static final int INT_TEN = 10; + /** + * 100 + */ + public static final int INT_ONE_HUNDRED = 100; + + /** + * 200 + */ + public static final int INT_TWO_HUNDRED = 200; + /** * 角色前缀 */ @@ -100,6 +110,12 @@ public class ConstantCode { public static final String HEIGHT = "height"; + /** + * SESSION_KEY_IMAGE_CODE + */ + public static final String SESSION_KEY = "SESSION_KEY_IMAGE_CODE"; + + /** * 文件存储-缩略图目录 @@ -218,4 +234,25 @@ public class ConstantCode { public static final String STORAGE_MAX_WIDTH = "storage_max_width"; public static final String THUMBNAIL_POST_SIZE = "thumbnail_post_size"; + + + /** + * 图片code + */ + public static final String IMAGE_CODE = "imageCode"; + + /** + * BASE_REALM + */ + public static final String BASE_REALM = "Basic realm=\"MyApp\""; + + /** + * username + */ + public static final String USERNAME = "username"; + + /** + * password + */ + public static final String PASSWORD = "password"; } diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java index 0f0e8e3..3842dfc 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java @@ -18,7 +18,7 @@ public enum ConstantEnum { TOKEN_MISS(HttpServletResponse.SC_FORBIDDEN, "token 丢失"), - USER_CODE_ERROR(HttpServletResponse.SC_FORBIDDEN, "用户名或密码错误"), + USER_CODE_ERROR(HttpServletResponse.SC_UNAUTHORIZED, "用户名或密码错误"), NOT_FOUND(HttpServletResponse.SC_NOT_FOUND, "路径不存在,请检查路径是否正确"), @@ -70,7 +70,9 @@ public enum ConstantEnum { RESOURCE_ACCESS(10028, "系统之间调用异常"), - ACCESS_DENIED(HttpServletResponse.SC_FORBIDDEN, "Token非法参数异常"); + ACCESS_DENIED(HttpServletResponse.SC_FORBIDDEN, "Token非法参数异常"), + + IMAGE_ERROR(10029, "验证码为空或者验证码输入有误"); diff --git a/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java b/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java new file mode 100644 index 0000000..64bbe2b --- /dev/null +++ b/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java @@ -0,0 +1,47 @@ +package org.micai.platform.auth.controller; + +import cn.hutool.captcha.CaptchaUtil; +import cn.hutool.captcha.LineCaptcha; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.constant.ConstantCode; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @Author liuCong + * @Date 2022/1/4 10:53 + * @ClassName ImageCodeController + * @Description + */ +@Controller +@Api(tags = "图形验证码", value = "图形验证码") +@RequestMapping("/image") +@Slf4j +public class ImageCodeController extends BaseController { + + + @GetMapping("/code") + @ApiOperation(value = "获取图形验证码", notes = "获取图形验证码") + public void getImage(HttpServletRequest request, HttpServletResponse response) { + try { + LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(ConstantCode.INT_TWO_HUNDRED, ConstantCode.INT_ONE_HUNDRED); + String code = lineCaptcha.getCode(); + log.info("code info:{}", code); + request.getSession().setAttribute(ConstantCode.SESSION_KEY, code); + ServletOutputStream outputStream = response.getOutputStream(); + lineCaptcha.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + log.error("error info:", e); + } + } + +} diff --git a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java b/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java index bb5a61a..7777f5e 100644 --- a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java +++ b/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java @@ -4,12 +4,12 @@ import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.SignatureException; import io.jsonwebtoken.UnsupportedJwtException; -import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.constant.ConstantEnum; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; * @Version 1.0 */ @RestController -@Api(tags = "Jwt异常处理类",value = "Jwt异常处理类") +@ApiIgnore @Slf4j public class JwtExceptionController { diff --git a/src/main/java/org/micai/platform/auth/controller/UserController.java b/src/main/java/org/micai/platform/auth/controller/UserController.java index 92b720f..95a8205 100644 --- a/src/main/java/org/micai/platform/auth/controller/UserController.java +++ b/src/main/java/org/micai/platform/auth/controller/UserController.java @@ -39,7 +39,7 @@ public class UserController extends BaseController { public Result signup(@RequestBody User user) { User bizUser = userService.findByUsername(user.getUsername()); if(null != bizUser){ - throw new PlatformException("用户已经存在"); + throw new PlatformException(ConstantEnum.USER_EXIST); } /*user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword()).getBytes()));*/ user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); @@ -51,7 +51,7 @@ public class UserController extends BaseController { * 获取用户列表 * @return */ - @ApiOperation(value = "获取用户列表",notes = "获取用户列表") + @ApiOperation(value = "获取用户列表old",notes = "获取用户列表old") @GetMapping("/userList") @PreAuthorize("hasAnyAuthority('admin')") public Map userList(){ diff --git a/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java b/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java new file mode 100644 index 0000000..3cd8d7a --- /dev/null +++ b/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java @@ -0,0 +1,52 @@ +package org.micai.platform.auth.filter; + +import cn.hutool.core.util.ObjectUtil; +import org.micai.platform.auth.base.exception.SecurityException; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @Author liuCong + * @Date 2022/1/4 11:25 + * @ClassName ImageCodeValidateFilter + * @Description + */ +@Component +public class ImageCodeValidateFilter extends OncePerRequestFilter { + @Autowired + private CustomAuthenticationFailureHandler customAuthenticationFailureHandler; + + @Value("${image.code.flag}") + private boolean imageCodeFlag; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + try { + if (imageCodeFlag){ + String code = request.getParameter(ConstantCode.IMAGE_CODE); + if (ObjectUtil.isEmpty(code)) { + throw new SecurityException(ConstantEnum.IMAGE_ERROR); + } + String imageCode = (String) request.getSession().getAttribute(ConstantCode.SESSION_KEY); + if (ObjectUtil.isEmpty(imageCode) && !imageCode.equals(code)){ + throw new SecurityException(ConstantEnum.IMAGE_ERROR); + } + } + } catch (SecurityException e) { + customAuthenticationFailureHandler.onAuthenticationFailure(request,response,e); + } + + filterChain.doFilter(request,response); + } +} diff --git a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java index 27ae6c1..366582b 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java @@ -5,11 +5,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.bo.UserQueryBo; import org.micai.platform.auth.constant.ConstantCode; import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.bo.UserQueryBo; -import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -41,11 +41,15 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { private final String signKey; private final int expirationTime; - - public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey, int expirationTime) { + + private final CustomAuthenticationFailureHandler customAuthenticationFailureHandler; + + public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey, int expirationTime, + CustomAuthenticationFailureHandler customAuthenticationFailureHandler) { this.authenticationManager = authenticationManager; this.signKey = signKey; this.expirationTime = expirationTime; + this.customAuthenticationFailureHandler = customAuthenticationFailureHandler; } /** @@ -56,32 +60,29 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { * @throws AuthenticationException */ @Override - public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) throws AuthenticationException { + public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) { Authentication authenticate = null; try { - UserQueryBo userQueryBo = new ObjectMapper().readValue(req.getInputStream(), UserQueryBo.class); + Map requestMap = new ObjectMapper().readValue(req.getInputStream(), HashMap.class); + UserQueryBo userQueryBo = new UserQueryBo() + .setUsername(requestMap.get(ConstantCode.USERNAME)) + .setPassword(requestMap.get(ConstantCode.PASSWORD)); authenticate = authenticationManager.authenticate( new UsernamePasswordAuthenticationToken( userQueryBo.getUsername(), userQueryBo.getPassword(), new ArrayList<>()) ); - } catch (IOException e) { - log.error("IOException:", e); - } catch (PlatformException e) { + }catch (AuthenticationException e) { try { - // 捕获权限异常返回到前端的body里面 - res.setStatus(HttpServletResponse.SC_FORBIDDEN); - res.setContentType(ConstantCode.CONTENT_TYPE_JSON); - Result result = new Result(e.getErrorCode(),e.getErrorMessage()); - PrintWriter out = res.getWriter(); - out.write(new ObjectMapper().writeValueAsString(result)); - out.flush(); - out.close(); - } catch (IOException ee) { - log.error("IOException:", ee); + customAuthenticationFailureHandler.onAuthenticationFailure(req,res,e); + } catch (IOException ex) { + log.error("IOException:", ex); + } catch (ServletException ex) { + log.error("ServletException:", ex); } } catch (Exception e) { + log.error("Exception:", e); try { // 捕获权限异常返回到前端的body里面 res.setStatus(HttpServletResponse.SC_BAD_REQUEST); diff --git a/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java b/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java new file mode 100644 index 0000000..765dc95 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java @@ -0,0 +1,34 @@ +package org.micai.platform.auth.handler; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.constant.ConstantCode; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.AuthenticationFailureHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * @Author liuCong + * @Date 2022/1/4 17:20 + * @ClassName CustomAuthenticationFailureHandler + * @Description + */ +@Component(value = "customAuthenticationFailureHandler") +public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler { + @Override + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType(ConstantCode.CONTENT_TYPE_JSON); + Result result = new Result(HttpServletResponse.SC_UNAUTHORIZED,exception.getMessage()); + PrintWriter out = response.getWriter(); + out.write(new ObjectMapper().writeValueAsString(result)); + out.flush(); + out.close(); + } +} diff --git a/src/main/java/org/micai/platform/auth/interceptor/MybatisPlusInterceptor.java b/src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java similarity index 31% rename from src/main/java/org/micai/platform/auth/interceptor/MybatisPlusInterceptor.java rename to src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java index 8678699..fa3787e 100644 --- a/src/main/java/org/micai/platform/auth/interceptor/MybatisPlusInterceptor.java +++ b/src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java @@ -1,7 +1,11 @@ package org.micai.platform.auth.interceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; /** * @Author liuCong @@ -9,12 +13,13 @@ import org.springframework.context.annotation.Bean; * @ClassName MybatisPlusInterceptor * @Description */ -public class MybatisPlusInterceptor { +@Configuration +public class PlusInterceptor { @Bean - public com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor mybatisPlusInterceptor() { - com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor interceptor = new com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor(); - interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } diff --git a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java index e95cbe2..1700b89 100644 --- a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java +++ b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java @@ -3,10 +3,10 @@ package org.micai.platform.auth.provider; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.SecurityException; import org.micai.platform.auth.constant.ConstantCode; import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.entity.*; -import org.micai.platform.auth.base.exception.PlatformException; import org.micai.platform.auth.service.*; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -74,33 +74,33 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { /*UserDetails userDetails = userDetailsService.loadUserByUsername(name);*/ User userDetails = userService.findByUsername(name); if (ObjectUtil.isEmpty(userDetails)) { - throw new PlatformException(ConstantEnum.USER_CODE_ERROR); + throw new SecurityException(ConstantEnum.USER_CODE_ERROR); } if (!bCryptPasswordEncoder.matches(password, userDetails.getPassword())) { - throw new PlatformException(ConstantEnum.USER_CODE_ERROR); + throw new SecurityException(ConstantEnum.USER_CODE_ERROR); } //获取用户权限 List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,userDetails.getId())); if (ObjectUtil.isEmpty(userRoleList)){ - throw new PlatformException(ConstantEnum.NO_ROLE); + throw new SecurityException(ConstantEnum.NO_ROLE); } List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); List roleList = roleService.list(new QueryWrapper().lambda() .in(Role::getId,roleIdList).eq(Role::getStatus,ConstantCode.STR_Z_ONE)); if (ObjectUtil.isEmpty(roleList)){ - throw new PlatformException(ConstantEnum.NO_ROLE); + throw new SecurityException(ConstantEnum.NO_ROLE); } List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() .in(RolePermission::getRoleId,roleIdList)); if (ObjectUtil.isEmpty(rolePermissionList)){ - throw new PlatformException(ConstantEnum.NO_PERMISSION); + throw new SecurityException(ConstantEnum.NO_PERMISSION); } List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); List permissionList = permissionService.list(new QueryWrapper().lambda() .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); if (ObjectUtil.isEmpty(permissionList)){ - throw new PlatformException(ConstantEnum.NO_PERMISSION); + throw new SecurityException(ConstantEnum.NO_PERMISSION); } StringBuilder roleStr = new StringBuilder(); @@ -113,7 +113,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { StringBuilder permissionStr = new StringBuilder(); for (int i = 0; i < permissionList.size(); i++) { permissionStr.append(permissionList.get(i).getPermissionCode()); - if (i != (roleList.size() - 1 )){ + if (i != (roleList.size() - 1)){ permissionStr.append(ConstantCode.SEPARATOR); } } diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java index 0c7c3b5..85a86b1 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java @@ -68,10 +68,10 @@ public class PermissionServiceImpl extends ServiceImpl implements Ro public void saveRole(RoleSaveBo bo) throws Exception { Role role = BeanUtil.copyProperties(bo, Role.class); UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - role.setRoleCode(RandomUtil.randomString(ConstantCode.INT_TEN)); - role.setCreateUserId(authentication.getId()); - role.setUpdateUserId(authentication.getId()); - role.setStatus(ConstantCode.STR_Z_ONE); + role.setRoleCode(RandomUtil.randomString(ConstantCode.INT_TEN)) + .setCreateUserId(authentication.getId()) + .setUpdateUserId(authentication.getId()) + .setStatus(ConstantCode.STR_Z_ONE); int i = roleMapper.insert(role); if (ConstantCode.INT_ONE != i){ throw new PlatformException(ConstantEnum.UPDATE_ERROR); diff --git a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java index f12f6ea..8edcb2d 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java @@ -106,10 +106,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl public void saveMenu(MenuSaveBo bo) throws Exception { SysMenu sysMenu = BeanUtil.copyProperties(bo, SysMenu.class); UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - sysMenu.setMenuCode(RandomUtil.randomString(ConstantCode.INT_TEN)); - sysMenu.setCreateUserId(authentication.getId()); - sysMenu.setUpdateUserId(authentication.getId()); - sysMenu.setStatus(ConstantCode.STR_Z_ONE); + sysMenu.setMenuCode(RandomUtil.randomString(ConstantCode.INT_TEN)) + .setCreateUserId(authentication.getId()) + .setUpdateUserId(authentication.getId()) + .setStatus(ConstantCode.STR_Z_ONE); int i = sysMenuMapper.insert(sysMenu); if (ConstantCode.INT_ONE != i){ throw new PlatformException(ConstantEnum.UPDATE_ERROR); diff --git a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java index d85bc90..a81eed7 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java @@ -95,10 +95,10 @@ public class UserServiceImpl extends ServiceImpl implements Us //生成7位随机密码 String password = RandomUtil.randomString(ConstantCode.INT_SEVEN); String encodePass = bCryptPasswordEncoder.encode(password); - user.setPassword(encodePass); - user.setCreateUserId(id); - user.setUpdateUserId(id); - user.setStatus(ConstantCode.STR_Z_ONE); + user.setPassword(encodePass) + .setCreateUserId(id) + .setUpdateUserId(id) + .setStatus(ConstantCode.STR_Z_ONE); int i = userMapper.insert(user); if (ConstantCode.INT_ONE != i){ throw new PlatformException(ConstantEnum.UPDATE_ERROR); diff --git a/src/main/java/org/micai/platform/auth/utils/MD5.java b/src/main/java/org/micai/platform/auth/utils/MD5.java index 9399672..5a3ecc8 100644 --- a/src/main/java/org/micai/platform/auth/utils/MD5.java +++ b/src/main/java/org/micai/platform/auth/utils/MD5.java @@ -47,7 +47,7 @@ public class MD5 { try { code = MessageDigest.getInstance("md5").digest(bytes); } catch (NoSuchAlgorithmException e) { - throw new PlatformException(e.getMessage()); + throw new PlatformException(e); } BigInteger bi = new BigInteger(code); return bi.abs().toString(32).toUpperCase(); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index cf001c8..5ce3322 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -10,6 +10,16 @@ spring: username: root password: root -#签名key -sign: - key: spring-security-@Jwt!&Secret^# \ No newline at end of file +#jwt相关配置 +jwt: + #sign key + sign: + key: spring-security-@Jwt!&Secret^# + #jwt 过期时间 + expiration: + time: 15 + +#登录是否开启图形验证码功能 +image: + code: + flag: true \ No newline at end of file -- Gitee From 8d66298ccb0cdfa8456c864ea35ea4b08bda46d0 Mon Sep 17 00:00:00 2001 From: liucong <18963733660@163.com> Date: Fri, 14 Jan 2022 11:00:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E8=A1=A8=E7=BB=93?= =?UTF-8?q?=E6=9E=84=20=E5=B9=B6=E4=BF=AE=E6=94=B9=E8=A1=A8=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1pwd=E5=92=8C=E8=A1=A8sql=202.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=BC=82=E5=B8=B8=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=20(=E5=BC=82=E5=B8=B8=E5=90=8D=E7=A7=B0=E5=86=B2=E7=AA=81)=203?= =?UTF-8?q?.=E5=AE=8C=E6=88=90=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=20?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/pdm/micai-platform.pdm | 536 +++++++++++------- doc/sql/micai_platform.sql | 136 +++-- doc/sql/tb_sys_region.sql | 40 -- ...ityException.java => MyAuthException.java} | 32 +- .../platform/auth/bo/PermissionMenuDelBo.java | 26 + .../auth/bo/PermissionMenuSaveBo.java | 29 + .../auth/bo/PermissionMenuUpdateBo.java | 33 ++ .../platform/auth/bo/RolePermissionDelBo.java | 26 + .../auth/bo/RolePermissionSaveBo.java | 31 + .../auth/bo/RolePermissionUpdateBo.java | 33 ++ .../micai/platform/auth/bo/UserRoleDelBo.java | 26 + .../platform/auth/bo/UserRoleSaveBo.java | 30 + .../platform/auth/bo/UserRoleUpdateBo.java | 34 ++ .../platform/auth/constant/ConstantCode.java | 10 + .../platform/auth/constant/ConstantEnum.java | 8 +- .../auth/controller/OrganUserController.java | 20 + .../auth/controller/PermissionController.java | 25 +- .../controller/PermissionMenuController.java | 89 +++ .../auth/controller/RoleController.java | 25 +- .../controller/RolePermissionController.java | 92 +++ .../auth/controller/SysDictController.java | 5 +- .../auth/controller/SysMenuController.java | 24 +- .../auth/controller/UserController.java | 23 +- .../auth/controller/UserRoleController.java | 91 +++ .../auth/dto/UserAuthenticationDto.java | 2 - .../micai/platform/auth/entity/OrganUser.java | 19 +- .../platform/auth/entity/PermissionMenu.java | 16 +- .../platform/auth/entity/RolePermission.java | 16 +- .../micai/platform/auth/entity/UserRole.java | 19 +- .../auth/filter/ImageCodeValidateFilter.java | 8 +- .../CustomAuthenticationFailureHandler.java | 6 +- .../CustomAuthenticationProvider.java | 28 +- .../auth/service/PermissionMenuService.java | 19 + .../auth/service/RolePermissionService.java | 8 + .../auth/service/UserRoleService.java | 8 + .../impl/PermissionMenuServiceImpl.java | 73 +++ .../service/impl/PermissionServiceImpl.java | 5 +- .../impl/RolePermissionServiceImpl.java | 57 +- .../service/impl/UserRoleServiceImpl.java | 57 +- 39 files changed, 1378 insertions(+), 387 deletions(-) delete mode 100644 doc/sql/tb_sys_region.sql rename src/main/java/org/micai/platform/auth/base/exception/{SecurityException.java => MyAuthException.java} (50%) create mode 100644 src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java create mode 100644 src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java create mode 100644 src/main/java/org/micai/platform/auth/controller/OrganUserController.java create mode 100644 src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java create mode 100644 src/main/java/org/micai/platform/auth/controller/RolePermissionController.java create mode 100644 src/main/java/org/micai/platform/auth/controller/UserRoleController.java create mode 100644 src/main/java/org/micai/platform/auth/service/PermissionMenuService.java create mode 100644 src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java diff --git a/doc/pdm/micai-platform.pdm b/doc/pdm/micai-platform.pdm index ae83c8f..5ba1044 100644 --- a/doc/pdm/micai-platform.pdm +++ b/doc/pdm/micai-platform.pdm @@ -1,5 +1,5 @@ - + @@ -4121,9 +4121,9 @@ Shadow=0 1638875492 -1638875671 -((-28436,-2680), (-27186,5746)) -((-27811,-2280),(-27811,5346)) +1642129056 +((-27887,-2680), (-26637,4366)) +((-27262,-2280),(-27262,3966)) 1 1 12615680 @@ -4143,9 +4143,9 @@ DESTINATION 0 新宋体,8,N 1638875671 -1638875796 -((-17938,-2560), (-16688,5746)) -((-17313,5346),(-17313,-2160)) +1642129056 +((-21913,-2560), (-20663,4366)) +((-21288,3966),(-21288,-2160)) 1 1 12615680 @@ -4165,9 +4165,9 @@ DESTINATION 0 新宋体,8,N 1638875941 -1638876026 -((-7386,-7809), (-3938,5864)) -((-6986,-7409),(-4563,-7409),(-4563,5464)) +1642129051 +((-8211,-2560), (-6961,4334)) +((-7586,-2160),(-7586,3934)) 1 1 12615680 @@ -4187,9 +4187,9 @@ DESTINATION 0 新宋体,8,N 1638875943 -1638876800 -((-1476,-2020), (-226,5864)) -((-851,5464),(-851,-1620)) +1642129051 +((-3268,-2020), (-2018,4334)) +((-2643,3934),(-2643,-1620)) 1 1 12615680 @@ -4209,9 +4209,9 @@ DESTINATION 0 新宋体,8,N 1638876100 -1638876829 -((11661,-7269), (13830,7034)) -((12061,-6869),(13205,-6869),(13205,6634)) +1642129049 +((11661,-7269), (16440,3884)) +((12061,-6869),(15815,-6869),(15815,3484)) 1 1 12615680 @@ -4232,9 +4232,9 @@ DESTINATION 0 新宋体,8,N 1638876103 -1638876145 -((18682,-827), (19932,7034)) -((19307,6634),(19307,-427)) +1642129049 +((18410,-827), (19660,3884)) +((19035,3484),(19035,-427)) 1 1 12615680 @@ -4254,9 +4254,9 @@ DESTINATION 0 新宋体,8,N 1638876260 -1638876261 -((-49004,-1005), (-47754,5294)) -((-48379,-605),(-48379,4894)) +1642129058 +((-48423,-1005), (-47173,3884)) +((-47798,-605),(-47798,3484)) 1 1 12615680 @@ -4276,9 +4276,9 @@ DESTINATION 0 新宋体,8,N 1638876261 -1638876261 -((-41507,-2680), (-40257,5294)) -((-40882,4894),(-40882,-2280)) +1642129058 +((-41589,-2680), (-40339,3884)) +((-40964,3484),(-40964,-2280)) 1 1 12615680 @@ -4343,9 +4343,9 @@ LABL 0 新宋体,8,N -1638876261 +1642129058 -1 -((-49758,4894), (-35660,9992)) +((-48736,3484), (-35842,11282)) 12615680 16570034 12632256 @@ -4391,9 +4391,9 @@ LABL 0 新宋体,8,N -1638876144 +1642129049 -1 -((6156,6634), (20254,11732)) +((9368,3484), (22262,11282)) 12615680 16570034 12632256 @@ -4439,9 +4439,9 @@ LABL 0 新宋体,8,N -1638876026 +1642129051 -1 -((-11612,5464), (2486,10562)) +((-10410,3934), (2484,11732)) 12615680 16570034 12632256 @@ -4511,9 +4511,9 @@ LABL 0 新宋体,8,N -1638875671 +1642129056 -1 -((-30290,5346), (-16592,10444)) +((-29528,3966), (-16634,11764)) 12615680 16570034 12632256 @@ -4769,38 +4769,49 @@ LABL 0 新宋体,8,N tb_organ_user 1638866782 liucong -1638876312 +1642128841 liucong ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic +99D8FF0B-2324-4D85-8132-CC98A10E6240 +id +id +1638866782 +liucong +1642128859 +liucong +主键id +bigint(20) +20 +1 + + D2DBD86A-A077-4E45-B9DD-51ED296FF736 organ_id organ_id 1638866782 liucong -1638876294 +1642128909 liucong 组织机构id bigint(20) 20 -1 - + 40401F94-C6A3-49B4-904A-3E46D3CC0AA0 user_id user_id 1638866782 liucong -1638876312 +1642128986 liucong 用户id bigint(20) 20 -1 - + 21335764-D6BC-4D41-A3E2-8D2400D38CBF create_user_id create_user_id @@ -4813,7 +4824,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 6FF936EC-0DF2-4E09-82B3-3A92BB058AAD create_time create_time @@ -4823,24 +4834,46 @@ LABL 0 新宋体,8,N liucong datetime + +53659533-8DD4-497B-84E5-52E880321000 +update_user_id +update_user_id +1638866782 +liucong +1642128733 +liucong +修改人 +NULL +bigint(20) +20 + + +F666CFA1-E71F-4571-81D3-1F5EAFECDB7E +update_time +update_time +1638866782 +liucong +1642128733 +liucong +datetime + - + CF89A5E4-6159-4042-85F1-9F486176B40D Key_1 Key_1 1638866782 liucong -1638876294 +1642128986 liucong - - + @@ -4854,7 +4887,7 @@ LABL 0 新宋体,8,N ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + 70DA1190-E655-483C-AFE0-BC457E083AA8 id id @@ -4867,7 +4900,7 @@ LABL 0 新宋体,8,N 20 1 - + 2CD47A70-33E2-4526-BC82-BEC2348DD952 permission_code permission_code @@ -4878,7 +4911,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + FA637CE5-4D7A-4951-967E-E0416425C162 permission_name permission_name @@ -4889,7 +4922,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + 45578A2E-4D4C-4A8A-8B83-F8955ECAC1A0 description description @@ -4900,7 +4933,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + 4CD43820-E569-4E80-8006-FAE243484C46 status status @@ -4911,7 +4944,7 @@ LABL 0 新宋体,8,N char(2) 2 - + AA4D532D-1E4B-496B-B9BD-0B0CFBE9931E create_user_id create_user_id @@ -4924,7 +4957,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 9A23DB00-BDFE-44D7-B9C4-64BA6BF08123 create_time create_time @@ -4934,7 +4967,7 @@ LABL 0 新宋体,8,N liucong datetime - + 8C3EBB9F-5BD0-4F34-9F1D-AF20A0BB5EA7 update_user_id update_user_id @@ -4947,7 +4980,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 64CEECA9-F3D1-4717-819F-0B6AB987FA41 update_time update_time @@ -4957,7 +4990,7 @@ LABL 0 新宋体,8,N liucong datetime - + 53129E00-6568-49DB-9A4A-862D5FDF709D version version @@ -4972,7 +5005,7 @@ LABL 0 新宋体,8,N - + 7DA4484A-81E4-49FD-87B4-5CF1967873DB Key_1 Key_1 @@ -4981,12 +5014,12 @@ LABL 0 新宋体,8,N 1638876022 liucong - + - + @@ -4995,38 +5028,49 @@ LABL 0 新宋体,8,N tb_permission_menu 1638866782 liucong -1638876224 +1642129041 liucong ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + +CC9694FA-77B5-48E0-8AED-109C9171AB38 +id +id +1638866782 +liucong +1642129041 +liucong +主键id +bigint(20) +20 +1 + + 7EBAD130-DF1B-4E89-911B-47D7FFE5A6CE permission_id permission_id 1638866782 liucong -1638876195 +1642129041 liucong 权限id bigint(20) 20 -1 - + BA53370D-A737-4FED-80D3-22F4892540E2 menu_id menu_id 1638866782 liucong -1638876224 +1642129041 liucong 菜单id bigint(20) 20 -1 - + F82F08C4-3080-42A8-84E5-CF808B3EFEDE create_user_id create_user_id @@ -5039,7 +5083,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + FC077D19-0668-452C-80AA-163692ECA50F create_time create_time @@ -5049,24 +5093,46 @@ LABL 0 新宋体,8,N liucong datetime + +9686470D-1D9C-4EC4-85A2-B8387E093768 +update_user_id +update_user_id +1638866782 +liucong +1642128780 +liucong +修改人 +NULL +bigint(20) +20 + + +EB40EC63-0790-451D-B358-5C795CADDA40 +update_time +update_time +1638866782 +liucong +1642128780 +liucong +datetime + - + DE6804E0-AB4E-4DC1-84BD-FDDC83B91430 Key_1 Key_1 1638866782 liucong -1638876138 +1642129041 liucong - - + - + @@ -5080,7 +5146,7 @@ LABL 0 新宋体,8,N ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + 2B0910B5-0136-4F84-82DE-9B9F69A5D29A id id @@ -5093,7 +5159,7 @@ LABL 0 新宋体,8,N 20 1 - + FE75F945-9770-4DD4-8420-C45226DB317D role_code role_code @@ -5104,7 +5170,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + 2BD8D48A-25E5-468D-93AD-04DA9C7A9FE2 role_name role_name @@ -5115,7 +5181,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + 3B3425B6-474E-48EA-AEBB-04694D925824 description description @@ -5126,7 +5192,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + EA05F66E-41BE-49CB-A065-C9202379CCCD status status @@ -5137,7 +5203,7 @@ LABL 0 新宋体,8,N char(2) 2 - + 77C15EC8-4CFA-4DBA-B5B2-AF8727F363FF create_user_id create_user_id @@ -5150,7 +5216,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 7B559F5B-66E0-4760-A29C-BF90ACCDBE38 create_time create_time @@ -5160,7 +5226,7 @@ LABL 0 新宋体,8,N liucong datetime - + 5F1DA8BC-6814-4C92-B3F3-C9D3BFB74239 update_user_id update_user_id @@ -5173,7 +5239,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + A8009A19-7C4A-472A-AD46-922C0ADBC67E update_time update_time @@ -5183,7 +5249,7 @@ LABL 0 新宋体,8,N liucong datetime - + F9FB7379-23A1-4A45-8937-A05145122BA1 version version @@ -5198,7 +5264,7 @@ LABL 0 新宋体,8,N - + 103BA720-E3DA-4C41-B710-EEF4297DD38E Key_1 Key_1 @@ -5207,12 +5273,12 @@ LABL 0 新宋体,8,N 1638866782 liucong - + - + @@ -5221,38 +5287,49 @@ LABL 0 新宋体,8,N tb_role_permission 1638866782 liucong -1638876022 +1642129020 liucong ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + +65FFF82A-652D-45FE-A63B-0B0F990AE7E2 +id +id +1638866782 +liucong +1642129020 +liucong +主键id +bigint(20) +20 +1 + + 6811FE76-9A10-4314-B5E2-236E6F68FFE7 role_id role_id 1638866782 liucong -1638875999 +1642129020 liucong 角色id bigint(20) 20 -1 - + EE778B42-E2FA-4F20-B9EC-001E16EBBCC8 permission_id permission_id 1638866782 liucong -1638876022 +1642129020 liucong 权限id bigint(20) 20 -1 - + ACDFA404-F315-43BB-81EF-24A486A38599 create_user_id create_user_id @@ -5265,7 +5342,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 42EAC9A1-3690-4DD0-942E-E957D115B5F2 create_time create_time @@ -5275,24 +5352,46 @@ LABL 0 新宋体,8,N liucong datetime + +7A1C73EA-6B9F-408E-A59A-582707E1EE5A +update_user_id +update_user_id +1638866782 +liucong +1642128770 +liucong +修改人 +NULL +bigint(20) +20 + + +E82CEC56-ADE7-4EF4-B7E6-F47062810CDA +update_time +update_time +1638866782 +liucong +1642128770 +liucong +datetime + - + E9B3C493-86AC-4453-9D97-413215C50CD6 Key_1 Key_1 1638866782 liucong -1638875978 +1642129020 liucong - - + - + @@ -5306,7 +5405,7 @@ LABL 0 新宋体,8,N ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + 7926474F-16B0-4C76-AB4D-0DBA3E6A960D id id @@ -5320,7 +5419,7 @@ LABL 0 新宋体,8,N 1 1 - + 3618400C-23DD-4B5C-A859-7FB419C7F56E menu_code menu_code @@ -5331,7 +5430,7 @@ LABL 0 新宋体,8,N varchar(20) 20 - + 3D63A7DB-8F8A-4278-A6EF-AA4DBC9D94EE menu_name menu_name @@ -5342,7 +5441,7 @@ LABL 0 新宋体,8,N varchar(50) 50 - + B9C00E7F-807A-4D8A-97DE-1347C145E4D9 system_code system_code @@ -5353,7 +5452,7 @@ LABL 0 新宋体,8,N varchar(50) 50 - + 529D78E9-C99E-4224-BE6F-FEA061EAD3B8 system_name system_name @@ -5364,7 +5463,7 @@ LABL 0 新宋体,8,N varchar(50) 50 - + 671D55D1-A94B-4AA0-974D-D887515FB8FA application application @@ -5375,7 +5474,7 @@ LABL 0 新宋体,8,N char(2) 2 - + 17533F0E-8401-4CB6-8CFE-AAB049127858 parent_code parent_code @@ -5386,7 +5485,7 @@ LABL 0 新宋体,8,N varchar(20) 20 - + 1B61C65B-DEC4-4B3A-A0AE-5BC1AB443FE2 menu_icon menu_icon @@ -5397,7 +5496,7 @@ LABL 0 新宋体,8,N varchar(200) 200 - + 026E4784-6A8F-4667-B73D-2A8CE8D3D96E url url @@ -5408,7 +5507,7 @@ LABL 0 新宋体,8,N varchar(200) 200 - + 7846E91B-7BAC-4568-9C7C-85725F71F9DA open_type open_type @@ -5419,7 +5518,7 @@ LABL 0 新宋体,8,N char(1) 1 - + 478D0E81-DCBE-4D99-9A7B-30435EC9F82E sn sn @@ -5432,7 +5531,7 @@ LABL 0 新宋体,8,N int(4) 4 - + EDED683D-98F7-4737-A664-46447F859C39 create_time create_time @@ -5442,7 +5541,7 @@ LABL 0 新宋体,8,N liucong datetime - + 51D809DF-AE97-45AB-83B7-D561ADC4127E create_user_id create_user_id @@ -5455,7 +5554,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + CD09D647-0087-4FD2-8A51-B34C3BF9D3E9 update_user_id update_user_id @@ -5468,7 +5567,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 6E816392-21DD-4BFC-8423-7FE0F447E77F update_time update_time @@ -5478,7 +5577,7 @@ LABL 0 新宋体,8,N liucong datetime - + 6AFEBC80-F976-4520-82DE-8D3E55B52F0B status status @@ -5489,7 +5588,7 @@ LABL 0 新宋体,8,N char(2) 2 - + 27BD3B91-9602-4ABC-9C0D-FBE197F1E224 version version @@ -5504,7 +5603,7 @@ LABL 0 新宋体,8,N - + D9DA9F3D-D4FD-4B9A-8CAC-F15C5E8F86E4 Key_1 Key_1 @@ -5513,12 +5612,12 @@ LABL 0 新宋体,8,N 1638876224 liucong - + - + @@ -5538,7 +5637,7 @@ LABL 0 新宋体,8,N } - + 3451034F-DF96-4CE7-A7ED-2C66B2C7EEF4 id id @@ -5551,7 +5650,7 @@ LABL 0 新宋体,8,N 20 1 - + 76127B17-C66B-4573-9B90-D29A8BB296E4 username username @@ -5565,7 +5664,7 @@ LABL 0 新宋体,8,N - + 73FC6A32-222C-4203-B6AE-C783E28B8175 password password @@ -5579,7 +5678,7 @@ LABL 0 新宋体,8,N - + E9EDF442-44D5-481C-AB33-EC43855007EF phone phone @@ -5593,7 +5692,7 @@ LABL 0 新宋体,8,N - + D781AC7F-5851-4CFB-9775-893B38798469 email email @@ -5607,7 +5706,7 @@ LABL 0 新宋体,8,N - + 803B27C9-A8CE-49B7-94E8-5DBF47D191D3 create_user_id create_user_id @@ -5620,7 +5719,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 9CA21D0C-C95D-492D-B6A3-481507304CB7 create_time create_time @@ -5630,7 +5729,7 @@ LABL 0 新宋体,8,N liucong datetime - + BC3BD5A6-E7A8-4F72-B1C1-2BD12F592EFF update_user_id update_user_id @@ -5643,7 +5742,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 100CAA81-175C-4FD3-8866-BF202E23DD14 status status @@ -5657,7 +5756,7 @@ LABL 0 新宋体,8,N - + 9104BE9A-2DFF-4434-ADEA-3ACF5FD36F04 version version @@ -5672,7 +5771,7 @@ LABL 0 新宋体,8,N - + BD032096-41FB-47A5-B085-CA86EE457712 Key_1 Key_1 @@ -5681,12 +5780,12 @@ LABL 0 新宋体,8,N 1638876312 liucong - + - + @@ -5695,37 +5794,48 @@ LABL 0 新宋体,8,N tb_user_role 1638866782 liucong -1638876069 +1642129003 liucong 用户角色表 ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + +A2ECEE61-0435-424A-B9EB-6E1475BA7532 +id +id +1638866782 +liucong +1642129003 +liucong +主键id +bigint(20) +20 +1 + + 28D6FAB5-14B1-4F48-8335-9FACEB928DC6 user_id user_id 1638866782 liucong -1638875563 +1642129003 liucong bigint(20) 20 -1 - + 524A05F7-B689-40CA-B799-F62727AD0CFE role_id role_id 1638866782 liucong -1638876069 +1642129003 liucong bigint(20) 20 -1 - + 0EA3B50B-25DA-4B99-A2E5-CF57F3885969 creat_user_id creat_user_id @@ -5737,7 +5847,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + E0F5BE23-32FE-4DD8-A6FD-EBB069A26F51 create_time create_time @@ -5747,24 +5857,46 @@ LABL 0 新宋体,8,N liucong datetime + +03DEC01D-3716-4FD5-8BBF-E6521F12A7ED +update_user_id +update_user_id +1638866782 +liucong +1642128749 +liucong +修改人 +NULL +bigint(20) +20 + + +9D39067C-355B-4A7C-BF19-FE22443C95F3 +update_time +update_time +1638866782 +liucong +1642128749 +liucong +datetime + - + 2A2D249B-E100-4503-8D43-9DDE68EECAE4 Key_1 Key_1 1638866782 liucong -1638876069 +1642129003 liucong - - + - + @@ -5778,7 +5910,7 @@ LABL 0 新宋体,8,N ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + 2C005860-66BB-4B48-9C5B-79855B723654 id id @@ -5791,7 +5923,7 @@ LABL 0 新宋体,8,N 20 1 - + 8DA62DDE-E35C-457B-9DF5-5B41E4CC4F56 dict_name dict_name @@ -5802,7 +5934,7 @@ LABL 0 新宋体,8,N varchar(32) 32 - + 1E62E57A-A5E2-4E3D-977D-42395CF4AA26 dict_code dict_code @@ -5813,7 +5945,7 @@ LABL 0 新宋体,8,N varchar(32) 32 - + 9F1E3132-93C2-440E-AEA9-814D3C6BA9DB create_user_id create_user_id @@ -5826,7 +5958,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + F20F10CD-06CD-4B7E-86FC-F89FD6596576 create_time create_time @@ -5836,7 +5968,7 @@ LABL 0 新宋体,8,N liucong datetime - + F47C86AB-98A7-43A2-AE56-C56863D9B995 update_user_id update_user_id @@ -5849,7 +5981,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + 309829AC-632C-4814-91D7-63AB170FA24A update_time update_time @@ -5859,7 +5991,7 @@ LABL 0 新宋体,8,N liucong datetime - + FD6DDD35-9792-427A-B89F-9818291223F5 status status @@ -5870,7 +6002,7 @@ LABL 0 新宋体,8,N char(2) 2 - + 802DC29B-5E36-4F6B-A368-2B75F984657F version version @@ -5885,7 +6017,7 @@ LABL 0 新宋体,8,N - + 5FC4FA35-D231-4E78-A83D-A3053253B371 Key_1 Key_1 @@ -5894,12 +6026,12 @@ LABL 0 新宋体,8,N 1639122307 liucong - + - + @@ -5913,7 +6045,7 @@ LABL 0 新宋体,8,N ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic - + 87026EFA-9B90-47A2-BA30-A9634A1234F2 id id @@ -5926,7 +6058,7 @@ LABL 0 新宋体,8,N 20 1 - + 34C4FDE2-CC87-439C-83AA-C82F5E8B13C0 dict_id dict_id @@ -5939,7 +6071,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + C1792505-14B0-4426-8073-5C90F61BCC3F item_text item_text @@ -5950,7 +6082,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + DC8BAE6E-4972-460C-A57E-18524312E0EC item_value item_value @@ -5961,7 +6093,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + 9FF5DAE1-16E2-4D81-8231-049AF3BE13F9 description description @@ -5972,7 +6104,7 @@ LABL 0 新宋体,8,N varchar(255) 255 - + F3CDFD6C-D41F-4860-B229-AC96B2AE681D sn sn @@ -5985,7 +6117,7 @@ LABL 0 新宋体,8,N int(4) 4 - + D5B83753-4261-4751-8FA4-771EB761B793 create_user_id create_user_id @@ -5998,7 +6130,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + F39F6164-D672-402C-9A53-F939C27E36EF create_time create_time @@ -6008,7 +6140,7 @@ LABL 0 新宋体,8,N liucong datetime - + EE53C581-991E-4D8D-BEDA-2AF89785546F update_user_id update_user_id @@ -6021,7 +6153,7 @@ LABL 0 新宋体,8,N bigint(20) 20 - + F59FC3F5-0339-4DF4-AB5F-2116F43FE2AC update_time update_time @@ -6031,7 +6163,7 @@ LABL 0 新宋体,8,N liucong datetime - + AC1C5E90-4F93-4542-81B7-0665248BF6E5 status status @@ -6042,7 +6174,7 @@ LABL 0 新宋体,8,N char(2) 2 - + 5B11617C-ECA0-451C-ACC1-05EF9C782B8E version version @@ -6057,7 +6189,7 @@ LABL 0 新宋体,8,N - + C9EFFE52-FD7B-4816-B1FA-965B36040191 Key_1 Key_1 @@ -6066,12 +6198,12 @@ LABL 0 新宋体,8,N 1639122664 liucong - + - + @@ -6094,17 +6226,17 @@ LABL 0 新宋体,8,N - + CEB70CC0-C816-400E-809B-2E082B7BB252 1638875551 liucong 1638876069 liucong - + - + @@ -6127,20 +6259,20 @@ LABL 0 新宋体,8,N - + - + EA3B3E44-305F-44A2-8BA3-5D3146CADD8D 1638875671 liucong 1638875697 liucong - + - + @@ -6163,17 +6295,17 @@ LABL 0 新宋体,8,N - + 1EB490D4-684F-4DAB-A1EB-5F3E0D6D70E0 1638875941 liucong 1638875999 liucong - + - + @@ -6196,17 +6328,17 @@ LABL 0 新宋体,8,N - + B20CF1A5-8FF0-489B-99D2-E14A8F091535 1638875943 liucong 1638876022 liucong - + - + @@ -6229,17 +6361,17 @@ LABL 0 新宋体,8,N - + 8E1A0D33-C0A2-4A86-8C64-CE981ADC6B7C 1638876100 liucong 1638876195 liucong - + - + @@ -6262,17 +6394,17 @@ LABL 0 新宋体,8,N - + DB91845C-E0A9-4AA9-A7E7-DFD62F6DBD39 1638876103 liucong 1638876224 liucong - + - + @@ -6295,14 +6427,14 @@ LABL 0 新宋体,8,N - + 60986195-2494-4212-A867-901386B36285 1638876260 liucong 1638876294 liucong - + @@ -6328,17 +6460,17 @@ LABL 0 新宋体,8,N - + B3217C32-E8F9-43C9-965E-DC53EB01824E 1638876261 liucong 1638876312 liucong - + - + @@ -6364,24 +6496,24 @@ LABL 0 新宋体,8,N - + 2CDF6BBC-1F6F-42C8-B40F-5322CB2F97B3 1639122362 liucong 1639122664 liucong - + - + - + ECEFC35D-E375-4FA1-B68A-92A1996BC6F6 PUBLIC PUBLIC @@ -6392,7 +6524,7 @@ LABL 0 新宋体,8,N - + 56F71CEC-8724-46F7-ABF8-90423B899853 MySQL 5.0 MYSQL50 diff --git a/doc/sql/micai_platform.sql b/doc/sql/micai_platform.sql index e9aecd7..2157441 100644 --- a/doc/sql/micai_platform.sql +++ b/doc/sql/micai_platform.sql @@ -11,7 +11,7 @@ Target Server Version : 50736 File Encoding : 65001 - Date: 11/12/2021 18:24:40 + Date: 14/01/2022 10:44:34 */ SET NAMES utf8mb4; @@ -46,12 +46,16 @@ CREATE TABLE `tb_organ_info` ( -- ---------------------------- DROP TABLE IF EXISTS `tb_organ_user`; CREATE TABLE `tb_organ_user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, `organ_id` bigint(20) NOT NULL COMMENT '组织机构id', `user_id` bigint(20) NOT NULL COMMENT '用户id', `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`organ_id`, `user_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改用户id', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `version` bigint(20) NOT NULL DEFAULT 0 COMMENT '版本号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_organ_user @@ -73,44 +77,71 @@ CREATE TABLE `tb_permission` ( `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', `version` bigint(20) NULL DEFAULT 0 COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_permission -- ---------------------------- -INSERT INTO `tb_permission` VALUES (1, 'root', '最高权限', '最高权限', '01', NULL, '2021-12-04 14:15:33', NULL, '2021-12-04 14:15:37', 1); -INSERT INTO `tb_permission` VALUES (2, 'ave', '一般', '一般', '01', NULL, '2021-12-04 16:15:11', NULL, '2021-12-04 16:15:15', 1); +INSERT INTO `tb_permission` VALUES (1, 'sys:permission:save', '新增权限', '新增权限', '01', 1, '2022-01-13 12:58:32', 1, '2022-01-13 12:58:32', 0); +INSERT INTO `tb_permission` VALUES (2, 'sys:user:List', '获取用户列表', '获取用户列表', '01', 1, '2022-01-13 13:41:09', 1, '2022-01-13 13:41:09', 0); +INSERT INTO `tb_permission` VALUES (3, 'sys:user:update', '更新用户', '更新用户', '01', 1, '2022-01-13 13:43:59', 1, '2022-01-13 13:43:59', 0); +INSERT INTO `tb_permission` VALUES (4, 'sys:user:save', '新增用户', '新增用户', '01', 1, '2022-01-13 13:44:28', 1, '2022-01-13 13:44:28', 0); +INSERT INTO `tb_permission` VALUES (5, 'sys:user:del', '删除用户', '删除用户', '01', 1, '2022-01-13 13:44:46', 1, '2022-01-13 13:44:46', 0); +INSERT INTO `tb_permission` VALUES (6, 'sys:sysMenu:list', '查询菜单', '查询菜单', '01', 1, '2022-01-13 13:45:18', 1, '2022-01-13 13:45:18', 0); +INSERT INTO `tb_permission` VALUES (7, 'sys:sysMenu:update', '更新菜单', '更新菜单', '01', 1, '2022-01-13 13:45:50', 1, '2022-01-13 13:45:50', 0); +INSERT INTO `tb_permission` VALUES (8, 'sys:sysMenu:save', '新增菜单', '新增菜单', '01', 1, '2022-01-13 13:46:31', 1, '2022-01-13 13:46:31', 0); +INSERT INTO `tb_permission` VALUES (9, 'sys:sysMenu:del', '删除菜单', '删除菜单', '01', 1, '2022-01-13 13:47:31', 1, '2022-01-13 13:47:31', 0); +INSERT INTO `tb_permission` VALUES (10, 'sys:role:list', '获取角色列表', '获取角色列表', '01', 1, '2022-01-13 13:48:10', 1, '2022-01-13 13:48:10', 0); +INSERT INTO `tb_permission` VALUES (11, 'sys:role:update', '更新角色信息', '更新角色信息', '01', 1, '2022-01-13 13:48:25', 1, '2022-01-13 13:48:25', 0); +INSERT INTO `tb_permission` VALUES (12, 'sys:role:save', '新增角色', '新增角色', '01', 1, '2022-01-13 13:48:47', 1, '2022-01-13 13:48:47', 0); +INSERT INTO `tb_permission` VALUES (13, 'sys:role:del', '删除角色', '删除角色', '01', 1, '2022-01-13 13:49:38', 1, '2022-01-13 13:49:38', 0); +INSERT INTO `tb_permission` VALUES (14, 'sys:permission:list', '获取权限列表', '获取权限列表', '01', 1, '2022-01-13 13:50:36', 1, '2022-01-13 13:50:36', 0); +INSERT INTO `tb_permission` VALUES (15, 'sys:permission:update', '更新权限信息', '更新权限信息', '01', 1, '2022-01-13 13:50:59', 1, '2022-01-13 13:50:59', 0); +INSERT INTO `tb_permission` VALUES (16, 'sys:permission:del', '删除权限', '删除权限', '01', 1, '2022-01-13 13:52:00', 1, '2022-01-13 13:52:00', 0); +INSERT INTO `tb_permission` VALUES (18, 'sys:rolePermission:update', '更新角色', '更新角色', '01', 1, '2022-01-13 15:28:10', 1, '2022-01-13 15:28:10', 0); +INSERT INTO `tb_permission` VALUES (19, 'sys:rolePermission:save', '新增角色', '新增角色', '01', 1, '2022-01-13 15:28:31', 1, '2022-01-13 15:28:31', 0); +INSERT INTO `tb_permission` VALUES (20, 'sys:rolePermission:del', '删除角色', '删除角色', '01', 1, '2022-01-13 15:28:55', 1, '2022-01-13 15:28:55', 0); +INSERT INTO `tb_permission` VALUES (21, 'sys:permissionMenu:update', '更新角色菜单', '更新角色菜单', '01', 1, '2022-01-13 17:34:33', 1, '2022-01-13 17:34:33', 0); +INSERT INTO `tb_permission` VALUES (22, 'sys:permissionMenu:save', '新增角色菜单', '新增角色菜单', '01', 1, '2022-01-13 17:34:51', 1, '2022-01-13 17:34:51', 0); +INSERT INTO `tb_permission` VALUES (23, 'sys:permissionMenu:del', '删除角色菜单', '删除角色菜单', '01', 1, '2022-01-13 17:35:08', 1, '2022-01-13 17:35:08', 0); +INSERT INTO `tb_permission` VALUES (24, 'sys:userRole:update', '更新用户角色', '更新用户角色', '01', 1, '2022-01-14 10:41:35', 1, '2022-01-14 10:41:35', 0); +INSERT INTO `tb_permission` VALUES (25, 'sys:userRole:save', '新增用户角色', '新增用户角色', '01', 1, '2022-01-14 10:41:54', 1, '2022-01-14 10:41:54', 0); +INSERT INTO `tb_permission` VALUES (26, 'sys:userRole:del', '删除用户角色', '删除用户角色', '01', 1, '2022-01-14 10:42:14', 1, '2022-01-14 10:42:14', 0); -- ---------------------------- -- Table structure for tb_permission_menu -- ---------------------------- DROP TABLE IF EXISTS `tb_permission_menu`; CREATE TABLE `tb_permission_menu` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, `permission_id` bigint(20) NOT NULL COMMENT '权限id', `menu_id` bigint(20) NOT NULL COMMENT '菜单id', `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`permission_id`, `menu_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改用户id', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `version` bigint(20) NOT NULL DEFAULT 0 COMMENT '版本号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_permission_menu -- ---------------------------- -INSERT INTO `tb_permission_menu` VALUES (1, 1, NULL, '2021-12-07 11:30:29'); -INSERT INTO `tb_permission_menu` VALUES (1, 2, NULL, '2021-12-07 11:30:37'); -INSERT INTO `tb_permission_menu` VALUES (1, 3, NULL, '2021-12-07 11:30:49'); -INSERT INTO `tb_permission_menu` VALUES (1, 4, NULL, '2021-12-07 11:30:59'); -INSERT INTO `tb_permission_menu` VALUES (1, 5, NULL, '2021-12-07 11:31:07'); -INSERT INTO `tb_permission_menu` VALUES (1, 6, NULL, '2021-12-07 11:45:19'); -INSERT INTO `tb_permission_menu` VALUES (1, 7, NULL, '2021-12-07 11:46:05'); -INSERT INTO `tb_permission_menu` VALUES (1, 8, NULL, '2021-12-10 15:33:16'); -INSERT INTO `tb_permission_menu` VALUES (1, 9, NULL, '2021-12-10 15:33:25'); -INSERT INTO `tb_permission_menu` VALUES (1, 10, NULL, '2021-12-10 15:33:35'); -INSERT INTO `tb_permission_menu` VALUES (1, 11, NULL, '2021-12-10 15:33:46'); -INSERT INTO `tb_permission_menu` VALUES (1, 12, NULL, '2021-12-10 15:33:53'); -INSERT INTO `tb_permission_menu` VALUES (1, 13, NULL, '2021-12-10 15:34:01'); -INSERT INTO `tb_permission_menu` VALUES (1, 14, NULL, '2021-12-10 15:34:16'); -INSERT INTO `tb_permission_menu` VALUES (1, 15, NULL, '2021-12-10 15:34:25'); +INSERT INTO `tb_permission_menu` VALUES (1, 6, 1, 1, '2022-01-13 17:36:59', 1, '2022-01-13 17:36:59', 0); +INSERT INTO `tb_permission_menu` VALUES (2, 6, 2, 1, '2022-01-13 17:37:06', 1, '2022-01-13 17:37:06', 0); +INSERT INTO `tb_permission_menu` VALUES (3, 6, 3, 1, '2022-01-13 17:37:10', 1, '2022-01-13 17:37:10', 0); +INSERT INTO `tb_permission_menu` VALUES (4, 6, 4, 1, '2022-01-13 17:37:15', 1, '2022-01-13 17:37:15', 0); +INSERT INTO `tb_permission_menu` VALUES (5, 6, 5, 1, '2022-01-13 17:37:18', 1, '2022-01-13 17:37:18', 0); +INSERT INTO `tb_permission_menu` VALUES (6, 6, 6, 1, '2022-01-13 17:37:21', 1, '2022-01-13 17:37:21', 0); +INSERT INTO `tb_permission_menu` VALUES (7, 6, 7, 1, '2022-01-13 17:37:25', 1, '2022-01-13 17:37:25', 0); +INSERT INTO `tb_permission_menu` VALUES (8, 6, 8, 1, '2022-01-13 17:37:28', 1, '2022-01-13 17:37:28', 0); +INSERT INTO `tb_permission_menu` VALUES (9, 6, 9, 1, '2022-01-13 17:37:32', 1, '2022-01-13 17:37:32', 0); +INSERT INTO `tb_permission_menu` VALUES (10, 6, 10, 1, '2022-01-13 17:37:42', 1, '2022-01-13 17:37:42', 0); +INSERT INTO `tb_permission_menu` VALUES (11, 6, 11, 1, '2022-01-13 17:37:46', 1, '2022-01-13 17:37:46', 0); +INSERT INTO `tb_permission_menu` VALUES (12, 6, 12, 1, '2022-01-13 17:37:52', 1, '2022-01-13 17:37:52', 0); +INSERT INTO `tb_permission_menu` VALUES (13, 6, 13, 1, '2022-01-13 17:37:55', 1, '2022-01-13 17:37:55', 0); +INSERT INTO `tb_permission_menu` VALUES (14, 6, 14, 1, '2022-01-13 17:37:59', 1, '2022-01-13 17:37:59', 0); +INSERT INTO `tb_permission_menu` VALUES (15, 6, 15, 1, '2022-01-13 17:38:03', 1, '2022-01-13 17:38:03', 0); -- ---------------------------- -- Table structure for tb_role @@ -128,31 +159,55 @@ CREATE TABLE `tb_role` ( `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_role -- ---------------------------- INSERT INTO `tb_role` VALUES (1, 'root', '院长', '最高权限', '01', NULL, '2021-12-04 14:12:34', NULL, '2021-12-04 14:12:38', 1); -INSERT INTO `tb_role` VALUES (2, 'user', '患者', 'ave', '01', NULL, '2021-12-04 16:14:25', NULL, '2021-12-04 16:14:28', 1); -- ---------------------------- -- Table structure for tb_role_permission -- ---------------------------- DROP TABLE IF EXISTS `tb_role_permission`; CREATE TABLE `tb_role_permission` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, `role_id` bigint(20) NOT NULL COMMENT '角色id', `permission_id` bigint(20) NOT NULL COMMENT '权限id', `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`role_id`, `permission_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改用户id', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `version` bigint(20) NOT NULL DEFAULT 0 COMMENT '版本号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_role_permission -- ---------------------------- -INSERT INTO `tb_role_permission` VALUES (1, 1, NULL, '2021-12-04 15:46:39'); -INSERT INTO `tb_role_permission` VALUES (2, 2, NULL, '2021-12-04 16:14:46'); +INSERT INTO `tb_role_permission` VALUES (1, 1, 1, 1, '2022-01-13 16:38:37', 1, '2022-01-13 16:38:37', 0); +INSERT INTO `tb_role_permission` VALUES (2, 1, 19, 1, '2022-01-13 16:38:40', 1, '2022-01-13 16:38:40', 0); +INSERT INTO `tb_role_permission` VALUES (10, 1, 2, 1, '2022-01-13 16:36:09', 1, '2022-01-13 16:36:09', 0); +INSERT INTO `tb_role_permission` VALUES (13, 1, 3, 1, '2022-01-13 16:36:47', 1, '2022-01-13 16:36:47', 0); +INSERT INTO `tb_role_permission` VALUES (14, 1, 4, 1, '2022-01-13 16:36:51', 1, '2022-01-13 16:36:51', 0); +INSERT INTO `tb_role_permission` VALUES (15, 1, 5, 1, '2022-01-13 16:36:54', 1, '2022-01-13 16:36:54', 0); +INSERT INTO `tb_role_permission` VALUES (16, 1, 6, 1, '2022-01-13 16:36:58', 1, '2022-01-13 16:36:58', 0); +INSERT INTO `tb_role_permission` VALUES (17, 1, 7, 1, '2022-01-13 16:37:02', 1, '2022-01-13 16:37:02', 0); +INSERT INTO `tb_role_permission` VALUES (18, 1, 8, 1, '2022-01-13 16:37:07', 1, '2022-01-13 16:37:07', 0); +INSERT INTO `tb_role_permission` VALUES (19, 1, 9, 1, '2022-01-13 16:37:10', 1, '2022-01-13 16:37:10', 0); +INSERT INTO `tb_role_permission` VALUES (20, 1, 10, 1, '2022-01-13 16:37:14', 1, '2022-01-13 16:37:14', 0); +INSERT INTO `tb_role_permission` VALUES (21, 1, 11, 1, '2022-01-13 16:37:17', 1, '2022-01-13 16:37:17', 0); +INSERT INTO `tb_role_permission` VALUES (22, 1, 12, 1, '2022-01-13 16:37:20', 1, '2022-01-13 16:37:20', 0); +INSERT INTO `tb_role_permission` VALUES (23, 1, 13, 1, '2022-01-13 16:37:23', 1, '2022-01-13 16:37:23', 0); +INSERT INTO `tb_role_permission` VALUES (24, 1, 14, 1, '2022-01-13 16:37:27', 1, '2022-01-13 16:37:27', 0); +INSERT INTO `tb_role_permission` VALUES (25, 1, 15, 1, '2022-01-13 16:37:32', 1, '2022-01-13 16:37:32', 0); +INSERT INTO `tb_role_permission` VALUES (26, 1, 16, 1, '2022-01-13 16:37:45', 1, '2022-01-13 16:37:45', 0); +INSERT INTO `tb_role_permission` VALUES (27, 1, 17, 1, '2022-01-13 16:37:49', 1, '2022-01-13 16:37:49', 0); +INSERT INTO `tb_role_permission` VALUES (28, 1, 18, 1, '2022-01-13 16:37:53', 1, '2022-01-13 16:37:53', 0); +INSERT INTO `tb_role_permission` VALUES (29, 1, 20, 1, '2022-01-13 16:38:20', 1, '2022-01-13 16:38:20', 0); +INSERT INTO `tb_role_permission` VALUES (30, 1, 21, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); +INSERT INTO `tb_role_permission` VALUES (31, 1, 22, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); +INSERT INTO `tb_role_permission` VALUES (32, 1, 23, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); -- ---------------------------- -- Table structure for tb_sys_dict @@ -260,31 +315,32 @@ CREATE TABLE `tb_user` ( `status` char(2) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '01' COMMENT '状态: 01 启用 02停用', `version` bigint(20) NULL DEFAULT 0 COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_user -- ---------------------------- INSERT INTO `tb_user` VALUES (1, 'root', '$2a$10$WJRzfWrjox1WLF//ZSIug.oYUTqGRUFfNxCeCvBce3YJarZqodmua', NULL, NULL, NULL, NULL, NULL, NULL, '01', 0); -INSERT INTO `tb_user` VALUES (2, 'user', '$2a$10$n91ZvgBQDHl8W/InRehe0.XvAXnmSBl4U1af2R015Inba9le.xGIC', '18963733660', NULL, NULL, NULL, 1, '2021-12-11 18:20:02', '01', 5); -- ---------------------------- -- Table structure for tb_user_role -- ---------------------------- DROP TABLE IF EXISTS `tb_user_role`; CREATE TABLE `tb_user_role` ( - `user_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, - `creat_user_id` bigint(20) NULL DEFAULT NULL, - `create_time` datetime(0) NULL DEFAULT NULL, - PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `creat_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建用户id', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改用户id', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `version` bigint(20) NOT NULL DEFAULT 0 COMMENT '版本号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of tb_user_role -- ---------------------------- -INSERT INTO `tb_user_role` VALUES (1, 1, 1, '2021-12-04 15:46:04'); -INSERT INTO `tb_user_role` VALUES (1, 2, 1, '2021-12-06 14:15:32'); -INSERT INTO `tb_user_role` VALUES (2, 2, 1, '2021-12-04 16:13:51'); +INSERT INTO `tb_user_role` VALUES (1, 1, 1, 1, '2021-12-04 15:46:04', NULL, NULL, 0); SET FOREIGN_KEY_CHECKS = 1; diff --git a/doc/sql/tb_sys_region.sql b/doc/sql/tb_sys_region.sql deleted file mode 100644 index 6e31d2a..0000000 --- a/doc/sql/tb_sys_region.sql +++ /dev/null @@ -1,40 +0,0 @@ -/* -Navicat MySQL Data Transfer - -Source Server : 本地数据库 -Source Server Version : 80019 -Source Host : localhost:3306 -Source Database : security - -Target Server Type : MYSQL -Target Server Version : 80019 -File Encoding : 65001 - -Date: 2021-12-13 16:35:32 -*/ - -SET FOREIGN_KEY_CHECKS=0; - --- ---------------------------- --- Table structure for tb_sys_region --- ---------------------------- -DROP TABLE IF EXISTS `tb_sys_region`; -CREATE TABLE `tb_sys_region` ( - `region_id` varchar(10) NOT NULL COMMENT '区域主键编号', - `region_name` varchar(50) NOT NULL COMMENT '区域名称', - `region_short_name` varchar(10) DEFAULT NULL COMMENT '区域缩写', - `region_code` varchar(20) DEFAULT NULL COMMENT '行政区域编号', - `region_parent_id` varchar(10) DEFAULT NULL COMMENT '区域父id', - `region_level` int DEFAULT NULL COMMENT '区域级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`region_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区域地址表'; - --- ---------------------------- --- Records of tb_sys_region --- ---------------------------- -SET FOREIGN_KEY_CHECKS=1; diff --git a/src/main/java/org/micai/platform/auth/base/exception/SecurityException.java b/src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java similarity index 50% rename from src/main/java/org/micai/platform/auth/base/exception/SecurityException.java rename to src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java index eeb8770..bb37c99 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/SecurityException.java +++ b/src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java @@ -9,32 +9,46 @@ import org.springframework.security.core.AuthenticationException; * @ClassName SecurityException * @Description */ -public class SecurityException extends AuthenticationException { +public class MyAuthException extends AuthenticationException { private Integer errorCode; private String errorMessage; - public SecurityException(String msg, Throwable cause) { + public MyAuthException(String msg, Throwable cause) { super(msg, cause); + this.errorMessage = msg; } - public SecurityException(String msg) { - super(msg); - } - - public SecurityException(Integer code, String msg) { + public MyAuthException(Integer code, String msg) { super(msg); this.errorCode = code; this.errorMessage = msg; } - public SecurityException(Integer errorCode, String errorMessage, Throwable cause) { + public MyAuthException(Integer errorCode, String errorMessage, Throwable cause) { super("[" + errorCode + "]" + errorMessage, cause); this.errorCode = errorCode; this.errorMessage = errorMessage; } - public SecurityException(ConstantEnum constantEnum) { + public MyAuthException(ConstantEnum constantEnum) { this(constantEnum.getCode(), constantEnum.getMessage()); } + + + public Integer getErrorCode() { + return errorCode; + } + + public void setErrorCode(Integer errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } } diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java new file mode 100644 index 0000000..14e1522 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java @@ -0,0 +1,26 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/1/13 17:06 + * @ClassName PermissionMenuDelBo + * @Description + */ +@Data +@ApiModel(value = "PermissionMenuDelBo") +public class PermissionMenuDelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java new file mode 100644 index 0000000..ac9084b --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java @@ -0,0 +1,29 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/13 17:03 + * @ClassName PermissionMenuSaveBo + * @Description + */ +@Data +@ApiModel(value = "PermissionMenuSaveBo") +public class PermissionMenuSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "权限id不能为空") + @ApiModelProperty(value = "权限id") + private Long permissionId; + + @NotNull(message = "菜单id不能为空") + @ApiModelProperty(value = "菜单id") + private Long menuId; +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java new file mode 100644 index 0000000..8cb2e5f --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java @@ -0,0 +1,33 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/13 16:57 + * @ClassName PermissionMenuUpdateBo + * @Description + */ +@Data +@ApiModel(value = "PermissionMenuUpdateBo") +public class PermissionMenuUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id") + private Long id; + + @NotNull(message = "权限id不能为空") + @ApiModelProperty(value = "权限id") + private Long permissionId; + + @NotNull(message = "菜单id不能为空") + @ApiModelProperty(value = "菜单id") + private Long menuId; +} diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java b/src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java new file mode 100644 index 0000000..fece4bb --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java @@ -0,0 +1,26 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/1/13 15:11 + * @ClassName RolePermissionDelBo + * @Description + */ +@Data +@ApiModel(value = "用户删除") +public class RolePermissionDelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; +} diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java b/src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java new file mode 100644 index 0000000..d117fc8 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java @@ -0,0 +1,31 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/13 14:35 + * @ClassName RolePermissionSaveBo + * @Description + */ +@Data +@ApiModel(value = "RolePermissionSaveBo") +public class RolePermissionSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "角色id不能为空") + @ApiModelProperty(value = "角色id") + private Long roleId; + + @NotNull(message = "权限id不能为空") + @ApiModelProperty(value = "权限id") + private Long permissionId; + + +} diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java new file mode 100644 index 0000000..4ef8d5f --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java @@ -0,0 +1,33 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/13 14:38 + * @ClassName RolePermissionUpateBo + * @Description + */ +@Data +@ApiModel(value = "RolePermissionUpdateBo") +public class RolePermissionUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id") + private Long id; + + @NotNull(message = "用户id不能为空") + @ApiModelProperty(value = "用户id") + private Long userId; + + @NotNull(message = "角色id不能为空") + @ApiModelProperty(value = "角色id") + private Long roleId; +} diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java b/src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java new file mode 100644 index 0000000..5e76d21 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java @@ -0,0 +1,26 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/1/14 9:27 + * @ClassName UserRoleDelBo + * @Description + */ +@Data +@ApiModel(value = "UserRoleDelBo") +public class UserRoleDelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; +} diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java b/src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java new file mode 100644 index 0000000..8239ace --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java @@ -0,0 +1,30 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/14 9:26 + * @ClassName UserRoleSaveBo + * @Description + */ +@Data +@ApiModel(value = "UserRoleSaveBo") +public class UserRoleSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "用户id不能为空") + @ApiModelProperty(value = "用户id") + private Long userId; + + @NotNull(message = "角色id不能为空") + @ApiModelProperty(value = "角色id") + private Long roleId; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java new file mode 100644 index 0000000..bea8fa2 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java @@ -0,0 +1,34 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2022/1/14 9:26 + * @ClassName UserRoleUpdateBo + * @Description + */ +@Data +@ApiModel(value = "UserRoleUpdateBo") +public class UserRoleUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id") + private Long id; + + @NotNull(message = "用户id不能为空") + @ApiModelProperty(value = "用户id") + private Long userId; + + @NotNull(message = "角色id不能为空") + @ApiModelProperty(value = "角色id") + private Long roleId; + +} diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java index 059542d..240702d 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java @@ -74,6 +74,11 @@ public class ConstantCode { */ public static final String AUTHORIZATION = "Authorization"; + /** + * 认证 + */ + public static final String REFRESH_AUTHORIZATION = "refreshAuthorization"; + /** * 通行前缀 */ @@ -255,4 +260,9 @@ public class ConstantCode { * password */ public static final String PASSWORD = "password"; + + /** + * JSESSIONID + */ + public static final String JSESSIONID = "JSESSIONID"; } diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java index 3842dfc..4fc71fa 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java @@ -72,7 +72,13 @@ public enum ConstantEnum { ACCESS_DENIED(HttpServletResponse.SC_FORBIDDEN, "Token非法参数异常"), - IMAGE_ERROR(10029, "验证码为空或者验证码输入有误"); + IMAGE_ERROR(10029, "验证码为空或者验证码输入有误"), + + LOGINED(10030, "账号已被登录"), + + EXPIRED_LOGIN(HttpServletResponse.SC_BAD_REQUEST, "登录超时,请重新登录"), + + DATA_DUPLICATION(10031, "数据重复"); diff --git a/src/main/java/org/micai/platform/auth/controller/OrganUserController.java b/src/main/java/org/micai/platform/auth/controller/OrganUserController.java new file mode 100644 index 0000000..b7afab9 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/controller/OrganUserController.java @@ -0,0 +1,20 @@ +package org.micai.platform.auth.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author liucong + * @since 2022-01-13 + */ +@RestController +@RequestMapping("/Tb/organUser") +public class OrganUserController { + +} + diff --git a/src/main/java/org/micai/platform/auth/controller/PermissionController.java b/src/main/java/org/micai/platform/auth/controller/PermissionController.java index 4fc5cea..aaed3e5 100644 --- a/src/main/java/org/micai/platform/auth/controller/PermissionController.java +++ b/src/main/java/org/micai/platform/auth/controller/PermissionController.java @@ -5,21 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.bo.PermissionDelBo; import org.micai.platform.auth.bo.PermissionFindBo; import org.micai.platform.auth.bo.PermissionSaveBo; import org.micai.platform.auth.bo.PermissionUpdateBo; import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.service.PermissionService; import org.micai.platform.auth.vo.RoleListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -41,8 +38,8 @@ public class PermissionController extends BaseController{ private PermissionService permissionService; @ApiOperation(value = "获取权限列表", notes = "获取权限列表") - @PostMapping("/getPermissionList") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/list") + @PreAuthorize("hasAnyAuthority('sys:permission:list')") public Result getPermissionList(@RequestBody PermissionFindBo bo){ Result result; try { @@ -60,8 +57,8 @@ public class PermissionController extends BaseController{ @ApiOperation(value = "更新权限信息", notes = "更新权限信息") - @PostMapping("/updatePermission") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:permission:update')") public Result updatePermission(@RequestBody @Valid PermissionUpdateBo bo){ Result result; try { @@ -78,8 +75,8 @@ public class PermissionController extends BaseController{ } @ApiOperation(value = "新增权限", notes = "新增权限") - @PostMapping("/savePermission") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:permission:save')") public Result savePermission(@RequestBody @Valid PermissionSaveBo bo){ Result result; try { @@ -96,8 +93,8 @@ public class PermissionController extends BaseController{ } @ApiOperation(value = "删除权限", notes = "删除权限") - @PostMapping("/delPermission") - @PreAuthorize("hasAnyAuthority('root')") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:permission:del')") public Result delPermission(@RequestBody @Valid PermissionDelBo bo){ Result result; try { diff --git a/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java b/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java new file mode 100644 index 0000000..17a8707 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java @@ -0,0 +1,89 @@ +package org.micai.platform.auth.controller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.bo.*; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.service.PermissionMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + *

+ * 前端控制器 + *

+ * + * @author liucong + * @since 2022-01-13 + */ +@RestController +@RequestMapping("/permissionMenu") +@Slf4j +@Api(tags = "权限菜单管理", value = "权限菜单管理") +public class PermissionMenuController extends BaseController{ + @Autowired + private PermissionMenuService permissionMenuService; + + + @ApiOperation(value = "更新角色菜单权限", notes = "更新角色菜单权限") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:permissionMenu:update')") + public Result updatePM(@RequestBody @Valid PermissionMenuUpdateBo bo){ + Result result; + try { + permissionMenuService.updatePM(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增角色菜单权限", notes = "新增角色菜单权限") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:permissionMenu:save')") + public Result savePM(@RequestBody @Valid PermissionMenuSaveBo bo){ + Result result; + try { + permissionMenuService.savePM(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除角色菜单权限", notes = "删除角色菜单权限") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:permissionMenu:del')") + public Result delPM(@RequestBody @Valid PermissionMenuDelBo bo){ + Result result; + try { + permissionMenuService.delPM(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } +} + diff --git a/src/main/java/org/micai/platform/auth/controller/RoleController.java b/src/main/java/org/micai/platform/auth/controller/RoleController.java index 9118018..7168345 100644 --- a/src/main/java/org/micai/platform/auth/controller/RoleController.java +++ b/src/main/java/org/micai/platform/auth/controller/RoleController.java @@ -5,21 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.bo.RoleDelBo; import org.micai.platform.auth.bo.RoleFindBo; import org.micai.platform.auth.bo.RoleSaveBo; import org.micai.platform.auth.bo.RoleUpdateBo; import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.service.RoleService; import org.micai.platform.auth.vo.UserListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -41,8 +38,8 @@ public class RoleController extends BaseController { private RoleService roleService; @ApiOperation(value = "获取角色列表", notes = "获取角色列表") - @PostMapping("/getRoleList") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/list") + @PreAuthorize("hasAnyAuthority('sys:role:list')") public Result getRoleList(@RequestBody RoleFindBo bo){ Result result; try { @@ -60,8 +57,8 @@ public class RoleController extends BaseController { @ApiOperation(value = "更新角色信息", notes = "更新角色信息") - @PostMapping("/updateRole") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:role:update')") public Result updateRole(@RequestBody @Valid RoleUpdateBo bo){ Result result; try { @@ -78,8 +75,8 @@ public class RoleController extends BaseController { } @ApiOperation(value = "新增角色", notes = "新增角色") - @PostMapping("/saveRole") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:role:save')") public Result saveRole(@RequestBody @Valid RoleSaveBo bo){ Result result; try { @@ -96,8 +93,8 @@ public class RoleController extends BaseController { } @ApiOperation(value = "删除角色", notes = "删除角色") - @PostMapping("/delRole") - @PreAuthorize("hasAnyAuthority('root')") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:role:del')") public Result delRole(@RequestBody @Valid RoleDelBo bo){ Result result; try { diff --git a/src/main/java/org/micai/platform/auth/controller/RolePermissionController.java b/src/main/java/org/micai/platform/auth/controller/RolePermissionController.java new file mode 100644 index 0000000..acc5640 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/controller/RolePermissionController.java @@ -0,0 +1,92 @@ +package org.micai.platform.auth.controller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.bo.RolePermissionDelBo; +import org.micai.platform.auth.bo.RolePermissionSaveBo; +import org.micai.platform.auth.bo.RolePermissionUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.service.RolePermissionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + *

+ * 前端控制器 + *

+ * + * @author liucong + * @since 2022-01-13 + */ +@RestController +@RequestMapping("/rolePermission") +@Slf4j +@Api(tags = "角色权限管理", value = "角色权限管理") +public class RolePermissionController extends BaseController{ + + @Autowired + private RolePermissionService rolePermissionService; + + + @ApiOperation(value = "更新角色权限", notes = "更新角色权限") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:rolePermission:update')") + public Result updateRP(@RequestBody @Valid RolePermissionUpdateBo bo){ + Result result; + try { + rolePermissionService.updateRP(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增角色权限", notes = "新增角色权限") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:rolePermission:save')") + public Result saveRP(@RequestBody @Valid RolePermissionSaveBo bo){ + Result result; + try { + rolePermissionService.saveRP(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除角色权限", notes = "删除角色权限") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:rolePermission:del')") + public Result delRP(@RequestBody @Valid RolePermissionDelBo bo){ + Result result; + try { + rolePermissionService.delRP(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } +} + diff --git a/src/main/java/org/micai/platform/auth/controller/SysDictController.java b/src/main/java/org/micai/platform/auth/controller/SysDictController.java index 853afcc..ef77b8a 100644 --- a/src/main/java/org/micai/platform/auth/controller/SysDictController.java +++ b/src/main/java/org/micai/platform/auth/controller/SysDictController.java @@ -2,8 +2,7 @@ package org.micai.platform.auth.controller; import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RestController; /** *

@@ -13,7 +12,7 @@ import org.springframework.stereotype.Controller; * @author liucong * @since 2021-12-06 */ -@Controller +@RestController @RequestMapping("/Tb/sysDict") public class SysDictController { diff --git a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java b/src/main/java/org/micai/platform/auth/controller/SysMenuController.java index b769d3c..d593be8 100644 --- a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java +++ b/src/main/java/org/micai/platform/auth/controller/SysMenuController.java @@ -5,19 +5,16 @@ import cn.hutool.core.lang.tree.Tree; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.bo.MenuDelBo; import org.micai.platform.auth.bo.MenuSaveBo; import org.micai.platform.auth.bo.MenuUpdateBo; import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.service.SysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; @@ -40,7 +37,8 @@ public class SysMenuController extends BaseController{ private SysMenuService sysMenuService; - @PostMapping("/find") + @PostMapping("/list") + @PreAuthorize("hasAnyAuthority('sys:sysMenu:list')") @ApiOperation(value = "查询菜单", notes = "登录后查询菜单列表") public Result find() { Result result; @@ -59,8 +57,8 @@ public class SysMenuController extends BaseController{ @ApiOperation(value = "更新菜单", notes = "更新菜单") - @PostMapping("/updateMenu") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:sysMenu:update')") public Result updateMenu(@RequestBody @Valid MenuUpdateBo bo){ Result result; try { @@ -77,8 +75,8 @@ public class SysMenuController extends BaseController{ } @ApiOperation(value = "新增菜单", notes = "新增菜单") - @PostMapping("/saveMenu") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:sysMenu:save')") public Result saveMenu(@RequestBody @Valid MenuSaveBo bo){ Result result; try { @@ -95,8 +93,8 @@ public class SysMenuController extends BaseController{ } @ApiOperation(value = "删除菜单", notes = "删除菜单") - @PostMapping("/delMenu") - @PreAuthorize("hasAnyAuthority('root')") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:sysMenu:del')") public Result delMenu(@RequestBody @Valid MenuDelBo bo){ Result result; try { diff --git a/src/main/java/org/micai/platform/auth/controller/UserController.java b/src/main/java/org/micai/platform/auth/controller/UserController.java index 95a8205..a36e4b5 100644 --- a/src/main/java/org/micai/platform/auth/controller/UserController.java +++ b/src/main/java/org/micai/platform/auth/controller/UserController.java @@ -15,6 +15,7 @@ import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.vo.UserListVo; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.util.HashMap; @@ -27,13 +28,14 @@ import java.util.Map; @Slf4j @Api(tags = "用户管理", value = "用户管理") @RestController -@RequestMapping("/users") +@RequestMapping("/user") public class UserController extends BaseController { /** * 注册用户 默认开启白名单 * @param user */ + @ApiIgnore @ApiOperation(value = "注册用户",notes = "注册用户") @PostMapping("/signup") public Result signup(@RequestBody User user) { @@ -51,9 +53,9 @@ public class UserController extends BaseController { * 获取用户列表 * @return */ + @ApiIgnore @ApiOperation(value = "获取用户列表old",notes = "获取用户列表old") @GetMapping("/userList") - @PreAuthorize("hasAnyAuthority('admin')") public Map userList(){ List users = userService.findUserList(); Map map = new HashMap(); @@ -65,6 +67,7 @@ public class UserController extends BaseController { * 获取用户权限 * @return */ + @ApiIgnore @ApiOperation(value = "获取用户权限",notes = "获取用户权限") @GetMapping("/authorityList") public List authorityList(){ @@ -78,8 +81,8 @@ public class UserController extends BaseController { * @return */ @ApiOperation(value = "获取用户列表", notes = "获取用户列表") - @PostMapping("/getUserList") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/list") + @PreAuthorize("hasAnyAuthority('sys:user:List')") public Result getUserList(@RequestBody UserFindBo bo){ Result result; try { @@ -97,8 +100,8 @@ public class UserController extends BaseController { @ApiOperation(value = "更新用户", notes = "更新用户") - @PostMapping("/updateUser") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:user:update')") public Result updateUser(@RequestBody @Valid UserUpdateBo bo){ Result result; try { @@ -115,8 +118,8 @@ public class UserController extends BaseController { } @ApiOperation(value = "新增用户", notes = "新增用户") - @PostMapping("/saveUser") - @PreAuthorize("hasAnyAuthority('root')") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:user:save')") public Result saveUser(@RequestBody @Valid UserSaveBo bo){ Result result; try { @@ -133,8 +136,8 @@ public class UserController extends BaseController { } @ApiOperation(value = "删除用户", notes = "删除用户") - @PostMapping("/delUser") - @PreAuthorize("hasAnyAuthority('root')") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:user:del')") public Result delUser(@RequestBody @Valid UserDelBo bo){ Result result; try { diff --git a/src/main/java/org/micai/platform/auth/controller/UserRoleController.java b/src/main/java/org/micai/platform/auth/controller/UserRoleController.java new file mode 100644 index 0000000..b2d7254 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/controller/UserRoleController.java @@ -0,0 +1,91 @@ +package org.micai.platform.auth.controller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.base.result.Result; +import org.micai.platform.auth.bo.UserRoleDelBo; +import org.micai.platform.auth.bo.UserRoleSaveBo; +import org.micai.platform.auth.bo.UserRoleUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.service.UserRoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + *

+ * 前端控制器 + *

+ * + * @author liucong + * @since 2022-01-13 + */ +@RestController +@RequestMapping("/userRole") +@Slf4j +@Api(tags = "用户角色管理", value = "用户角色管理") +public class UserRoleController extends BaseController{ + @Autowired + private UserRoleService userRoleService; + + + @ApiOperation(value = "更新用户角色权限", notes = "更新用户角色权限") + @PostMapping("/update") + @PreAuthorize("hasAnyAuthority('sys:userRole:update')") + public Result updateUR(@RequestBody @Valid UserRoleUpdateBo bo){ + Result result; + try { + userRoleService.updateUR(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增用户角色权限", notes = "新增用户角色权限") + @PostMapping("/save") + @PreAuthorize("hasAnyAuthority('sys:userRole:save')") + public Result saveUR(@RequestBody @Valid UserRoleSaveBo bo){ + Result result; + try { + userRoleService.saveUR(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除用户角色权限", notes = "删除用户角色权限") + @DeleteMapping("/del") + @PreAuthorize("hasAnyAuthority('sys:userRole:del')") + public Result delUR(@RequestBody @Valid UserRoleDelBo bo){ + Result result; + try { + userRoleService.delUR(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } +} + diff --git a/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java b/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java index cab10c5..70b2701 100644 --- a/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java +++ b/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java @@ -2,7 +2,6 @@ package org.micai.platform.auth.dto; import io.swagger.annotations.ApiModel; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.util.List; @@ -15,7 +14,6 @@ import java.util.List; */ @ApiModel(value = "获取用户的角色/权限的实体") @Data -@EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class UserAuthenticationDto { diff --git a/src/main/java/org/micai/platform/auth/entity/OrganUser.java b/src/main/java/org/micai/platform/auth/entity/OrganUser.java index 18e160a..bd5b74d 100644 --- a/src/main/java/org/micai/platform/auth/entity/OrganUser.java +++ b/src/main/java/org/micai/platform/auth/entity/OrganUser.java @@ -1,9 +1,6 @@ package org.micai.platform.auth.entity; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -29,8 +26,10 @@ public class OrganUser implements Serializable { private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @ApiModelProperty(value = "组织机构id") - @TableId(value = "organ_id", type = IdType.AUTO) private Long organId; @ApiModelProperty(value = "用户id") @@ -43,5 +42,15 @@ public class OrganUser implements Serializable { @TableField(fill = FieldFill.INSERT) private Date createTime; + @ApiModelProperty(value = "修改用户id") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; } diff --git a/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java b/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java index 7e8149d..3518962 100644 --- a/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java +++ b/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java @@ -1,7 +1,6 @@ package org.micai.platform.auth.entity; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,6 +26,9 @@ public class PermissionMenu implements Serializable { private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @ApiModelProperty(value = "权限id") private Long permissionId; @@ -40,5 +42,15 @@ public class PermissionMenu implements Serializable { @TableField(fill = FieldFill.INSERT) private Date createTime; + @ApiModelProperty(value = "修改用户id") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; } diff --git a/src/main/java/org/micai/platform/auth/entity/RolePermission.java b/src/main/java/org/micai/platform/auth/entity/RolePermission.java index d51e43d..8ce4d26 100644 --- a/src/main/java/org/micai/platform/auth/entity/RolePermission.java +++ b/src/main/java/org/micai/platform/auth/entity/RolePermission.java @@ -1,7 +1,6 @@ package org.micai.platform.auth.entity; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,6 +26,9 @@ public class RolePermission implements Serializable { private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @ApiModelProperty(value = "角色id") private Long roleId; @@ -40,5 +42,15 @@ public class RolePermission implements Serializable { @TableField(fill = FieldFill.INSERT) private Date createTime; + @ApiModelProperty(value = "修改用户id") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; } diff --git a/src/main/java/org/micai/platform/auth/entity/UserRole.java b/src/main/java/org/micai/platform/auth/entity/UserRole.java index f68b17e..9eb02ba 100644 --- a/src/main/java/org/micai/platform/auth/entity/UserRole.java +++ b/src/main/java/org/micai/platform/auth/entity/UserRole.java @@ -1,7 +1,6 @@ package org.micai.platform.auth.entity; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,18 +26,32 @@ public class UserRole implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @ApiModelProperty(value = "用户id") private Long userId; @ApiModelProperty(value = "角色id") private Long roleId; - @ApiModelProperty(value = "创建人id") + @ApiModelProperty(value = "创建用户id") private Long creatUserId; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) private Date createTime; + @ApiModelProperty(value = "修改用户id") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; } diff --git a/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java b/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java index 3cd8d7a..6d733b8 100644 --- a/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java @@ -1,7 +1,7 @@ package org.micai.platform.auth.filter; import cn.hutool.core.util.ObjectUtil; -import org.micai.platform.auth.base.exception.SecurityException; +import org.micai.platform.auth.base.exception.MyAuthException; import org.micai.platform.auth.constant.ConstantCode; import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; @@ -36,14 +36,14 @@ public class ImageCodeValidateFilter extends OncePerRequestFilter { if (imageCodeFlag){ String code = request.getParameter(ConstantCode.IMAGE_CODE); if (ObjectUtil.isEmpty(code)) { - throw new SecurityException(ConstantEnum.IMAGE_ERROR); + throw new MyAuthException(ConstantEnum.IMAGE_ERROR); } String imageCode = (String) request.getSession().getAttribute(ConstantCode.SESSION_KEY); if (ObjectUtil.isEmpty(imageCode) && !imageCode.equals(code)){ - throw new SecurityException(ConstantEnum.IMAGE_ERROR); + throw new MyAuthException(ConstantEnum.IMAGE_ERROR); } } - } catch (SecurityException e) { + } catch (MyAuthException e) { customAuthenticationFailureHandler.onAuthenticationFailure(request,response,e); } diff --git a/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java b/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java index 765dc95..8e40cb2 100644 --- a/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java +++ b/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.micai.platform.auth.base.result.Result; import org.micai.platform.auth.constant.ConstantCode; import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.authentication.AuthenticationFailureHandler; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import org.springframework.stereotype.Component; import javax.servlet.ServletException; @@ -19,8 +19,8 @@ import java.io.PrintWriter; * @ClassName CustomAuthenticationFailureHandler * @Description */ -@Component(value = "customAuthenticationFailureHandler") -public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler { +@Component +public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); diff --git a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java index 1700b89..425bd4e 100644 --- a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java +++ b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java @@ -3,7 +3,7 @@ package org.micai.platform.auth.provider; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.SecurityException; +import org.micai.platform.auth.base.exception.MyAuthException; import org.micai.platform.auth.constant.ConstantCode; import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.entity.*; @@ -74,55 +74,53 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { /*UserDetails userDetails = userDetailsService.loadUserByUsername(name);*/ User userDetails = userService.findByUsername(name); if (ObjectUtil.isEmpty(userDetails)) { - throw new SecurityException(ConstantEnum.USER_CODE_ERROR); + throw new MyAuthException(ConstantEnum.USER_CODE_ERROR); } if (!bCryptPasswordEncoder.matches(password, userDetails.getPassword())) { - throw new SecurityException(ConstantEnum.USER_CODE_ERROR); + throw new MyAuthException(ConstantEnum.USER_CODE_ERROR); } //获取用户权限 List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,userDetails.getId())); if (ObjectUtil.isEmpty(userRoleList)){ - throw new SecurityException(ConstantEnum.NO_ROLE); + throw new MyAuthException(ConstantEnum.NO_ROLE); } List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); List roleList = roleService.list(new QueryWrapper().lambda() .in(Role::getId,roleIdList).eq(Role::getStatus,ConstantCode.STR_Z_ONE)); if (ObjectUtil.isEmpty(roleList)){ - throw new SecurityException(ConstantEnum.NO_ROLE); + throw new MyAuthException(ConstantEnum.NO_ROLE); } List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() .in(RolePermission::getRoleId,roleIdList)); if (ObjectUtil.isEmpty(rolePermissionList)){ - throw new SecurityException(ConstantEnum.NO_PERMISSION); + throw new MyAuthException(ConstantEnum.NO_PERMISSION); } List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); List permissionList = permissionService.list(new QueryWrapper().lambda() .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); if (ObjectUtil.isEmpty(permissionList)){ - throw new SecurityException(ConstantEnum.NO_PERMISSION); + throw new MyAuthException(ConstantEnum.NO_PERMISSION); } StringBuilder roleStr = new StringBuilder(); - for (int i = 0; i < roleList.size(); i++) { - roleStr.append(ConstantCode.DEFAULT_ROLE_PREFIX).append(roleList.get(i).getRoleCode()); - if (i != (roleList.size() - 1)){ - roleStr.append(ConstantCode.SEPARATOR); - } + for (Role role : roleList) { + roleStr.append(ConstantCode.DEFAULT_ROLE_PREFIX).append(role.getRoleCode()); + roleStr.append(ConstantCode.SEPARATOR); } StringBuilder permissionStr = new StringBuilder(); for (int i = 0; i < permissionList.size(); i++) { permissionStr.append(permissionList.get(i).getPermissionCode()); - if (i != (roleList.size() - 1)){ + if ((permissionList.size() - 1) != i){ permissionStr.append(ConstantCode.SEPARATOR); } } - String authStr = roleStr.append(ConstantCode.SEPARATOR).append(permissionStr).toString(); + String authStr = roleStr.append(permissionStr).toString(); // 这里设置权限和角色 List grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authStr); // 生成令牌 这里令牌里面存入了:name,password,authorities, 当然你也可以放其他内容 name = userDetails.getId() + "-" + name; - log.info("权限:{} , 角色:{} , 用户:{}",permissionStr,roleStr,name); + log.info("authStr:{} , 用户:{}", authStr, name); return new UsernamePasswordAuthenticationToken(name, password, grantedAuthorities); } diff --git a/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java b/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java new file mode 100644 index 0000000..68688ce --- /dev/null +++ b/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java @@ -0,0 +1,19 @@ +package org.micai.platform.auth.service; + +import org.micai.platform.auth.bo.PermissionMenuDelBo; +import org.micai.platform.auth.bo.PermissionMenuSaveBo; +import org.micai.platform.auth.bo.PermissionMenuUpdateBo; + +/** + * @Author liuCong + * @Date 2022/1/13 16:54 + * @ClassName PermissionMenuService + * @Description + */ +public interface PermissionMenuService { + void updatePM(PermissionMenuUpdateBo bo) throws Exception; + + void savePM(PermissionMenuSaveBo bo) throws Exception; + + void delPM(PermissionMenuDelBo bo) throws Exception; +} diff --git a/src/main/java/org/micai/platform/auth/service/RolePermissionService.java b/src/main/java/org/micai/platform/auth/service/RolePermissionService.java index 6f1d1c1..e1697c8 100644 --- a/src/main/java/org/micai/platform/auth/service/RolePermissionService.java +++ b/src/main/java/org/micai/platform/auth/service/RolePermissionService.java @@ -1,5 +1,8 @@ package org.micai.platform.auth.service; +import org.micai.platform.auth.bo.RolePermissionDelBo; +import org.micai.platform.auth.bo.RolePermissionSaveBo; +import org.micai.platform.auth.bo.RolePermissionUpdateBo; import org.micai.platform.auth.entity.RolePermission; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface RolePermissionService extends IService { + void updateRP(RolePermissionUpdateBo bo) throws Exception; + + void saveRP(RolePermissionSaveBo bo) throws Exception; + + void delRP(RolePermissionDelBo bo) throws Exception; } diff --git a/src/main/java/org/micai/platform/auth/service/UserRoleService.java b/src/main/java/org/micai/platform/auth/service/UserRoleService.java index c76a69e..45ce2f0 100644 --- a/src/main/java/org/micai/platform/auth/service/UserRoleService.java +++ b/src/main/java/org/micai/platform/auth/service/UserRoleService.java @@ -1,5 +1,8 @@ package org.micai.platform.auth.service; +import org.micai.platform.auth.bo.UserRoleDelBo; +import org.micai.platform.auth.bo.UserRoleSaveBo; +import org.micai.platform.auth.bo.UserRoleUpdateBo; import org.micai.platform.auth.entity.UserRole; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface UserRoleService extends IService { + void updateUR(UserRoleUpdateBo bo) throws Exception; + + void saveUR(UserRoleSaveBo bo) throws Exception; + + void delUR(UserRoleDelBo bo) throws Exception; } diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java new file mode 100644 index 0000000..5bf5a2f --- /dev/null +++ b/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java @@ -0,0 +1,73 @@ +package org.micai.platform.auth.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.bo.PermissionMenuDelBo; +import org.micai.platform.auth.bo.PermissionMenuSaveBo; +import org.micai.platform.auth.bo.PermissionMenuUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.dto.UserAuthenticationDto; +import org.micai.platform.auth.entity.PermissionMenu; +import org.micai.platform.auth.mapper.PermissionMenuMapper; +import org.micai.platform.auth.service.PermissionMenuService; +import org.micai.platform.auth.utils.AuthenticationManger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/1/13 16:54 + * @ClassName PermissionMenuServiceImpl + * @Description + */ +@Service +public class PermissionMenuServiceImpl extends ServiceImpl implements PermissionMenuService { + @Autowired + private PermissionMenuMapper permissionMenuMapper; + + @Override + public void updatePM(PermissionMenuUpdateBo bo) throws Exception { + PermissionMenu permissionMenu = BeanUtil.copyProperties(bo, PermissionMenu.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + permissionMenu.setUpdateUserId(authentication.getId()); + PermissionMenu permissionMenuEn = permissionMenuMapper.selectById(permissionMenu.getId()); + permissionMenu.setVersion(permissionMenuEn.getVersion()); + permissionMenuMapper.updateById(permissionMenu); + } + + @Override + public void savePM(PermissionMenuSaveBo bo) throws Exception { + PermissionMenu permissionMenu = BeanUtil.copyProperties(bo, PermissionMenu.class); + + //不能有重复的 + List permissionMenus = permissionMenuMapper.selectList(new QueryWrapper().lambda() + .eq(PermissionMenu::getPermissionId, bo.getPermissionId()) + .eq(PermissionMenu::getMenuId, bo.getMenuId())); + + if (ObjectUtil.isNotEmpty(permissionMenus)) { + throw new PlatformException(ConstantEnum.DATA_DUPLICATION); + } + + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + permissionMenu + .setCreateUserId(authentication.getId()) + .setUpdateUserId(authentication.getId()); + permissionMenuMapper.insert(permissionMenu); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delPM(PermissionMenuDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = permissionMenuMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } +} diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java index 85a86b1..b5aa464 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java @@ -2,10 +2,10 @@ package org.micai.platform.auth.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.base.exception.PlatformException; import org.micai.platform.auth.bo.PermissionDelBo; import org.micai.platform.auth.bo.PermissionFindBo; import org.micai.platform.auth.bo.PermissionSaveBo; @@ -14,7 +14,6 @@ import org.micai.platform.auth.constant.ConstantCode; import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.Permission; -import org.micai.platform.auth.base.exception.PlatformException; import org.micai.platform.auth.mapper.PermissionMapper; import org.micai.platform.auth.service.PermissionService; import org.micai.platform.auth.utils.AuthenticationManger; @@ -68,7 +67,7 @@ public class PermissionServiceImpl extends ServiceImpl @@ -16,5 +30,46 @@ import org.springframework.stereotype.Service; */ @Service public class RolePermissionServiceImpl extends ServiceImpl implements RolePermissionService { + @Autowired + private RolePermissionMapper rolePermissionMapper; + + @Override + public void updateRP(RolePermissionUpdateBo bo) throws Exception { + RolePermission rolePermission = BeanUtil.copyProperties(bo, RolePermission.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + rolePermission.setUpdateUserId(authentication.getId()); + RolePermission rolePermissionEn = rolePermissionMapper.selectById(rolePermission.getId()); + rolePermission.setVersion(rolePermissionEn.getVersion()); + rolePermissionMapper.updateById(rolePermission); + } + + @Override + public void saveRP(RolePermissionSaveBo bo) throws Exception { + RolePermission rolePermission = BeanUtil.copyProperties(bo, RolePermission.class); + + //不能有重复的 + List rolePermissions = rolePermissionMapper.selectList(new QueryWrapper().lambda() + .eq(RolePermission::getPermissionId, bo.getPermissionId()) + .eq(RolePermission::getRoleId, bo.getRoleId())); + + if (ObjectUtil.isNotEmpty(rolePermissions)) { + throw new PlatformException(ConstantEnum.DATA_DUPLICATION); + } + + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + rolePermission + .setCreateUserId(authentication.getId()) + .setUpdateUserId(authentication.getId()); + rolePermissionMapper.insert(rolePermission); + } + @Override + @Transactional(rollbackFor = Exception.class) + public void delRP(RolePermissionDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = rolePermissionMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } } diff --git a/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java index d8d89a2..c9d7a45 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java @@ -1,10 +1,24 @@ package org.micai.platform.auth.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.auth.bo.UserRoleDelBo; +import org.micai.platform.auth.bo.UserRoleSaveBo; +import org.micai.platform.auth.bo.UserRoleUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.UserRole; import org.micai.platform.auth.mapper.UserRoleMapper; import org.micai.platform.auth.service.UserRoleService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.utils.AuthenticationManger; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +31,45 @@ import org.springframework.stereotype.Service; @Service public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + @Autowired + private UserRoleMapper userRoleMapper; + + @Override + public void updateUR(UserRoleUpdateBo bo) throws Exception { + UserRole userRole = BeanUtil.copyProperties(bo, UserRole.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + userRole.setUpdateUserId(authentication.getId()); + UserRole userRoleEn = userRoleMapper.selectById(userRole.getId()); + userRole.setVersion(userRoleEn.getVersion()); + userRoleMapper.updateById(userRole); + } + + @Override + public void saveUR(UserRoleSaveBo bo) throws Exception { + UserRole userRole = BeanUtil.copyProperties(bo, UserRole.class); + + //不能有重复的 + List userRoles = userRoleMapper.selectList(new QueryWrapper().lambda() + .eq(UserRole::getUserId, bo.getUserId()) + .eq(UserRole::getRoleId, bo.getRoleId())); + + if (ObjectUtil.isNotEmpty(userRoles)) { + throw new PlatformException(ConstantEnum.DATA_DUPLICATION); + } + + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + userRole.setCreatUserId(authentication.getId()) + .setUpdateUserId(authentication.getId()); + userRoleMapper.insert(userRole); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delUR(UserRoleDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = userRoleMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } } -- Gitee