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