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