Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot
This commit is contained in:
7
pom.xml
7
pom.xml
@@ -7,13 +7,13 @@
|
|||||||
<groupId>com.youlai</groupId>
|
<groupId>com.youlai</groupId>
|
||||||
<artifactId>youlai-boot</artifactId>
|
<artifactId>youlai-boot</artifactId>
|
||||||
<version>1.2.0</version>
|
<version>1.2.0</version>
|
||||||
<name>SpringBoot单体应用</name>
|
<name>有来权限管理系统(单体)</name>
|
||||||
<description>基于SpringBoot快速构建的后台权限管理系统</description>
|
<description>基于SpringBoot快速构建的后台权限管理系统</description>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.7.5</version>
|
<version>2.7.6</version>
|
||||||
<relativePath/>
|
<relativePath/>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<knife4j.version>3.0.2</knife4j.version>
|
<knife4j.version>3.0.2</knife4j.version>
|
||||||
|
|
||||||
<spring.boot.version>2.7.5</spring.boot.version>
|
<spring.boot.version>2.7.6</spring.boot.version>
|
||||||
|
|
||||||
<mapstruct.version>1.5.2.Final</mapstruct.version>
|
<mapstruct.version>1.5.2.Final</mapstruct.version>
|
||||||
|
|
||||||
@@ -96,7 +96,6 @@
|
|||||||
<version>${druid.version}</version>
|
<version>${druid.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>knife4j-spring-boot-starter</artifactId>
|
<artifactId>knife4j-spring-boot-starter</artifactId>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.system.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.system.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.system.common.enums;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.system.common.enums;
|
||||||
|
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -28,12 +28,11 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 全局系统异常处理
|
* 全局系统异常处理
|
||||||
|
*
|
||||||
* 调整异常处理的HTTP状态码,丰富异常处理类型
|
* 调整异常处理的HTTP状态码,丰富异常处理类型
|
||||||
*
|
*
|
||||||
* @author hxrui
|
|
||||||
* @author Gadfly
|
* @author Gadfly
|
||||||
* @date 2020-02-25 13:54
|
* @date 2020-02-25 13:54
|
||||||
* <p>
|
|
||||||
**/
|
**/
|
||||||
@RestControllerAdvice
|
@RestControllerAdvice
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -166,12 +165,10 @@ public class GlobalExceptionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
@ExceptionHandler(BusinessException.class)
|
@ExceptionHandler(BusinessException.class)
|
||||||
public <T> Result<T> handleBizException(BusinessException e) {
|
public <T> Result<T> handleBizException(BusinessException e) {
|
||||||
log.error("业务异常,异常原因:{}", e.getMessage(), e);
|
log.error("biz exception,{}", e.getMessage());
|
||||||
if (e.getResultCode() != null) {
|
if (e.getResultCode() != null) {
|
||||||
return Result.failed(e.getResultCode());
|
return Result.failed(e.getResultCode());
|
||||||
}
|
}
|
||||||
@@ -181,6 +178,7 @@ public class GlobalExceptionHandler {
|
|||||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
@ExceptionHandler(Exception.class)
|
@ExceptionHandler(Exception.class)
|
||||||
public <T> Result<T> handleException(Exception e) {
|
public <T> Result<T> handleException(Exception e) {
|
||||||
|
log.error("unknown exception, {}", e.getMessage());
|
||||||
return Result.failed(e.getLocalizedMessage());
|
return Result.failed(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.util;
|
package com.youlai.system.common.util;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.system.common.result.Result;
|
||||||
@@ -8,7 +8,6 @@ import org.springframework.http.MediaType;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* response 响应工具类
|
* response 响应工具类
|
||||||
@@ -3,7 +3,7 @@ package com.youlai.system.config;
|
|||||||
import com.youlai.system.security.filter.JwtAuthenticationFilter;
|
import com.youlai.system.security.filter.JwtAuthenticationFilter;
|
||||||
import com.youlai.system.security.exception.MyAccessDeniedHandler;
|
import com.youlai.system.security.exception.MyAccessDeniedHandler;
|
||||||
import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
|
import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
|
||||||
import com.youlai.system.security.jwt.JwtTokenManager;
|
import com.youlai.system.security.JwtTokenManager;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ package com.youlai.system.controller;
|
|||||||
|
|
||||||
|
|
||||||
import com.youlai.system.common.result.Result;
|
import com.youlai.system.common.result.Result;
|
||||||
import com.youlai.system.security.jwt.JwtTokenManager;
|
import com.youlai.system.pojo.dto.TokenResult;
|
||||||
|
import com.youlai.system.security.JwtTokenManager;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -17,24 +18,27 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
@RequestMapping("/api/v1/auth")
|
@RequestMapping("/api/v1/auth")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class AuthController {
|
public class AuthController {
|
||||||
|
|
||||||
private final AuthenticationManager authenticationManager;
|
private final AuthenticationManager authenticationManager;
|
||||||
|
|
||||||
private final JwtTokenManager jwtTokenManager;
|
private final JwtTokenManager jwtTokenManager;
|
||||||
|
|
||||||
@ApiOperation(value = "登录",notes = "生成token")
|
@ApiOperation(value = "登录")
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public Result login(
|
public Result<TokenResult> login(
|
||||||
@RequestParam String username,
|
@RequestParam String username,
|
||||||
@RequestParam String password
|
@RequestParam String password
|
||||||
) {
|
) {
|
||||||
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username,
|
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
|
||||||
password);
|
username.toLowerCase().trim(),
|
||||||
|
password
|
||||||
|
);
|
||||||
Authentication authentication = authenticationManager.authenticate(authenticationToken);
|
Authentication authentication = authenticationManager.authenticate(authenticationToken);
|
||||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||||
// 生成token
|
// 生成token
|
||||||
String token = jwtTokenManager.createToken(authentication);
|
String accessToken = "Bearer " + jwtTokenManager.createToken(authentication);
|
||||||
return Result.success("Bearer " + token);
|
TokenResult tokenResult = TokenResult.builder()
|
||||||
|
.accessToken(accessToken)
|
||||||
|
.build();
|
||||||
|
return Result.success(tokenResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "注销")
|
@ApiOperation(value = "注销")
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.mapstruct.Mappings;
|
|||||||
public interface UserConverter {
|
public interface UserConverter {
|
||||||
|
|
||||||
@Mappings({
|
@Mappings({
|
||||||
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(po.getGender(), com.youlai.system.enums.GenderEnum.class))")
|
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(po.getGender(), com.youlai.system.common.enums.GenderEnum.class))")
|
||||||
})
|
})
|
||||||
UserVO po2Vo(UserBO po);
|
UserVO po2Vo(UserBO po);
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
|
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
|
||||||
import com.youlai.system.common.annotation.DataPermission;
|
import com.youlai.system.common.annotation.DataPermission;
|
||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
import com.youlai.system.enums.DataScopeEnum;
|
import com.youlai.system.common.enums.DataScopeEnum;
|
||||||
import com.youlai.system.util.SecurityUtils;
|
import com.youlai.system.security.util.SecurityUtils;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
@@ -55,7 +55,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
public static Expression dataScopeFilter(String deptAlias, String deptIdColumnName, String userAlias, String userIdColumnName, Expression where) {
|
public static Expression dataScopeFilter(String deptAlias, String deptIdColumnName, String userAlias, String userIdColumnName, Expression where) {
|
||||||
|
|
||||||
|
|
||||||
String deptColumnName = StrUtil.isNotBlank(deptAlias) ? (deptAlias +StringPool.DOT+ deptIdColumnName) : deptIdColumnName;
|
String deptColumnName = StrUtil.isNotBlank(deptAlias) ? (deptAlias + StringPool.DOT + deptIdColumnName) : deptIdColumnName;
|
||||||
String userColumnName = StrUtil.isNotBlank(userAlias) ? (userAlias + StringPool.DOT + userIdColumnName) : userIdColumnName;
|
String userColumnName = StrUtil.isNotBlank(userAlias) ? (userAlias + StringPool.DOT + userIdColumnName) : userIdColumnName;
|
||||||
|
|
||||||
// 获取当前用户的数据权限
|
// 获取当前用户的数据权限
|
||||||
@@ -70,11 +70,11 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
return where;
|
return where;
|
||||||
case DEPT:
|
case DEPT:
|
||||||
deptId = SecurityUtils.getDeptId();
|
deptId = SecurityUtils.getDeptId();
|
||||||
appendSqlStr = deptColumnName + StringPool.EQUALS+ deptId;
|
appendSqlStr = deptColumnName + StringPool.EQUALS + deptId;
|
||||||
break;
|
break;
|
||||||
case SELF:
|
case SELF:
|
||||||
userId = SecurityUtils.getUserId();
|
userId = SecurityUtils.getUserId();
|
||||||
appendSqlStr = userColumnName + StringPool.EQUALS + userId;
|
appendSqlStr = userColumnName + StringPool.EQUALS + userId;
|
||||||
break;
|
break;
|
||||||
// 默认部门及子部门数据权限
|
// 默认部门及子部门数据权限
|
||||||
default:
|
default:
|
||||||
@@ -87,9 +87,9 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
return where;
|
return where;
|
||||||
}
|
}
|
||||||
|
|
||||||
Expression appendExpression =CCJSqlParserUtil.parseCondExpression(appendSqlStr);
|
Expression appendExpression = CCJSqlParserUtil.parseCondExpression(appendSqlStr);
|
||||||
|
|
||||||
if(where==null){
|
if (where == null) {
|
||||||
return appendExpression;
|
return appendExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.youlai.system.pojo.bo;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.youlai.system.enums.MenuTypeEnum;
|
import com.youlai.system.common.enums.MenuTypeEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
16
src/main/java/com/youlai/system/pojo/dto/TokenResult.java
Normal file
16
src/main/java/com/youlai/system/pojo/dto/TokenResult.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package com.youlai.system.pojo.dto;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public class TokenResult {
|
||||||
|
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
private String refreshToken;
|
||||||
|
|
||||||
|
private Long expires;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
import com.youlai.system.common.base.BaseEntity;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -14,7 +14,7 @@ import lombok.Data;
|
|||||||
*/
|
*/
|
||||||
@TableName(value ="sys_dept")
|
@TableName(value ="sys_dept")
|
||||||
@Data
|
@Data
|
||||||
public class SysDept implements Serializable {
|
public class SysDept extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
||||||
*/
|
*/
|
||||||
@@ -51,15 +51,6 @@ public class SysDept implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import lombok.Data;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典数据表
|
* 字典数据表
|
||||||
* @TableName sys_dict_item
|
*
|
||||||
|
* @author haoxr
|
||||||
|
* @date 2022/12/17
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_dict_item")
|
@TableName(value ="sys_dict_item")
|
||||||
@Data
|
@Data
|
||||||
@@ -56,15 +58,6 @@ public class SysDictItem implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@@ -6,15 +6,18 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.youlai.system.common.base.BaseEntity;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典类型表
|
* 字典类型表
|
||||||
* @TableName sys_dict_type
|
*
|
||||||
|
* @author haoxr
|
||||||
|
* @date 2022/12/17
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_dict_type")
|
|
||||||
@Data
|
@Data
|
||||||
public class SysDictType implements Serializable {
|
public class SysDictType extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
||||||
*/
|
*/
|
||||||
@@ -40,17 +43,4 @@ public class SysDictType implements Serializable {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
import com.youlai.system.common.base.BaseEntity;
|
import com.youlai.system.common.base.BaseEntity;
|
||||||
import com.youlai.system.enums.MenuTypeEnum;
|
import com.youlai.system.common.enums.MenuTypeEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
package com.youlai.system.pojo.entity;
|
package com.youlai.system.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
import com.youlai.system.common.base.BaseEntity;
|
||||||
import java.util.Date;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色表
|
* 角色表
|
||||||
* @TableName sys_role
|
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_role")
|
@TableName(value ="sys_role")
|
||||||
@Data
|
@Data
|
||||||
public class SysRole implements Serializable {
|
public class SysRole extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -46,19 +43,6 @@ public class SysRole implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据权限
|
* 数据权限
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
package com.youlai.system.pojo.entity;
|
package com.youlai.system.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色和菜单关联表
|
* 角色和菜单关联表
|
||||||
* @TableName sys_role_menu
|
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_role_menu")
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class SysRoleMenu implements Serializable {
|
@NoArgsConstructor
|
||||||
|
public class SysRoleMenu {
|
||||||
/**
|
/**
|
||||||
* 角色ID
|
* 角色ID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,20 +1,15 @@
|
|||||||
package com.youlai.system.pojo.entity;
|
package com.youlai.system.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.youlai.system.common.base.BaseEntity;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户信息表
|
* 用户表
|
||||||
* @TableName sys_user
|
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_user")
|
|
||||||
@Data
|
@Data
|
||||||
public class SysUser implements Serializable {
|
public class SysUser extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -71,16 +66,4 @@ public class SysUser implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,21 @@
|
|||||||
package com.youlai.system.pojo.entity;
|
package com.youlai.system.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户和角色关联表
|
* 用户和角色关联表
|
||||||
* @TableName sys_user_role
|
*
|
||||||
|
* @author haoxr
|
||||||
|
* @date 2022/12/17
|
||||||
*/
|
*/
|
||||||
@TableName(value ="sys_user_role")
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class SysUserRole implements Serializable {
|
@NoArgsConstructor
|
||||||
|
public class SysUserRole {
|
||||||
/**
|
/**
|
||||||
* 用户ID
|
* 用户ID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.pojo.vo.menu;
|
package com.youlai.system.pojo.vo.menu;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.youlai.system.enums.MenuTypeEnum;
|
import com.youlai.system.common.enums.MenuTypeEnum;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|||||||
@@ -1,20 +1,4 @@
|
|||||||
/*
|
package com.youlai.system.security;
|
||||||
* Copyright 1999-2021 Alibaba Group Holding Ltd.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.youlai.system.security.jwt;
|
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import com.youlai.system.security.userdetails.SysUserDetails;
|
import com.youlai.system.security.userdetails.SysUserDetails;
|
||||||
@@ -103,7 +87,7 @@ public class JwtTokenManager {
|
|||||||
redisTemplate.opsForValue().set("USER_PERMS:" + userDetails.getUserId(), perms);
|
redisTemplate.opsForValue().set("USER_PERMS:" + userDetails.getUserId(), perms);
|
||||||
|
|
||||||
return Jwts.builder().setClaims(claims).setExpiration(validity)
|
return Jwts.builder().setClaims(claims).setExpiration(validity)
|
||||||
.signWith(SignatureAlgorithm.HS256, Keys.hmacShaKeyFor(this.getSecretKeyBytes())).compact();
|
.signWith( Keys.hmacShaKeyFor(this.getSecretKeyBytes()),SignatureAlgorithm.HS256).compact();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.security.exception;
|
package com.youlai.system.security.exception;
|
||||||
|
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.system.common.result.ResultCode;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.system.common.util.ResponseUtils;
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
import org.springframework.security.web.access.AccessDeniedHandler;
|
import org.springframework.security.web.access.AccessDeniedHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.youlai.system.security.exception;
|
package com.youlai.system.security.exception;
|
||||||
|
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.system.common.result.ResultCode;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.system.common.util.ResponseUtils;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.AuthenticationEntryPoint;
|
import org.springframework.security.web.AuthenticationEntryPoint;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package com.youlai.system.security.filter;
|
|||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.system.common.result.ResultCode;
|
import com.youlai.system.common.result.ResultCode;
|
||||||
import com.youlai.system.security.jwt.JwtTokenManager;
|
import com.youlai.system.security.JwtTokenManager;
|
||||||
import com.youlai.system.util.ResponseUtils;
|
import com.youlai.system.common.util.ResponseUtils;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.youlai.system.security.service;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.system.util.SecurityUtils;
|
import com.youlai.system.security.util.SecurityUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.util;
|
package com.youlai.system.security.util;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
@@ -21,6 +21,12 @@ import java.io.InputStream;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MinIO 文件实现类
|
||||||
|
*
|
||||||
|
* @author haoxr
|
||||||
|
* @date 2022/12/17
|
||||||
|
*/
|
||||||
@Component
|
@Component
|
||||||
@ConfigurationProperties(prefix = "minio")
|
@ConfigurationProperties(prefix = "minio")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.system.common.constant.SystemConstants;
|
import com.youlai.system.common.constant.SystemConstants;
|
||||||
import com.youlai.system.enums.StatusEnum;
|
import com.youlai.system.common.enums.StatusEnum;
|
||||||
import com.youlai.system.pojo.Option;
|
import com.youlai.system.pojo.Option;
|
||||||
import com.youlai.system.converter.DeptConverter;
|
import com.youlai.system.converter.DeptConverter;
|
||||||
import com.youlai.system.mapper.SysDeptMapper;
|
import com.youlai.system.mapper.SysDeptMapper;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.system.common.constant.SystemConstants;
|
import com.youlai.system.common.constant.SystemConstants;
|
||||||
import com.youlai.system.enums.MenuTypeEnum;
|
import com.youlai.system.common.enums.MenuTypeEnum;
|
||||||
import com.youlai.system.enums.StatusEnum;
|
import com.youlai.system.common.enums.StatusEnum;
|
||||||
import com.youlai.system.pojo.Option;
|
import com.youlai.system.pojo.Option;
|
||||||
import com.youlai.system.converter.MenuConverter;
|
import com.youlai.system.converter.MenuConverter;
|
||||||
import com.youlai.system.mapper.SysMenuMapper;
|
import com.youlai.system.mapper.SysMenuMapper;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import com.youlai.system.pojo.vo.role.RolePageVO;
|
|||||||
import com.youlai.system.service.SysRoleMenuService;
|
import com.youlai.system.service.SysRoleMenuService;
|
||||||
import com.youlai.system.service.SysRoleService;
|
import com.youlai.system.service.SysRoleService;
|
||||||
import com.youlai.system.service.SysUserRoleService;
|
import com.youlai.system.service.SysUserRoleService;
|
||||||
import com.youlai.system.util.SecurityUtils;
|
import com.youlai.system.security.util.SecurityUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import com.google.common.collect.Lists;
|
|||||||
import com.youlai.system.common.base.IBaseEnum;
|
import com.youlai.system.common.base.IBaseEnum;
|
||||||
import com.youlai.system.common.constant.SystemConstants;
|
import com.youlai.system.common.constant.SystemConstants;
|
||||||
import com.youlai.system.converter.UserConverter;
|
import com.youlai.system.converter.UserConverter;
|
||||||
import com.youlai.system.enums.GenderEnum;
|
import com.youlai.system.common.enums.GenderEnum;
|
||||||
import com.youlai.system.listener.UserImportListener;
|
import com.youlai.system.listener.UserImportListener;
|
||||||
import com.youlai.system.mapper.SysUserMapper;
|
import com.youlai.system.mapper.SysUserMapper;
|
||||||
import com.youlai.system.pojo.bo.UserBO;
|
import com.youlai.system.pojo.bo.UserBO;
|
||||||
@@ -34,7 +34,7 @@ import com.youlai.system.service.SysMenuService;
|
|||||||
import com.youlai.system.service.SysRoleService;
|
import com.youlai.system.service.SysRoleService;
|
||||||
import com.youlai.system.service.SysUserRoleService;
|
import com.youlai.system.service.SysUserRoleService;
|
||||||
import com.youlai.system.service.SysUserService;
|
import com.youlai.system.service.SysUserService;
|
||||||
import com.youlai.system.util.SecurityUtils;
|
import com.youlai.system.security.util.SecurityUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
LEFT JOIN sys_role_menu t2 ON t1.id = t2.menu_id
|
LEFT JOIN sys_role_menu t2 ON t1.id = t2.menu_id
|
||||||
LEFT JOIN sys_role t3 ON t2.role_id = t3.id
|
LEFT JOIN sys_role t3 ON t2.role_id = t3.id
|
||||||
WHERE
|
WHERE
|
||||||
t1.type != '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}'
|
t1.type != '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
|
||||||
ORDER BY t1.sort asc
|
ORDER BY t1.sort asc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
INNER JOIN sys_role_menu t2
|
INNER JOIN sys_role_menu t2
|
||||||
INNER JOIN sys_role t3
|
INNER JOIN sys_role t3
|
||||||
WHERE
|
WHERE
|
||||||
t1.type = '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}'
|
t1.type = '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
|
||||||
AND t1.perm IS NOT NULL
|
AND t1.perm IS NOT NULL
|
||||||
<choose>
|
<choose>
|
||||||
<when test="roles!=null and roles.size()>0">
|
<when test="roles!=null and roles.size()>0">
|
||||||
|
|||||||
Reference in New Issue
Block a user