From e6ba0530fe252a38c0a45e2d238dd60aa027b1aa Mon Sep 17 00:00:00 2001
From: b2baccline <23131013+b2baccline@users.noreply.github.com>
Date: Tue, 10 Dec 2019 15:20:58 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=BF=E9=97=AE=E6=97=A5=E5=BF=97=E8=BF=BD?=
=?UTF-8?q?=E5=8A=A0=E8=AF=B7=E6=B1=82=E6=98=A0=E5=B0=84=E5=9C=B0=E5=9D=80?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=8C=E4=BE=BF=E4=BA=8E=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 3 +-
README.md | 2 +-
ballcat-admin/pom.xml | 2 -
.../ballcat/admin/AdminApplication.java | 3 +-
.../log/model/entity/AdminAccessLog.java | 5 ++
.../AdminAccessLogHandlerServiceImpl.java | 2 +
.../controller/SysPermissionController.java | 3 +-
.../src/main/resources/application.yml | 2 +-
.../hccake/ballcat/admin/test/TestUpdate.java | 15 ++--
.../hccake/ballcat/api/ApiApplication.java | 3 +-
.../api/controller/TestController.java | 26 ++++++
.../ApiAccessLogHandlerServiceImpl.java | 6 +-
.../src/main/resources/application.yml | 14 ++--
.../conf/web/SqlFilterArgumentResolver.java | 2 +-
.../ballcat/common/conf/web/WebMvcConfig.java | 5 ++
ballcat-common/ballcat-common-log/pom.xml | 2 +-
.../log/access/filter/AccessLogFilter.java | 14 +---
.../commom/log/access/model/AccessLogDTO.java | 82 -------------------
.../service/AccessLogHandlerService.java | 23 ++++--
.../api/model/entity/ApiAccessLog.java | 5 ++
ballcat-monitor/pom.xml | 1 -
pom.xml | 21 ++++-
22 files changed, 115 insertions(+), 126 deletions(-)
delete mode 100644 ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/model/AccessLogDTO.java
diff --git a/.gitignore b/.gitignore
index 68299dd1..edada64d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,4 +30,5 @@ build/
### VS Code ###
.vscode/
-/**/application-hccake.yml
\ No newline at end of file
+/**/application-hccake.yml
+/**/application-preview.yml
\ No newline at end of file
diff --git a/README.md b/README.md
index a2aba2fb..c6613da9 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
基于`SpringBoot` + `Ant Design Vue`的前后端分离应用。
目前支持代码生成,前后台用户分离,权限控制,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入等功能
-- 前端ui git地址: https://github.com/Hccake/ballcat-ui
+- 前端ui git地址: https://github.com/Hccake/ballcat-ui-vue
- 预览地址: http://preview.ballcat.cn
- 代码生成: http://preview.ballcat.cn/codegen
- 任务调度中心: http://preview.ballcat.cn/xxl-job-admin
diff --git a/ballcat-admin/pom.xml b/ballcat-admin/pom.xml
index 5e393bd7..27bba94d 100644
--- a/ballcat-admin/pom.xml
+++ b/ballcat-admin/pom.xml
@@ -75,12 +75,10 @@
org.springframework.security.oauth
spring-security-oauth2
-
de.codecentric
spring-boot-admin-starter-client
- 2.1.6
org.springframework.boot
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/AdminApplication.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/AdminApplication.java
index a119ade6..29c19419 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/AdminApplication.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/AdminApplication.java
@@ -1,6 +1,7 @@
package com.hccake.ballcat.admin;
import com.hccake.ballcat.commom.log.access.annotation.EnableAccessLog;
+import com.hccake.ballcat.common.job.annotation.EnableXxlJob;
import com.hccake.ballcat.common.swagger.annotation.EnableSwagger2Aggregator;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -9,7 +10,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan;
/**
* @author Hccake
*/
-/*@EnableXxlJob*/
+@EnableXxlJob
@EnableSwagger2Aggregator
@EnableAccessLog
@ServletComponentScan("com.hccake.ballcat.admin.oauth.filter")
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/model/entity/AdminAccessLog.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/model/entity/AdminAccessLog.java
index dc536ab1..3a1450cb 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/model/entity/AdminAccessLog.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/model/entity/AdminAccessLog.java
@@ -56,6 +56,11 @@ public class AdminAccessLog extends Model {
*/
@ApiModelProperty(value = "请求URI")
private String uri;
+ /**
+ * 请求映射地址
+ */
+ @ApiModelProperty(value = "请求映射地址")
+ private String matchingPattern;
/**
* 操作方式
*/
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/service/impl/AdminAccessLogHandlerServiceImpl.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/service/impl/AdminAccessLogHandlerServiceImpl.java
index dc49a872..ef221116 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/service/impl/AdminAccessLogHandlerServiceImpl.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/log/service/impl/AdminAccessLogHandlerServiceImpl.java
@@ -12,6 +12,7 @@ import com.hccake.ballcat.common.core.util.IPUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.HandlerMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -50,6 +51,7 @@ public class AdminAccessLogHandlerServiceImpl implements AccessLogHandlerService
.setMethod(request.getMethod())
.setUserAgent(request.getHeader("user-agent"))
.setUri(URLUtil.getPath(request.getRequestURI()))
+ .setMatchingPattern(String.valueOf(request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)))
.setErrorMsg(Optional.ofNullable(myThrowable).map(Throwable::getMessage).orElse(null))
.setHttpStatus(response.getStatus())
.setReqParams(JSONUtil.toJsonStr(request.getParameterMap()))
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java
index ef41dca5..be7da482 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java
@@ -39,8 +39,9 @@ public class SysPermissionController {
*
* @return 当前用户的路由
*/
+ @ApiOperation(value = "动态路由", notes = "动态路由")
@GetMapping("/router")
- public R getUserPermission() {
+ public R> getUserPermission() {
//获取角色ID
SysUserDetails sysUserDetails = SecurityUtils.getSysUserDetails();
diff --git a/ballcat-admin/src/main/resources/application.yml b/ballcat-admin/src/main/resources/application.yml
index 496311bb..079d283c 100644
--- a/ballcat-admin/src/main/resources/application.yml
+++ b/ballcat-admin/src/main/resources/application.yml
@@ -45,7 +45,7 @@ xxl:
admin:
addresses: http://ballcat-job:8888/xxl-job-admin # xxl-job-admin 接口地址
executor:
- port: 7888 #通讯端口
+ port: 8081 #通讯端口
appName: ballcat-admin-job
diff --git a/ballcat-admin/src/test/java/com/hccake/ballcat/admin/test/TestUpdate.java b/ballcat-admin/src/test/java/com/hccake/ballcat/admin/test/TestUpdate.java
index 67528f5a..c6f2ba3e 100644
--- a/ballcat-admin/src/test/java/com/hccake/ballcat/admin/test/TestUpdate.java
+++ b/ballcat-admin/src/test/java/com/hccake/ballcat/admin/test/TestUpdate.java
@@ -1,8 +1,9 @@
package com.hccake.ballcat.admin.test;
-import com.hccake.ballcat.admin.modules.sys.service.SysRoleService;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.hccake.ballcat.admin.modules.sys.model.entity.SysRole;
import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
@@ -13,14 +14,16 @@ import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class TestUpdate {
- @Autowired
- private SysRoleService sysRoleService;
+
@Test
- public void test(){
-
+ public void test() {
+ Wrapper wrapper = Wrappers.query();
+ System.out.println(wrapper.getSqlSelect());
+ System.out.println(wrapper.getCustomSqlSegment());
+ System.out.println(wrapper.getExpression().getSqlSegment());
}
}
diff --git a/ballcat-api/src/main/java/com/hccake/ballcat/api/ApiApplication.java b/ballcat-api/src/main/java/com/hccake/ballcat/api/ApiApplication.java
index d0680052..120a5037 100644
--- a/ballcat-api/src/main/java/com/hccake/ballcat/api/ApiApplication.java
+++ b/ballcat-api/src/main/java/com/hccake/ballcat/api/ApiApplication.java
@@ -1,13 +1,12 @@
package com.hccake.ballcat.api;
import com.hccake.ballcat.commom.log.access.annotation.EnableAccessLog;
+import com.hccake.ballcat.common.job.annotation.EnableXxlJob;
import com.hccake.ballcat.common.swagger.annotation.EnableSwagger2Provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-/*
@EnableXxlJob
-*/
@EnableSwagger2Provider
@EnableAccessLog
@SpringBootApplication
diff --git a/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/api/controller/TestController.java b/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/api/controller/TestController.java
index b6b4098c..6877d3b6 100644
--- a/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/api/controller/TestController.java
+++ b/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/api/controller/TestController.java
@@ -1,7 +1,12 @@
package com.hccake.ballcat.api.modules.api.controller;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hccake.ballcat.api.modules.api.model.entity.ApiAccessLog;
+import com.hccake.ballcat.api.modules.log.service.ApiAccessLogService;
import com.hccake.ballcat.common.core.exception.BallCatException;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
@@ -16,6 +21,9 @@ import java.time.LocalDateTime;
@RestController
public class TestController {
+ @Autowired
+ private ApiAccessLogService apiAccessLogService;
+
@ApiOperation("测试地址")
@PostMapping("/test")
@@ -23,6 +31,24 @@ public class TestController {
return "Hello word!";
}
+
+ @GetMapping("/test/{test}")
+ public String test(@PathVariable String test){
+ return "Hello " + test;
+ }
+
+
+ @GetMapping("/test/page")
+ public String page(){
+
+ apiAccessLogService.page(new Page<>(), Wrappers.query().eq("id", 1));
+
+ apiAccessLogService.page(new Page<>(), Wrappers.lambdaQuery().eq(ApiAccessLog::getId, 1));
+
+ return "Hello word!";
+ }
+
+
@PostMapping("/formdata")
public String test1(@RequestParam("formdata")String formdata){
return formdata;
diff --git a/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/log/service/ApiAccessLogHandlerServiceImpl.java b/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/log/service/ApiAccessLogHandlerServiceImpl.java
index 6e572224..63db1ca4 100644
--- a/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/log/service/ApiAccessLogHandlerServiceImpl.java
+++ b/ballcat-api/src/main/java/com/hccake/ballcat/api/modules/log/service/ApiAccessLogHandlerServiceImpl.java
@@ -2,14 +2,15 @@ package com.hccake.ballcat.api.modules.log.service;
import cn.hutool.core.util.URLUtil;
import cn.hutool.json.JSONUtil;
+import com.hccake.ballcat.api.modules.api.model.entity.ApiAccessLog;
+import com.hccake.ballcat.api.modules.log.thread.ApiAccessLogSaveThread;
import com.hccake.ballcat.commom.log.access.service.AccessLogHandlerService;
import com.hccake.ballcat.commom.log.util.LogUtils;
import com.hccake.ballcat.common.core.util.IPUtil;
-import com.hccake.ballcat.api.modules.api.model.entity.ApiAccessLog;
-import com.hccake.ballcat.api.modules.log.thread.ApiAccessLogSaveThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.HandlerMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -47,6 +48,7 @@ public class ApiAccessLogHandlerServiceImpl implements AccessLogHandlerService argumentResolvers) {
argumentResolvers.add(new SqlFilterArgumentResolver());
diff --git a/ballcat-common/ballcat-common-log/pom.xml b/ballcat-common/ballcat-common-log/pom.xml
index 3fa3b700..1650ccdd 100644
--- a/ballcat-common/ballcat-common-log/pom.xml
+++ b/ballcat-common/ballcat-common-log/pom.xml
@@ -22,7 +22,7 @@
org.springframework
- spring-web
+ spring-webmvc
compile
diff --git a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
index f4bda2d8..54786b29 100644
--- a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
+++ b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
@@ -40,12 +40,11 @@ public class AccessLogFilter extends OncePerRequestFilter {
filterChain.doFilter(request, response);
return;
}
-
+ // 包装request,以保证可以重复读取body
RepeatBodyRequestWrapper requestWrapper = new RepeatBodyRequestWrapper(request);
// 开始时间
Long startTime = System.currentTimeMillis();
-
Throwable myThrowable = null;
try {
filterChain.doFilter(requestWrapper, response);
@@ -57,19 +56,14 @@ public class AccessLogFilter extends OncePerRequestFilter {
// 结束时间
Long endTime = System.currentTimeMillis();
// 执行时长
- Long time = endTime - startTime;
-
+ Long executionTime = endTime - startTime;
// 记录在doFilter里被程序处理过后的异常,可参考 http://www.runoob.com/servlet/servlet-exception-handling.html
Throwable throwable = (Throwable) requestWrapper.getAttribute("javax.servlet.error.exception");
if (throwable != null) {
myThrowable = throwable;
}
-
- // 生产一个日志
- // 备注这里的request已经被xss过滤器包装过了 所以可以重复读取body
- Object object = accessLogService.prodLog(requestWrapper, response, time, myThrowable);
- // 日志记录
- accessLogService.saveLog(object);
+ // 生产一个日志并记录
+ accessLogService.logRecord(requestWrapper, response, executionTime, myThrowable);
}
}
diff --git a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/model/AccessLogDTO.java b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/model/AccessLogDTO.java
deleted file mode 100644
index cd84ab1c..00000000
--- a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/model/AccessLogDTO.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.hccake.ballcat.commom.log.access.model;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * @author Hccake
- * @version 1.0
- * @date 2019/10/15 18:59
- */
-@Data
-@Accessors(chain = true)
-public class AccessLogDTO implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 用户ID
- */
- @ApiModelProperty(value = "用户ID")
- private String userId;
- /**
- * 用户名
- */
- @ApiModelProperty(value = "用户名")
- private String username;
- /**
- * 请求方式
- */
- @ApiModelProperty(value = "请求方式")
- private String method;
- /**
- * 请求URI
- */
- @ApiModelProperty(value = "请求uri")
- private String uri;
- /**
- * 操作IP地址
- */
- @ApiModelProperty(value = "操作ip地址")
- private String ip;
- /**
- * 用户代理
- */
- @ApiModelProperty(value = "用户代理")
- private String userAgent;
- /**
- * 请求参数
- */
- @ApiModelProperty(value = "请求参数")
- private String reqParams;
- /**
- * 请求体
- */
- @ApiModelProperty(value = "请求体")
- private String reqBody;
- /**
- * 请求时长
- */
- @ApiModelProperty(value = "请求时长")
- private Long time;
- /**
- * 响应状态码
- */
- @ApiModelProperty(value = "响应状态码")
- private Integer httpStatus;
- /**
- * 错误消息
- */
- @ApiModelProperty(value = "错误消息")
- private String errorMsg;
- /**
- * 创建时间
- */
- @ApiModelProperty(value = "创建时间")
- private LocalDateTime createTime;
-
-}
diff --git a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/service/AccessLogHandlerService.java b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/service/AccessLogHandlerService.java
index 7cd53601..a72925fc 100644
--- a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/service/AccessLogHandlerService.java
+++ b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/service/AccessLogHandlerService.java
@@ -10,24 +10,35 @@ import javax.servlet.http.HttpServletResponse;
*/
public interface AccessLogHandlerService {
+ /**
+ * 记录日志
+ * @param request
+ * @param response
+ * @param executionTime
+ * @param throwable
+ */
+ default void logRecord(HttpServletRequest request, HttpServletResponse response, Long executionTime, Throwable throwable){
+ T log = prodLog(request, response, executionTime, throwable);
+ saveLog(log);
+ }
+
/**
* 生产一个日志
* @return accessLog
* @param request
* @param response
- * @param time
- * @param myThrowable
+ * @param executionTime
+ * @param throwable
*/
- T prodLog(HttpServletRequest request, HttpServletResponse response, Long time, Throwable myThrowable);
+ T prodLog(HttpServletRequest request, HttpServletResponse response, Long executionTime, Throwable throwable);
/**
- * 记录日志
+ * 保存日志
+ * 落库/或输出到文件等
*
* @param accessLog
*/
void saveLog(T accessLog);
-
-
}
diff --git a/ballcat-common/ballcat-common-modules/src/main/java/com/hccake/ballcat/api/modules/api/model/entity/ApiAccessLog.java b/ballcat-common/ballcat-common-modules/src/main/java/com/hccake/ballcat/api/modules/api/model/entity/ApiAccessLog.java
index 7e4fd1e5..386b5093 100644
--- a/ballcat-common/ballcat-common-modules/src/main/java/com/hccake/ballcat/api/modules/api/model/entity/ApiAccessLog.java
+++ b/ballcat-common/ballcat-common-modules/src/main/java/com/hccake/ballcat/api/modules/api/model/entity/ApiAccessLog.java
@@ -56,6 +56,11 @@ public class ApiAccessLog extends Model {
*/
@ApiModelProperty(value = "请求URI")
private String uri;
+ /**
+ * 请求映射地址
+ */
+ @ApiModelProperty(value = "请求映射地址")
+ private String matchingPattern;
/**
* 操作方式
*/
diff --git a/ballcat-monitor/pom.xml b/ballcat-monitor/pom.xml
index e2ee99d6..734039ad 100644
--- a/ballcat-monitor/pom.xml
+++ b/ballcat-monitor/pom.xml
@@ -16,7 +16,6 @@
de.codecentric
spring-boot-admin-starter-server
- 2.1.6
diff --git a/pom.xml b/pom.xml
index 8d8d6559..3966177b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
1.8
1.8
- 2.1.8.RELEASE
+ 2.2.1.RELEASE
Cairo-SR8
1.3.0.Final
@@ -34,6 +34,7 @@
0.0.4
1.5.2
2.1.0
+ 2.2.0
2.3.6.RELEASE
@@ -131,6 +132,18 @@
spring-security-oauth2
${spring-security-oauth2.version}
+
+
+ de.codecentric
+ spring-boot-admin-starter-server
+ ${spring-boot-admin.version}
+
+
+
+ de.codecentric
+ spring-boot-admin-starter-client
+ ${spring-boot-admin.version}
+
cn.hutool
@@ -248,6 +261,12 @@
prod
+
+ preview
+
+ preview
+
+