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