@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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,上传文件大小超出限制!"); | |||
} | |||
} |
@@ -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) |
@@ -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 |
@@ -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 | |||
* |
@@ -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 { |
@@ -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); | |||
@@ -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; | |||
} |
@@ -6,7 +6,10 @@ auth_skip_urls=\ | |||
/infoContent/getSearchWebInfo,\ | |||
/resource/**,\ | |||
/infoType/**,\ | |||
/infoContent/getWebInfoContent | |||
/infoContent/getWebInfoContent,\ | |||
/error,\ | |||
/sysPermission/getTreeMenusByUserId,\ | |||
/sysPermission/currentUserResource | |||
@@ -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: |
@@ -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> |
@@ -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 --> |