This commit is contained in:
haoxr
2023-01-13 16:56:52 +08:00
34 changed files with 100 additions and 154 deletions

View File

@@ -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>

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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());
} }

View File

@@ -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 响应工具类

View File

@@ -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;

View File

@@ -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 = "注销")

View File

@@ -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);

View File

@@ -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;
} }

View File

@@ -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;

View 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;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
} }

View File

@@ -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;
/** /**

View File

@@ -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;
/** /**
* 数据权限 * 数据权限
*/ */

View File

@@ -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
*/ */

View File

@@ -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;
} }

View File

@@ -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
*/ */

View File

@@ -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;

View File

@@ -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();
} }
/** /**

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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">