diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysLogsVo.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysLogsVo.java
index f650bde..8a13e3a 100644
--- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysLogsVo.java
+++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysLogsVo.java
@@ -7,6 +7,7 @@ import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.utils.ip.IpUtils;
import com.bonus.system.api.model.LoginUser;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.ibatis.type.Alias;
@@ -33,6 +34,7 @@ public class SysLogsVo {
/**
* 日志id
*/
+ @ApiModelProperty(value = "日志ID")
private String logId;
/**
* 操作人名称
@@ -41,58 +43,73 @@ public class SysLogsVo {
/**
* 访问ip
*/
+ @ApiModelProperty(value = "操作ip")
private String ip;
/**
* 操作人id
*/
+ @ApiModelProperty(value = "操作人ID")
private String userId;
/**
* 操作模块
*/
+ @ApiModelProperty(value = "操作模块")
private String model;
/**
* 操作时间
*/
+ @ApiModelProperty(value = "操作时间")
private String operaTime;
/**
* 操作详情
*/
+ @ApiModelProperty(value = "操作详情")
private String operateDetail;
/**
*操作类型
*/
+ @ApiModelProperty(value = "操作类型 增删改查 登陆 登出")
private String operaType;
/**
* 操作方法
*/
+ @ApiModelProperty(value = "执行方法")
private String method;
/**
*请求路径
*/
+ @ApiModelProperty(value = "操作页面路径URI")
private String operaUri;
/**
* 日志类型 1 业务日志 0 系统日志 2异常日志
*/
+ @ApiModelProperty(value = "日志类型 1 业务日志 0 系统日志 2异常日志")
private int logType;
/**
* 执行结果
*/
+ @ApiModelProperty(value = "执行结果(1.成功/2.失败)")
private String result;
+// private String fruit;
/**
* 执行时间
*/
+ @ApiModelProperty(value = "执行时间(秒/ms)")
private String times;
/**
* 失败原因
*/
+ @ApiModelProperty(value = "失败原因")
private String failureReason;
/**
* 异常等级
*/
+ @ApiModelProperty(value = "异常事件等级(高、中、低")
private String grade;
/**
* 异常类型(ip异常/越权)
*/
+ @ApiModelProperty(value = "异常类型(ip异常/越权)")
private String errType;
/**
* 方法类型
@@ -103,6 +120,7 @@ public class SysLogsVo {
*/
private String title;
+ @ApiModelProperty(value = "操作参数")
private String params;
/**
* 返回的数据
@@ -110,12 +128,29 @@ public class SysLogsVo {
private String resultData;
+
+ private int num;
+
+ /**
+ * 排序字段 1,2,3,4,5,6,7,8,
+ */
+ private String logSort;
+ /**
+ * 倒序 1 正序 2
+ */
+ private String logDesc;
+
+ private String startTime;
+
+ private String endTime;
+
+ private String type;
/**
* 越权记录
* @param loginUser
* @return
*/
- public static SysLogsVo getSysLogsVo(LoginUser loginUser, ProceedingJoinPoint joinPoint) {
+ public static SysLogsVo getExceedAuthorithSysLogsVo(LoginUser loginUser, ProceedingJoinPoint joinPoint) {
SysLogsVo vo=new SysLogsVo();
try{
String uuid= UUID.randomUUID().toString().replace("-","").toUpperCase();
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ValidateUtils.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ValidateUtils.java
index 0ee4f00..a66c47d 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ValidateUtils.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ValidateUtils.java
@@ -18,7 +18,7 @@ public class ValidateUtils {
public static int MIN_LENGTH=8;
- public static String PASSWORD_ERROR = "密码必须包含大小写字母、数字、特殊字符,且长度在%s-%s位之间";
+ public static String CHECKPWD_ERROR = "密码必须包含大小写字母、数字、特殊字符,且长度在%s-%s位之间";
/**
* 密码校验
*
@@ -30,10 +30,10 @@ public class ValidateUtils {
public static String isPwd(String password) {
if (password.length() < MIN_LENGTH) {
- return String.format(PASSWORD_ERROR,MIN_LENGTH,MAX_LENGTH);
+ return String.format(CHECKPWD_ERROR,MIN_LENGTH,MAX_LENGTH);
}
if (password.length() > MAX_LENGTH) {
- return String.format(PASSWORD_ERROR,MIN_LENGTH,MAX_LENGTH);
+ return String.format(CHECKPWD_ERROR,MIN_LENGTH,MAX_LENGTH);
}
boolean hasUpperCase = false;
boolean hasLowerCase = false;
@@ -54,6 +54,6 @@ public class ValidateUtils {
if(hasUpperCase && hasLowerCase && hasDigit && hasSpecialChar){
return null;
}
- return String.format(PASSWORD_ERROR,MIN_LENGTH,MAX_LENGTH);
+ return String.format(CHECKPWD_ERROR,MIN_LENGTH,MAX_LENGTH);
}
}
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm2Util.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm2Util.java
index d02cb67..0893d96 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm2Util.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm2Util.java
@@ -34,12 +34,10 @@ public class Sm2Util {
public static void main(String[] args) {
String privateKey = getPrivateKey();
String publicKey = getPublicKey();
- System.err.println(privateKey);
- System.err.println(publicKey);
- String msg= encrypt(publicKey,"张三");
- String msg2= decrypt(privateKey,msg);
+ String msg= encrypt(publicKey,"1234567890");
+// String msg2= decrypt(privateKey,msg);
System.err.println(msg);
- System.err.println(msg2);
+// System.err.println(msg2);
}
/**
* 加密
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm3Util.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm3Util.java
new file mode 100644
index 0000000..872d497
--- /dev/null
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm3Util.java
@@ -0,0 +1,35 @@
+package com.bonus.common.core.utils.encryption;
+
+import cn.hutool.crypto.SmUtil;
+import cn.hutool.crypto.digest.SM3;
+import java.io.File;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+
+/**
+ * @author weiweiw
+ * SM3加解密
+ */
+public class Sm3Util {
+
+ static SM3 sm3 = SmUtil.sm3WithSalt("2cc0c5f9f1749f1632efa9f63e902323".getBytes(StandardCharsets.UTF_8));
+
+ public static void main(String[] args) {
+
+ String msg= encrypt("1234567890");
+ System.err.println(msg);
+ }
+
+ public static String encrypt(String data) {
+ return Sm3Util.sm3.digestHex(data);
+ }
+
+ public static String encrypt(InputStream data) {
+ return Sm3Util.sm3.digestHex(data);
+ }
+
+ public static String encrypt(File dataFile) {
+ return Sm3Util.sm3.digestHex(dataFile);
+ }
+}
\ No newline at end of file
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm4Utils.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm4Utils.java
index 04a70be..4de974b 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm4Utils.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/Sm4Utils.java
@@ -46,4 +46,11 @@ public class Sm4Utils {
}
}
+
+ public static void main(String[] args) {
+ String msg= encode("1234567890");
+ System.err.println(msg);
+
+ }
+
}
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/global/SystemGlobal.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/global/SystemGlobal.java
index 5c17bcd..dfba2bb 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/global/SystemGlobal.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/global/SystemGlobal.java
@@ -38,4 +38,26 @@ public class SystemGlobal {
*/
public final static String PUT="PUT";
+ /**
+ * 成功数据数量
+ */
+ public final static int SUCCESS_NUM=1;
+
+ /**
+ * 异常日志
+ */
+ public final static String LOG_ERR="2";
+
+ public final static int LOG_DEFEAT=1024;
+
+
+ /**
+ * 线路工程类型
+ */
+ public final static String LINE_TYPE="线路";
+
+ public final static String ERR_NUM="NAN";
+
+ //
+ public final static String LOG_TYPE="1";
}
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/controller/BaseController.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/controller/BaseController.java
index cc365fd..ec7ebb9 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/controller/BaseController.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/controller/BaseController.java
@@ -151,4 +151,15 @@ public class BaseController
{
return result ? success() : error();
}
+
+ protected TableDataInfo getDataTableBad(List> list,String msg)
+ {
+ TableDataInfo rspData = new TableDataInfo();
+ rspData.setCode(HttpStatus.SUCCESS);
+ rspData.setRows(list);
+ rspData.setMsg(msg);
+ rspData.setTotal(new PageInfo(list).getTotal());
+ return rspData;
+ }
+
}
diff --git a/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/annotation/SysLog.java b/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/annotation/SysLog.java
index 545ebbc..330c6a9 100644
--- a/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/annotation/SysLog.java
+++ b/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/annotation/SysLog.java
@@ -1,6 +1,5 @@
package com.bonus.common.log.annotation;
-import com.bonus.common.log.enums.BusinessType;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.log.enums.OperatorType;
@@ -59,4 +58,17 @@ public @interface SysLog
* 排除指定的请求参数
*/
public String[] excludeParamNames() default {};
+
+ /**
+ * 操作类型
+ *
+ * @return
+ */
+ String grade() default OperaType.QUERY;
+
+ /**
+ * 日志类型
+ */
+ String type() default "业务日志";
+
}
diff --git a/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/enums/OperaType.java b/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/enums/OperaType.java
index 24cd657..d93cc5c 100644
--- a/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/enums/OperaType.java
+++ b/bonus-common/bonus-common-log/src/main/java/com/bonus/common/log/enums/OperaType.java
@@ -6,6 +6,11 @@ package com.bonus.common.log.enums;
*/
public class OperaType {
+
+ /**
+ * 备份
+ */
+ public final static String COPY_LOG="备份";
/**
* 查询
*/
diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/auth/AuthLogic.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/auth/AuthLogic.java
index c4dc9af..5e09475 100644
--- a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/auth/AuthLogic.java
+++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/auth/AuthLogic.java
@@ -148,7 +148,6 @@ public class AuthLogic
*/
public void checkPermi(RequiresPermissions requiresPermissions, ProceedingJoinPoint joinPoint)
{
-
SecurityContextHolder.setPermission(StringUtils.join(requiresPermissions.value(), ","));
if (requiresPermissions.logical() == Logical.AND) {
try{
@@ -164,10 +163,13 @@ public class AuthLogic
}
+ /**
+ * 记录越权日志
+ */
public void addErrorLogs(ProceedingJoinPoint joinPoint,RequiresPermissions requiresPermissions){
try{
LoginUser loginUser = getLoginUser();
- SysLogsVo vo=SysLogsVo.getSysLogsVo(loginUser,joinPoint);
+ SysLogsVo vo=SysLogsVo.getExceedAuthorithSysLogsVo(loginUser,joinPoint);
LogsUtils.setRequestValue(joinPoint,vo,null);
SysLogsVo sysLogsVo=new SysLogsVo();
sysLogsVo.setParams(requiresPermissions.value()[0]);
diff --git a/bonus-modules/bonus-system/pom.xml b/bonus-modules/bonus-system/pom.xml
index 2ddb1f0..ae623e5 100644
--- a/bonus-modules/bonus-system/pom.xml
+++ b/bonus-modules/bonus-system/pom.xml
@@ -77,6 +77,12 @@
com.bonus
bonus-common-swagger
+
+ com.google.guava
+ guava
+ 30.0-jre
+ compile
+
diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysLogController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysLogController.java
new file mode 100644
index 0000000..0974d0a
--- /dev/null
+++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysLogController.java
@@ -0,0 +1,173 @@
+package com.bonus.system.controller;
+
+import com.bonus.common.core.domain.R;
+//import com.bonus.common.core.utils.WordUtils;
+import com.bonus.common.core.web.controller.BaseController;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.common.core.web.page.TableDataInfo;
+import com.bonus.common.log.annotation.SysLog;
+import com.bonus.common.log.enums.OperaType;
+import com.bonus.common.core.utils.global.SystemGlobal;
+import com.bonus.system.api.domain.SysLogsVo;
+//import com.bonus.system.service.ExportSqlService;
+import com.bonus.system.service.ISysLogService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author:cwchen
+ * @date:2024-02-28-14:01
+ * @version:1.0
+ * @description:系统日志
+ */
+@RestController
+@RequestMapping("/sys/sysLog/")
+@Slf4j
+public class SysLogController extends BaseController {
+
+ @Resource(name = "ISysLogService")
+ private ISysLogService service;
+// /**
+// * 存储的路径
+// */
+// @Value("${sql.filePath}")
+// private String filePath;
+
+ @ApiOperation(value = "保存系统日志")
+ @PostMapping("saveLogs")
+ public AjaxResult saveLogs(@RequestBody SysLogsVo sysLog) {
+ return service.saveLogs(sysLog);
+ }
+
+ @PostMapping("addLogs")
+ public void addLogs(@RequestBody SysLogsVo sysLog,HttpServletRequest request) {
+ service.saveLogs(sysLog,request);
+ }
+
+// @Autowired
+// private ExportSqlService exportSqlService;
+
+ @ApiOperation(value = "查询系统日志")
+ @GetMapping("getSystemLogs")
+ @SysLog(title = "审计日志", module = "审计日志->系统日志", grade = OperaType.QUERY, details = "查询系统日志列表", type = "系统日志")
+ public TableDataInfo getSystemLogs(SysLogsVo dto) {
+ try{
+ dto.setLogType(0);
+ startPage();
+ List list = service.getSystemLogs(dto);
+ return getDataTable(list);
+ }catch (Exception e){
+ log.error(e.toString(),e);
+ return getDataTableBad(new ArrayList<>(),"请求出错了");
+ }
+ }
+
+ @ApiOperation(value = "查询业务日志")
+ @GetMapping("getYwLogs")
+ @SysLog(title = "审计日志", module = "审计日志->业务日志", grade = OperaType.QUERY, details = "查询业务日志列表", type = "系统日志")
+ public TableDataInfo getYwLogs(SysLogsVo dto) {
+ try{
+ dto.setLogType(1);
+ startPage();
+ List list = service.getSystemLogs(dto);
+ return getDataTable(list);
+ }catch (Exception e){
+ log.error(e.toString(),e);
+ return getDataTableBad(new ArrayList<>(),"请求出错了");
+ }
+ }
+
+ @ApiOperation(value = "查询异常日志")
+ @GetMapping("getErrLogs")
+ @SysLog(title = "审计日志", module = "审计日志->异常日志", grade = OperaType.QUERY, details = "查询系统异常日志", type = "系统日志")
+ public TableDataInfo getErrLogs(SysLogsVo dto) {
+ try{
+ dto.setLogType(2);
+ startPage();
+ List list = service.getSystemLogs(dto);
+ return getDataTable(list);
+ }catch (Exception e){
+ log.error(e.toString(),e);
+ return getDataTableBad(new ArrayList<>(),"请求出错了");
+ }
+ }
+ @ApiOperation(value = "日志备份")
+ @GetMapping("downloadErrLogs")
+ @SysLog(title = "审计日志", module = "审计日志->异常日志", grade = OperaType.COPY_LOG, details = "异常日志备份", type = "系统日志")
+ public void downloadErrLogs(HttpServletRequest request, HttpServletResponse response) {
+// try {
+// String dateTimeNow=exportSqlService.export("2");
+// String path=filePath + ExportSqlService.TABLE_NAME + dateTimeNow+ SystemGlobal.TEXT_FIX;
+// WordUtils.fileDown(path, "sys_log"+ dateTimeNow+".sql",response);
+// } catch (Exception e) {
+// logger.error("文件下载失败", e);
+// }
+ }
+
+ @ApiOperation(value = "日志备份")
+ @GetMapping("downloadYwLogs")
+ @SysLog(title = "审计日志", module = "审计日志-->业务日志", grade = OperaType.COPY_LOG, details = "业务日志备份", type = "系统日志")
+ public void downloadYwLogs(HttpServletRequest request, HttpServletResponse response) {
+// try {
+// String dateTimeNow=exportSqlService.export("1");
+// String path=filePath + ExportSqlService.TABLE_NAME + dateTimeNow+ SystemGlobal.TEXT_FIX;
+// WordUtils.fileDown(path, "sys_log"+ dateTimeNow+".sql",response);
+// } catch (Exception e) {
+// logger.error("文件下载失败", e);
+// }
+ }
+
+ @ApiOperation(value = "日志备份")
+ @GetMapping("downloadSysLogs")
+ @SysLog(title = "审计日志", module = "审计日志->系统日志", grade = OperaType.COPY_LOG, details = "系统日志备份", type = "系统日志")
+ public void downloadSysLogs(HttpServletRequest request, HttpServletResponse response) {
+// try {
+// String dateTimeNow=exportSqlService.export("0");
+// String path=filePath + ExportSqlService.TABLE_NAME + dateTimeNow+ SystemGlobal.TEXT_FIX;
+// WordUtils.fileDown(path, "sys_log"+ dateTimeNow+".sql",response);
+// } catch (Exception e) {
+// logger.error("文件下载失败", e);
+// }
+ }
+
+
+ @ApiOperation(value = "查询日志容量")
+ @PostMapping("getLogsSet")
+ @SysLog(title = "审计日志", module = "审计日志->日志容量配置", grade = OperaType.QUERY, details = "查询日志容量", type = "系统日志")
+ public R getLogsSet() {
+ return service.getLogsSet();
+ }
+
+
+ @ApiOperation(value = "设置日志容量")
+ @PostMapping("setLogsSet")
+ @SysLog(title = "审计日志", module = "审计日志->日志容量配置", grade = OperaType.QUERY, details = "修改日志容量", type = "系统日志")
+ public R setLogsSet(@RequestBody String capacity) {
+ return service.setLogsSet(capacity);
+ }
+
+
+ @ApiOperation(value = "查询日志统计分析")
+ @PostMapping("getLogStatistics")
+ @SysLog(title = "审计日志", module = "审计日志->日志分析", grade = OperaType.QUERY, details = "查询日志分析", type = "系统日志")
+ public R