Parcourir la source

上传文件 日志 bug 菜单控制

master
liugw il y a 5 ans
Parent
révision
b5201a6a33

+ 38
- 0
src/main/java/com/xdf/creative/base/params/creative/SysPermissionCurrentUserParam.java Voir le fichier

@@ -0,0 +1,38 @@
package com.xdf.creative.base.params.creative;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.xdf.creative.base.params.QueryParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
* <p>
* 系统权限 查询参数对象
* </p>
*
* @author DeanYe
* @date 2019-11-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SysPermissionQueryParam对象", description = "系统权限查询参数")
public class SysPermissionCurrentUserParam extends QueryParam {
private static final long serialVersionUID = 1L;


@ApiModelProperty(value = "主键")
@NotNull(message ="用户id不能为空")
private Long userId;

@ApiModelProperty(value = "类型,0 目录 1:菜单,2:按钮 3 url")
private Integer type;

}

+ 28
- 0
src/main/java/com/xdf/creative/base/vo/creative/SysPermissionUserVo.java Voir le fichier

@@ -0,0 +1,28 @@
package com.xdf.creative.base.vo.creative;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
* @author : lgw
* @date : 15:34 2020/3/27
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysPermissionUserVo对象", description = "系统权限查询参数")
public class SysPermissionUserVo implements Serializable {
private static final long serialVersionUID = 2738804574228359190L;


@ApiModelProperty(value = "权限名称")
private String name;

private String resourceId;

@ApiModelProperty(value = "路径")
private String url;
}

+ 18
- 0
src/main/java/com/xdf/creative/config/CustomExceptionHandler.java Voir le fichier

@@ -0,0 +1,18 @@
package com.xdf.creative.config;

import java.io.IOException;

import com.xdf.creative.util.page.ApiResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;

@RestControllerAdvice
public class CustomExceptionHandler {
@ExceptionHandler(MaxUploadSizeExceededException.class)
public ApiResult uploadException(MaxUploadSizeExceededException e) throws IOException {
return ApiResult.fail("最大上传文件为1M,上传文件大小超出限制!");
}


}

+ 11
- 3
src/main/java/com/xdf/creative/module/controller/SysPermissionController.java Voir le fichier

@@ -3,6 +3,7 @@ package com.xdf.creative.module.controller;

import com.xdf.creative.base.controller.BaseController;
import com.xdf.creative.base.params.IdParam;
import com.xdf.creative.base.params.creative.SysPermissionCurrentUserParam;
import com.xdf.creative.base.params.creative.SysPermissionQueryParam;
import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam;
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo;
@@ -72,8 +73,15 @@ public class SysPermissionController extends BaseController {
}




/**
* 根据用户id获取菜单列表(包含菜单和按钮)
*/
@GetMapping("/currentUserResource")
@ApiOperation(value = "根据用户id获取菜单列表", notes = "根据用户id获取菜单列表", response = SysPermission.class)
public ApiResult currentUserResource(@Valid @RequestBody SysPermissionCurrentUserParam sysPermissionCurrentUserParam) throws Exception {
List<SysPermission> list = sysPermissionService.currentUserResourceTreeList(sysPermissionCurrentUserParam);
return ApiResult.ok(list);
}



@@ -134,7 +142,7 @@ public class SysPermissionController extends BaseController {


/**
* 根据用户id获取菜单列表
* 根据用户id获取菜单列表(不包含按钮)
*/
@GetMapping("/getMenuListByUserId")
@ApiOperation(value = "根据用户id获取菜单列表", notes = "根据用户id获取菜单列表", response = SysPermission.class)

+ 18
- 1
src/main/java/com/xdf/creative/module/mapper/SysPermissionMapper.java Voir le fichier

@@ -4,8 +4,10 @@ package com.xdf.creative.module.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xdf.creative.base.params.creative.SysPermissionCurrentUserParam;
import com.xdf.creative.base.params.creative.SysPermissionQueryParam;
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo;
import com.xdf.creative.base.vo.creative.SysPermissionUserVo;
import com.xdf.creative.module.entity.InfoType;
import com.xdf.creative.module.entity.SysPermission;
import org.apache.ibatis.annotations.Param;
@@ -63,6 +65,17 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> {
*/
List<String> getPermissionUrlByUserId(@Param("userId") Long userId);


/**
*
* 根据用户Id获取权限
* @param userId
* @return
*/
List<SysPermissionUserVo> getPermissionByUserId(@Param("userId") Long userId);



/**
* 根据用户id获取菜单列表
*
@@ -71,8 +84,12 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> {
*/
List<SysPermission> getMenuListByUserId(@Param("userId") Long userId);



List<SysPermission> currentUserResourceTreeList(@Param("param") SysPermissionCurrentUserParam sysPermissionCurrentUserParam);

/**
* 根据用户ID获取菜单
* 根据用户ID获取菜单()
*
* @param userId
* @return

+ 23
- 1
src/main/java/com/xdf/creative/module/service/SysPermissionService.java Voir le fichier

@@ -2,17 +2,21 @@
package com.xdf.creative.module.service;


import com.xdf.creative.base.params.creative.SysPermissionCurrentUserParam;
import com.xdf.creative.base.params.creative.SysPermissionQueryParam;
import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam;
import com.xdf.creative.base.service.BaseService;
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo;
import com.xdf.creative.base.vo.creative.SysPermissionUserVo;
import com.xdf.creative.module.entity.InfoType;
import com.xdf.creative.module.entity.SysPermission;
import com.xdf.creative.util.page.ApiResult;
import com.xdf.creative.util.page.PageTool;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
@@ -115,12 +119,21 @@ public interface SysPermissionService extends BaseService<SysPermission> {

/**
* @param userId
* @return
* @return 获取用户已得到得权限 包含菜单
* @throws Exception
*/
List<Object> getTreeMenusByUserId(Long userId) throws Exception;


/**
* 获取用户已得到得权限 包含菜单和按钮
* @param sysPermissionCurrentUserParam
* @return
* @throws Exception
*/
List<SysPermission> currentUserResourceTreeList(SysPermissionCurrentUserParam sysPermissionCurrentUserParam) throws Exception;


/**
* 根据请用户id取权限路径集合
*
@@ -131,6 +144,15 @@ public interface SysPermissionService extends BaseService<SysPermission> {



/**
*
* 根据用户Id获取权限
* @param userId
* @return
*/
Map<String,Object> getPermissionByUserId(@Param("userId") Long userId);


/**
* 获取不需要鉴权url
*

+ 46
- 2
src/main/java/com/xdf/creative/module/service/impl/SysPermissionServiceImpl.java Voir le fichier

@@ -4,10 +4,12 @@ package com.xdf.creative.module.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xdf.creative.base.params.creative.SysPermissionCurrentUserParam;
import com.xdf.creative.base.params.creative.SysPermissionQueryParam;
import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam;
import com.xdf.creative.base.service.impl.BaseServiceImpl;
import com.xdf.creative.base.vo.creative.SysPermissionQueryVo;
import com.xdf.creative.base.vo.creative.SysPermissionUserVo;
import com.xdf.creative.enums.StateEnum;
import com.xdf.creative.enums.StatusCode;
import com.xdf.creative.module.entity.*;
@@ -27,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;


/**
@@ -71,7 +74,7 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionMappe
}

/**
* 获取用户已得到得权限
* 获取用户已得到得权限 只包含菜单
* @param userId
* @return
* @throws Exception
@@ -85,6 +88,21 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionMappe
return objectList;
}

/**
* 获取用户已得到得权限 包含菜单和按钮
* @param sysPermissionCurrentUserParam
* @return
* @throws Exception
*/
@Override
public List<SysPermission> currentUserResourceTreeList(SysPermissionCurrentUserParam sysPermissionCurrentUserParam) throws Exception {
// 获取所有已启用的权限列表
return sysPermissionMapper.currentUserResourceTreeList(sysPermissionCurrentUserParam);
}




/**
* 给角色授权资源
* @param sysRoleImpowerPermissionQueryParam
@@ -215,7 +233,7 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionMappe
permissionUrls.stream().forEach(s -> {
if (StringUtil.isNotEmpty(s)) {
if (s.contains(";")) {
String[] url = s.split(s);
String[] url = s.split(";");
for (String s1 : url) {
stringHashSet.add(s1);
}
@@ -227,6 +245,32 @@ public class SysPermissionServiceImpl extends BaseServiceImpl<SysPermissionMappe
return stringHashSet;
}

@Override
public Map<String, Object> getPermissionByUserId(Long userId) {

Map<String, Object> map = new HashMap<>();

List<SysPermissionUserVo> sysPermissionUserVoList= sysPermissionMapper.getPermissionByUserId(userId);

HashSet<String> stringHashSet = new HashSet<>();
sysPermissionUserVoList.stream().forEach(s -> {
if (StringUtil.isNotEmpty(s.getUrl())) {
if (s.getUrl().contains(";")) {
String[] url = s.getUrl().split(";");
for (String s1 : url) {
stringHashSet.add(s1);
}
} else {
stringHashSet.add(s.getUrl());
}
}
});
map.put("url",stringHashSet);
map.put("resource", sysPermissionUserVoList.stream().map(p -> p.getResourceId()).collect(Collectors.toList()));

return map;
}


@Override
public List<String> getSkipAuthUrls() throws Exception {

+ 19
- 3
src/main/java/com/xdf/creative/module/service/impl/SysUserServiceImpl.java Voir le fichier

@@ -128,14 +128,23 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
}
sysRoleQueryVoList.stream().forEach(sysRoleQueryVo -> {
roleIdSet.add(sysRoleQueryVo.getId());
roleNameSet.add(sysRoleQueryVo.getName());
// roleNameSet.add(sysRoleQueryVo.getName());
roleCodeSet.add(sysRoleQueryVo.getCode());
});
loginSysUserVo.setRoleId(roleIdSet)
.setRoleName(roleNameSet)
// .setRoleName(roleNameSet)
.setRoleCode(roleCodeSet);



//获取角色url
Set<String> permissionCodesApiResult = sysPermissionService.getPermissionUrlByUserId(sysUser.getId());
// Set<String> permissionCodesApiResult = sysPermissionService.getPermissionUrlByUserId(sysUser.getId());

Map<String,Object> map = sysPermissionService.getPermissionByUserId(sysUser.getId());
Set<String> permissionCodesApiResult = (Set<String>) map.get("url");
List<String> resourceList = (List<String>) map.get("resource");

loginSysUserVo.setResourceList(resourceList);
// loginSysUserVo.setPermissionUrls(permissionCodesApiResult);

// 获取数据库中保存的盐值
@@ -156,6 +165,13 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
if (!permissionCodesApiResult.isEmpty()) {
oauthToken.setPermissions(permissionCodesApiResult.toString());
}

if(permissionCodesApiResult.stream().filter(s -> s.contains("showData")).count()>0 ){
loginSysUserVo.setDateAuth(true);
}else{
loginSysUserVo.setDateAuth(false);
}

oauthToken.setExpireTime(JwtUtil.getExpireDate(token));
oauthTokenService.save(oauthToken);


+ 10
- 4
src/main/java/com/xdf/creative/support/auth/LoginSysUserVo.java Voir le fichier

@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
@@ -49,13 +50,18 @@ public class LoginSysUserVo implements Serializable {
@ApiModelProperty("角色id")
private Set<Long> roleId;

@ApiModelProperty("角色名称")
private Set<String> roleName;
/* @ApiModelProperty("角色名称")
private Set<String> roleName;*/

@ApiModelProperty("角色编码")
private Set<String> roleCode;
/*
@ApiModelProperty("权限编码列表")
private Set<String> permissionUrls;
private Set<String> permissionUrls;*/


private List<String> resourceList;

private boolean dateAuth;

}

+ 4
- 1
src/main/resources/application.properties Voir le fichier

@@ -6,7 +6,10 @@ auth_skip_urls=\
/infoContent/getSearchWebInfo,\
/resource/**,\
/infoType/**,\
/infoContent/getWebInfoContent
/infoContent/getWebInfoContent,\
/error,\
/sysPermission/getTreeMenusByUserId,\
/sysPermission/currentUserResource




+ 6
- 1
src/main/resources/application.yml Voir le fichier

@@ -35,7 +35,7 @@ spring:
platform: mysql
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.1.101:3306/creative_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
# url: jdbc:mysql://172.19.175.249:3306/creative_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
# url: jdbc:mysql://172.19.175.249:3306/creative_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
#password: SwNspCVZt7,S!6
@@ -72,6 +72,11 @@ spring:
validation-query: SELECT 1
validation-query-timeout: 60000

servlet:
multipart:
enabled: true
max-file-size: 5MB
max-request-size: 10MB

############################ JWT start #############################
spring-boot-plus:

+ 70
- 131
src/main/resources/logback-spring.xml Voir le fichier

@@ -1,153 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

<!-- 日志输出上下文名称 -->
<contextName>creative</contextName>
<!-- 输出日志到控制台 ConsoleAppender -->
<appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<configuration>

<property name="CONTEXT_NAME" value="web"/>
<property name="LOG_PATH" value="logs"/>
<property name="MAX_FILE_SIZE" value="10MB"/>
<property name="MAX_HISTORY" value="30"/>

<contextName>${CONTEXT_NAME}</contextName>

<!-- 彩色日志 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

<!-- 控制台日志样式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} [%L] %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 文件日志样式 -->
<property name="FILE_LOG_PATTERN"
value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } [%t] %-40.40logger{39} %L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

<!-- 禁用logback自身日志输出 -->
<statusListener class="ch.qos.logback.core.status.NopStatusListener"/>

<!-- 控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
<!--格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符-->
<pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<!-- 输出日志到文件 每天一个文件 -->
<!--输出每天的运行日志到文件SystemOut.log-->
<appender name="SystemOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/logs/creative/SystemOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/logs/creative/sys_bak/SystemOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
<!-- 运行日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<!-- 此日志文件记录debug及以上级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!-- 输出日志到文件 每天一个文件 -->
<!--输出每天的运行日志到文件SystemErrOut.log-->
<appender name="ErrOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/logs/creative/SystemErrOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/logs/creative/err_bak/SystemErrOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<file>${LOG_PATH}/web.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/web-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此日志文件记录error及以上级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!-- 输出日志到文件 文件大小到达指定尺寸的时候文件会自动回滚 -->
<!-- 输出运行的SQL语句日志到文件SqlOut.log -->
<appender name="SqlOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/logs/creative/SystemSqlOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/logs/creative/sql_bak/SystemSqlOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
<!-- 错误日志文件 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<!-- 此日志文件记录sql trace -->
<file>${LOG_PATH}/web-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!-- 异步写日志 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="FILE"/>
</appender>
<appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="ERROR_FILE"/>
</appender>


<!--这个logger的设置是:举例在org.springframework包下面的所有输出日志必须级别level在info及以上级别才会被输出!-->
<!--这样可以避免输出一些spring框架的许多常见debug信息!-->
<logger name="org.springframework" level="info"/>
<logger name="org.json" level="error"/>
<logger name="io.netty" level="info"/>
<logger name="org.slf4j" level="info"/>
<logger name="ch.qos.logback" level="info"/>


<!-- 生产环境配置文件 -->
<springProfile name="prod">

<!-- 下面是打印 mybatis sql语句日志的配置 -->
<logger name="com.xdf.creative.module.mapper">
<level value="debug"/>
<appender-ref ref="SqlOutFileAppender"/>
</logger>

<root level="DEBUG">
<appender-ref ref="ErrOutFileAppender"/>
<appender-ref ref="SystemOutFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
<!-- 不同环境的日志级别配置 -->
<springProfile name="local">
<logger name="web" level="DEBUG"/>
</springProfile>

<!-- 测试环境配置文件 -->
<springProfile name="test">

<!-- 下面是打印 mybatis sql语句日志的配置 -->
<logger name="com.xdf.creative.module.mapper">
<level value="debug"/>
<appender-ref ref="SqlOutFileAppender"/>
</logger>
<!-- 解决SpringBootAdmin错误日志问题 -->
<logger name="org.apache.catalina.connector.CoyoteAdapter" level="OFF"/>

<root level="DEBUG">
<appender-ref ref="ErrOutFileAppender"/>
<appender-ref ref="SystemOutFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</springProfile>

<!--开发环境配置文件-->
<springProfile name="dev">
<root level="DEBUG">
<appender-ref ref="ConsoleAppender"/>
</root>
</springProfile>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="ASYNC_ERROR_FILE"/>
</root>

</configuration>

+ 38
- 5
src/main/resources/mapper/SysPermissionMapper.xml Voir le fichier

@@ -43,7 +43,7 @@


<select id="getPermissionUrlByUserId" resultType="java.lang.String" parameterType="java.lang.Long">
select url from sys_permission where parent_resource_id in (
select url from sys_permission where resource_id in (
select sp.resource_id
from sys_user u
inner join sys_user_role sur
@@ -68,6 +68,34 @@
</select>


<select id="getPermissionByUserId" resultType="com.xdf.creative.base.vo.creative.SysPermissionUserVo" parameterType="java.lang.Long">
select name,resource_id,url from sys_permission where resource_id in (
select sp.resource_id
from sys_user u
inner join sys_user_role sur
on u.id = sur.user_id
inner join sys_role sr
on sur.role_id = sr.id
inner join sys_role_permission srp
on sr.id = srp.role_id
inner join sys_permission sp
on srp.permission_id = sp.resource_id

where u.id = #{userId}
and u.state = 1
and u.deleted = 0
and sr.state = 1
and sr.deleted = 0
and sp.state = 1
and sp.deleted = 0
) and state = 1
and deleted = 0
and type = 2
</select>




<select id="getMenusByUserId" resultType="com.xdf.creative.module.entity.SysPermission" parameterType="java.lang.Long">
select
sp.id, sp.name, sp.resource_id, sp.parent_resource_id, sp.url, sp.code, sp.icon, sp.type, sp.level, sp.state,
@@ -99,11 +127,16 @@


<!--用户登录加载左侧资源树 屏蔽按钮-->
<select id="currentUserResourceTreeList" parameterType="java.lang.Long"
<select id="currentUserResourceTreeList" parameterType="com.xdf.creative.base.params.creative.SysPermissionCurrentUserParam"
resultType="com.xdf.creative.module.entity.SysPermission">
select a.* from sys_permission a right join (select * from sys_role_permission where role_id in (select role_id
from sys_user_role
where user_id = 1))b on a.resource_id =b.permission_id where a.state = 1 and a.deleted = 0 and a.type =1
select a.id,a.resource_id,a.name from sys_permission a right join (select * from sys_role_permission where role_id in (select role_id
from sys_user_role where user_id = #{param.userId}))b on a.resource_id =b.permission_id where a.state = 1 and a.deleted = 0

<if test="param.type !=null and param.type!=''">
and a.type = #{param.type}
</if>

order by a.resource_id asc
</select>

<!-- 获取不需要鉴权的url -->

Chargement…
Annuler
Enregistrer