| 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; | |||||
| } |
| 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; | |||||
| } |
| 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,上传文件大小超出限制!"); | |||||
| } | |||||
| } |
| import com.xdf.creative.base.controller.BaseController; | import com.xdf.creative.base.controller.BaseController; | ||||
| import com.xdf.creative.base.params.IdParam; | 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.SysPermissionQueryParam; | ||||
| import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | ||||
| import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | ||||
| } | } | ||||
| /** | |||||
| * 根据用户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); | |||||
| } | |||||
| /** | /** | ||||
| * 根据用户id获取菜单列表 | |||||
| * 根据用户id获取菜单列表(不包含按钮) | |||||
| */ | */ | ||||
| @GetMapping("/getMenuListByUserId") | @GetMapping("/getMenuListByUserId") | ||||
| @ApiOperation(value = "根据用户id获取菜单列表", notes = "根据用户id获取菜单列表", response = SysPermission.class) | @ApiOperation(value = "根据用户id获取菜单列表", notes = "根据用户id获取菜单列表", response = SysPermission.class) |
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 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.SysPermissionQueryParam; | ||||
| import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | 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.InfoType; | ||||
| import com.xdf.creative.module.entity.SysPermission; | import com.xdf.creative.module.entity.SysPermission; | ||||
| import org.apache.ibatis.annotations.Param; | import org.apache.ibatis.annotations.Param; | ||||
| */ | */ | ||||
| List<String> getPermissionUrlByUserId(@Param("userId") Long userId); | List<String> getPermissionUrlByUserId(@Param("userId") Long userId); | ||||
| /** | |||||
| * | |||||
| * 根据用户Id获取权限 | |||||
| * @param userId | |||||
| * @return | |||||
| */ | |||||
| List<SysPermissionUserVo> getPermissionByUserId(@Param("userId") Long userId); | |||||
| /** | /** | ||||
| * 根据用户id获取菜单列表 | * 根据用户id获取菜单列表 | ||||
| * | * | ||||
| */ | */ | ||||
| List<SysPermission> getMenuListByUserId(@Param("userId") Long userId); | List<SysPermission> getMenuListByUserId(@Param("userId") Long userId); | ||||
| List<SysPermission> currentUserResourceTreeList(@Param("param") SysPermissionCurrentUserParam sysPermissionCurrentUserParam); | |||||
| /** | /** | ||||
| * 根据用户ID获取菜单 | |||||
| * 根据用户ID获取菜单() | |||||
| * | * | ||||
| * @param userId | * @param userId | ||||
| * @return | * @return |
| package com.xdf.creative.module.service; | 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.SysPermissionQueryParam; | ||||
| import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | ||||
| import com.xdf.creative.base.service.BaseService; | import com.xdf.creative.base.service.BaseService; | ||||
| import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | 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.InfoType; | ||||
| import com.xdf.creative.module.entity.SysPermission; | import com.xdf.creative.module.entity.SysPermission; | ||||
| import com.xdf.creative.util.page.ApiResult; | import com.xdf.creative.util.page.ApiResult; | ||||
| import com.xdf.creative.util.page.PageTool; | import com.xdf.creative.util.page.PageTool; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| import java.util.Set; | import java.util.Set; | ||||
| /** | /** | ||||
| /** | /** | ||||
| * @param userId | * @param userId | ||||
| * @return | |||||
| * @return 获取用户已得到得权限 包含菜单 | |||||
| * @throws Exception | * @throws Exception | ||||
| */ | */ | ||||
| List<Object> getTreeMenusByUserId(Long userId) throws Exception; | List<Object> getTreeMenusByUserId(Long userId) throws Exception; | ||||
| /** | |||||
| * 获取用户已得到得权限 包含菜单和按钮 | |||||
| * @param sysPermissionCurrentUserParam | |||||
| * @return | |||||
| * @throws Exception | |||||
| */ | |||||
| List<SysPermission> currentUserResourceTreeList(SysPermissionCurrentUserParam sysPermissionCurrentUserParam) throws Exception; | |||||
| /** | /** | ||||
| * 根据请用户id取权限路径集合 | * 根据请用户id取权限路径集合 | ||||
| * | * | ||||
| /** | |||||
| * | |||||
| * 根据用户Id获取权限 | |||||
| * @param userId | |||||
| * @return | |||||
| */ | |||||
| Map<String,Object> getPermissionByUserId(@Param("userId") Long userId); | |||||
| /** | /** | ||||
| * 获取不需要鉴权url | * 获取不需要鉴权url | ||||
| * | * |
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 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.SysPermissionQueryParam; | ||||
| import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | import com.xdf.creative.base.params.creative.SysRoleImpowerPermissionQueryParam; | ||||
| import com.xdf.creative.base.service.impl.BaseServiceImpl; | import com.xdf.creative.base.service.impl.BaseServiceImpl; | ||||
| import com.xdf.creative.base.vo.creative.SysPermissionQueryVo; | 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.StateEnum; | ||||
| import com.xdf.creative.enums.StatusCode; | import com.xdf.creative.enums.StatusCode; | ||||
| import com.xdf.creative.module.entity.*; | import com.xdf.creative.module.entity.*; | ||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.stream.Collectors; | |||||
| /** | /** | ||||
| } | } | ||||
| /** | /** | ||||
| * 获取用户已得到得权限 | |||||
| * 获取用户已得到得权限 只包含菜单 | |||||
| * @param userId | * @param userId | ||||
| * @return | * @return | ||||
| * @throws Exception | * @throws Exception | ||||
| return objectList; | return objectList; | ||||
| } | } | ||||
| /** | |||||
| * 获取用户已得到得权限 包含菜单和按钮 | |||||
| * @param sysPermissionCurrentUserParam | |||||
| * @return | |||||
| * @throws Exception | |||||
| */ | |||||
| @Override | |||||
| public List<SysPermission> currentUserResourceTreeList(SysPermissionCurrentUserParam sysPermissionCurrentUserParam) throws Exception { | |||||
| // 获取所有已启用的权限列表 | |||||
| return sysPermissionMapper.currentUserResourceTreeList(sysPermissionCurrentUserParam); | |||||
| } | |||||
| /** | /** | ||||
| * 给角色授权资源 | * 给角色授权资源 | ||||
| * @param sysRoleImpowerPermissionQueryParam | * @param sysRoleImpowerPermissionQueryParam | ||||
| permissionUrls.stream().forEach(s -> { | permissionUrls.stream().forEach(s -> { | ||||
| if (StringUtil.isNotEmpty(s)) { | if (StringUtil.isNotEmpty(s)) { | ||||
| if (s.contains(";")) { | if (s.contains(";")) { | ||||
| String[] url = s.split(s); | |||||
| String[] url = s.split(";"); | |||||
| for (String s1 : url) { | for (String s1 : url) { | ||||
| stringHashSet.add(s1); | stringHashSet.add(s1); | ||||
| } | } | ||||
| return stringHashSet; | 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 | @Override | ||||
| public List<String> getSkipAuthUrls() throws Exception { | public List<String> getSkipAuthUrls() throws Exception { |
| } | } | ||||
| sysRoleQueryVoList.stream().forEach(sysRoleQueryVo -> { | sysRoleQueryVoList.stream().forEach(sysRoleQueryVo -> { | ||||
| roleIdSet.add(sysRoleQueryVo.getId()); | roleIdSet.add(sysRoleQueryVo.getId()); | ||||
| roleNameSet.add(sysRoleQueryVo.getName()); | |||||
| // roleNameSet.add(sysRoleQueryVo.getName()); | |||||
| roleCodeSet.add(sysRoleQueryVo.getCode()); | roleCodeSet.add(sysRoleQueryVo.getCode()); | ||||
| }); | }); | ||||
| loginSysUserVo.setRoleId(roleIdSet) | loginSysUserVo.setRoleId(roleIdSet) | ||||
| .setRoleName(roleNameSet) | |||||
| // .setRoleName(roleNameSet) | |||||
| .setRoleCode(roleCodeSet); | .setRoleCode(roleCodeSet); | ||||
| //获取角色url | //获取角色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); | // loginSysUserVo.setPermissionUrls(permissionCodesApiResult); | ||||
| // 获取数据库中保存的盐值 | // 获取数据库中保存的盐值 | ||||
| if (!permissionCodesApiResult.isEmpty()) { | if (!permissionCodesApiResult.isEmpty()) { | ||||
| oauthToken.setPermissions(permissionCodesApiResult.toString()); | 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)); | oauthToken.setExpireTime(JwtUtil.getExpireDate(token)); | ||||
| oauthTokenService.save(oauthToken); | oauthTokenService.save(oauthToken); | ||||
| import lombok.experimental.Accessors; | import lombok.experimental.Accessors; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import java.util.List; | |||||
| import java.util.Set; | import java.util.Set; | ||||
| /** | /** | ||||
| @ApiModelProperty("角色id") | @ApiModelProperty("角色id") | ||||
| private Set<Long> roleId; | private Set<Long> roleId; | ||||
| @ApiModelProperty("角色名称") | |||||
| private Set<String> roleName; | |||||
| /* @ApiModelProperty("角色名称") | |||||
| private Set<String> roleName;*/ | |||||
| @ApiModelProperty("角色编码") | @ApiModelProperty("角色编码") | ||||
| private Set<String> roleCode; | private Set<String> roleCode; | ||||
| /* | |||||
| @ApiModelProperty("权限编码列表") | @ApiModelProperty("权限编码列表") | ||||
| private Set<String> permissionUrls; | |||||
| private Set<String> permissionUrls;*/ | |||||
| private List<String> resourceList; | |||||
| private boolean dateAuth; | |||||
| } | } |
| /infoContent/getSearchWebInfo,\ | /infoContent/getSearchWebInfo,\ | ||||
| /resource/**,\ | /resource/**,\ | ||||
| /infoType/**,\ | /infoType/**,\ | ||||
| /infoContent/getWebInfoContent | |||||
| /infoContent/getWebInfoContent,\ | |||||
| /error,\ | |||||
| /sysPermission/getTreeMenusByUserId,\ | |||||
| /sysPermission/currentUserResource | |||||
| platform: mysql | platform: mysql | ||||
| type: com.alibaba.druid.pool.DruidDataSource | 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://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 | username: root | ||||
| password: 123456 | password: 123456 | ||||
| #password: SwNspCVZt7,S!6 | #password: SwNspCVZt7,S!6 | ||||
| validation-query: SELECT 1 | validation-query: SELECT 1 | ||||
| validation-query-timeout: 60000 | validation-query-timeout: 60000 | ||||
| servlet: | |||||
| multipart: | |||||
| enabled: true | |||||
| max-file-size: 5MB | |||||
| max-request-size: 10MB | |||||
| ############################ JWT start ############################# | ############################ JWT start ############################# | ||||
| spring-boot-plus: | spring-boot-plus: |
| <?xml version="1.0" encoding="UTF-8"?> | <?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> | <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> | </encoder> | ||||
| </appender> | </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> | </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> | </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> | </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> | </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"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| <level>debug</level> | |||||
| <level>ERROR</level> | |||||
| <onMatch>ACCEPT</onMatch> | <onMatch>ACCEPT</onMatch> | ||||
| <onMismatch>DENY</onMismatch> | <onMismatch>DENY</onMismatch> | ||||
| </filter> | </filter> | ||||
| </appender> | </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> | ||||
| <!-- 测试环境配置文件 --> | |||||
| <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> | </configuration> |
| <select id="getPermissionUrlByUserId" resultType="java.lang.String" parameterType="java.lang.Long"> | <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 | select sp.resource_id | ||||
| from sys_user u | from sys_user u | ||||
| inner join sys_user_role sur | inner join sys_user_role sur | ||||
| </select> | </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 id="getMenusByUserId" resultType="com.xdf.creative.module.entity.SysPermission" parameterType="java.lang.Long"> | ||||
| select | select | ||||
| sp.id, sp.name, sp.resource_id, sp.parent_resource_id, sp.url, sp.code, sp.icon, sp.type, sp.level, sp.state, | sp.id, sp.name, sp.resource_id, sp.parent_resource_id, sp.url, sp.code, sp.icon, sp.type, sp.level, sp.state, | ||||
| <!--用户登录加载左侧资源树 屏蔽按钮--> | <!--用户登录加载左侧资源树 屏蔽按钮--> | ||||
| <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"> | 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> | </select> | ||||
| <!-- 获取不需要鉴权的url --> | <!-- 获取不需要鉴权的url --> |