diff --git a/bizlog-sdk/pom.xml b/bizlog-sdk/pom.xml index 2200c29..9a2aedc 100644 --- a/bizlog-sdk/pom.xml +++ b/bizlog-sdk/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 bizlog-sdk - 3.0.5-SNAPSHOT + 3.0.7-SNAPSHOT io.github.mouzt mzt-biz-log diff --git a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/configuration/LogRecordProxyAutoConfiguration.java b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/configuration/LogRecordProxyAutoConfiguration.java index 35bbe88..212994f 100644 --- a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/configuration/LogRecordProxyAutoConfiguration.java +++ b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/configuration/LogRecordProxyAutoConfiguration.java @@ -82,7 +82,7 @@ public LogRecordInterceptor logRecordInterceptor(LogRecordProperties logRecordPr interceptor.setLogRecordOperationSource(logRecordOperationSource()); interceptor.setTenant(enableLogRecord.getString("tenant")); interceptor.setJoinTransaction(enableLogRecord.getBoolean("joinTransaction")); - interceptor.setDiffLog(logRecordProperties.getDiffLog()); + interceptor.setDiffSameWhetherSaveLog(logRecordProperties.getDiffLog()); //interceptor.setLogFunctionParser(logFunctionParser(functionService)); //interceptor.setDiffParseFunction(diffParseFunction); interceptor.setLogRecordPerformanceMonitor(logRecordPerformanceMonitor()); diff --git a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/aop/LogRecordInterceptor.java b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/aop/LogRecordInterceptor.java index 41c8c16..9f52dc4 100644 --- a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/aop/LogRecordInterceptor.java +++ b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/aop/LogRecordInterceptor.java @@ -193,7 +193,7 @@ private boolean exitsCondition(MethodExecuteResult methodExecuteResult, private void saveLog(Method method, boolean flag, LogRecordOps operation, String operatorIdFromService, String action, Map expressionValues) { if (StringUtils.isEmpty(expressionValues.get(action)) || - (!diffLog && action.contains("#") && Objects.equals(action, expressionValues.get(action)))) { + (!diffSameWhetherSaveLog && action.contains("#") && Objects.equals(action, expressionValues.get(action)))) { return; } LogRecord logRecord = LogRecord.builder() @@ -272,8 +272,8 @@ public void setJoinTransaction(boolean joinTransaction) { this.joinTransaction = joinTransaction; } - public void setDiffLog(boolean diffLog) { - this.diffLog = diffLog; + public void setDiffSameWhetherSaveLog(boolean diffLog) { + this.diffSameWhetherSaveLog = diffLog; } @Override diff --git a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/parse/LogRecordValueParser.java b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/parse/LogRecordValueParser.java index 4767251..ca2af4b 100644 --- a/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/parse/LogRecordValueParser.java +++ b/bizlog-sdk/src/main/java/com/mzt/logapi/starter/support/parse/LogRecordValueParser.java @@ -25,7 +25,7 @@ public class LogRecordValueParser implements BeanFactoryAware { public static final String COMMA = ","; private final LogRecordExpressionEvaluator expressionEvaluator = new LogRecordExpressionEvaluator(); protected BeanFactory beanFactory; - protected boolean diffLog; + protected boolean diffSameWhetherSaveLog; private LogFunctionParser logFunctionParser; @@ -61,24 +61,21 @@ public Map processTemplate(Collection templates, MethodE Matcher matcher = pattern.matcher(expressionTemplate); StringBuffer parsedStr = new StringBuffer(); AnnotatedElementKey annotatedElementKey = new AnnotatedElementKey(methodExecuteResult.getMethod(), methodExecuteResult.getTargetClass()); - boolean diffLogFlag = !diffLog; + boolean sameDiff = false; while (matcher.find()) { - String expression = matcher.group(2); String functionName = matcher.group(1); if (DiffParseFunction.diffFunctionName.equals(functionName)) { expression = getDiffFunctionValue(evaluationContext, annotatedElementKey, expression); + sameDiff = Objects.equals("", expression); } else { Object value = expressionEvaluator.parseExpression(expression, annotatedElementKey, evaluationContext); expression = logFunctionParser.getFunctionReturnValue(beforeFunctionNameAndReturnMap, value, expression, functionName); } - if (expression != null && !Objects.equals(expression, "")) { - diffLogFlag = false; - } matcher.appendReplacement(parsedStr, Matcher.quoteReplacement(expression == null ? "" : expression)); } matcher.appendTail(parsedStr); - expressionValues.put(expressionTemplate, diffLogFlag ? expressionTemplate : parsedStr.toString()); + expressionValues.put(expressionTemplate, recordSameDiff(sameDiff, diffSameWhetherSaveLog) ? parsedStr.toString() : expressionTemplate); } else { expressionValues.put(expressionTemplate, expressionTemplate); } @@ -87,6 +84,16 @@ public Map processTemplate(Collection templates, MethodE return expressionValues; } + private boolean recordSameDiff(boolean sameDiff, boolean diffSameWhetherSaveLog) { + if(diffSameWhetherSaveLog == true) { + return true; + } + if(!diffSameWhetherSaveLog && sameDiff) { + return false; + } + return true; + } + private String getDiffFunctionValue(EvaluationContext evaluationContext, AnnotatedElementKey annotatedElementKey, String expression) { String[] params = parseDiffFunction(expression); if (params.length == 1) { diff --git a/bizlog-server/pom.xml b/bizlog-server/pom.xml index 4377d37..7b886d6 100644 --- a/bizlog-server/pom.xml +++ b/bizlog-server/pom.xml @@ -22,7 +22,7 @@ io.github.mouzt bizlog-sdk - 3.0.5-SNAPSHOT + 3.0.7-SNAPSHOT diff --git a/bizlog-server/src/main/java/com/mzt/logserver/IUserService.java b/bizlog-server/src/main/java/com/mzt/logserver/IUserService.java index 780e791..2e9c19d 100644 --- a/bizlog-server/src/main/java/com/mzt/logserver/IUserService.java +++ b/bizlog-server/src/main/java/com/mzt/logserver/IUserService.java @@ -10,6 +10,7 @@ **/ public interface IUserService { boolean diffUser(User user, User newUser); + boolean diffUserByTwoExpression(User user, User newUser); boolean testGlobalVariable(User user, Order order); diff --git a/bizlog-server/src/main/java/com/mzt/logserver/impl/UserServiceImpl.java b/bizlog-server/src/main/java/com/mzt/logserver/impl/UserServiceImpl.java index f5dd212..e18dfa4 100644 --- a/bizlog-server/src/main/java/com/mzt/logserver/impl/UserServiceImpl.java +++ b/bizlog-server/src/main/java/com/mzt/logserver/impl/UserServiceImpl.java @@ -30,6 +30,13 @@ public boolean diffUser(User user, User newUser) { return false; } + @LogRecord(success = "{{#user.id}}更新了用户信息{_DIFF{#user, #newUser}}", + type = LogRecordType.USER, bizNo = "{{#newUser.id}}", + extra = "{{#newUser.toString()}}") + public boolean diffUserByTwoExpression(User user, User newUser) { + return false; + } + @Override @LogRecord(success = "更新{{#user.name}}用户积分信息", type = LogRecordType.USER, bizNo = "{{#user.id}}", diff --git a/bizlog-server/src/test/java/com/mzt/logserver/IOrderServiceTest.java b/bizlog-server/src/test/java/com/mzt/logserver/IOrderServiceTest.java index 5c64e37..5b3911a 100644 --- a/bizlog-server/src/test/java/com/mzt/logserver/IOrderServiceTest.java +++ b/bizlog-server/src/test/java/com/mzt/logserver/IOrderServiceTest.java @@ -648,7 +648,7 @@ public void fixedCopy() { public void fixedCopy2() { // 记录日志 LogRecordInterceptor bean = SpringUtil.getBean(LogRecordInterceptor.class); - bean.setDiffLog(true); + bean.setDiffSameWhetherSaveLog(true); User user = new User(); user.setName("张三"); User oldUser = new User(); @@ -664,7 +664,7 @@ public void fixedCopy2() { public void fixedCopy3() { // 不记录日志 LogRecordInterceptor bean = SpringUtil.getBean(LogRecordInterceptor.class); - bean.setDiffLog(false); + bean.setDiffSameWhetherSaveLog(false); User user = new User(); user.setName("张三"); User oldUser = new User(); diff --git a/bizlog-server/src/test/java/com/mzt/logserver/IUserServiceTest.java b/bizlog-server/src/test/java/com/mzt/logserver/IUserServiceTest.java index 7bc0536..2b2fbe7 100644 --- a/bizlog-server/src/test/java/com/mzt/logserver/IUserServiceTest.java +++ b/bizlog-server/src/test/java/com/mzt/logserver/IUserServiceTest.java @@ -394,6 +394,34 @@ public void test_LocalDateTime() { logRecordService.clean(); } + @Test + @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) + public void test_sameDiffNotRecord() { + User user = new User(); + user.setId(1L); + User newUser = new User(); + newUser.setId(1L); + userService.diffUser(user, newUser); + + List logRecordList = logRecordService.queryLog(String.valueOf(user.getId()), LogRecordType.USER); + Assert.assertEquals(0, logRecordList.size()); + logRecordService.clean(); + } + + @Test + @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) + public void test_sameDiffNotRecordWithMoreExpression() { + User user = new User(); + user.setId(1L); + User newUser = new User(); + newUser.setId(1L); + userService.diffUserByTwoExpression(user, newUser); + + List logRecordList = logRecordService.queryLog(String.valueOf(user.getId()), LogRecordType.USER); + Assert.assertEquals(0, logRecordList.size()); + logRecordService.clean(); + } + @Test @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) public void test_LocalDate() { @@ -422,7 +450,7 @@ public void test_LocalDate() { public void test_diffLog_true() { LogRecordInterceptor bean = SpringUtil.getBean(LogRecordInterceptor.class); - bean.setDiffLog(true); + bean.setDiffSameWhetherSaveLog(true); User user = new User(); user.setId(1L); user.setName("张三"); @@ -465,7 +493,7 @@ public void test_testGlobalVariable_diff() { @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) public void test_diffLog_false() { LogRecordInterceptor bean = SpringUtil.getBean(LogRecordInterceptor.class); - bean.setDiffLog(false); + bean.setDiffSameWhetherSaveLog(false); User user = new User(); user.setId(1L); user.setName("张三"); diff --git a/readme.md b/readme.md index c41e030..eec14dc 100644 --- a/readme.md +++ b/readme.md @@ -48,7 +48,7 @@ io.github.mouzt bizlog-sdk - 3.0.5 + 3.0.7-SNAPSHOT ``` #### SpringBoot入口打开开关,添加 @EnableLogRecord 注解