Przeglądaj źródła

日志管理-对save方法对象id处理 区分是新增还是更新

caozixuan 2 lat temu
rodzic
commit
d420725e3a

+ 19 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/aspect/LogAspect.java

@@ -187,14 +187,31 @@ public class LogAspect {
                 if (editKey != null) {
                     // 捕捉到编辑对象的id
                     field.setAccessible(true);
-                    Object x = field.get(arg);
-                    if (Objects.nonNull(x)) {
+                    Object obj = field.get(arg);
+                    if (Objects.nonNull(obj)) {
                         return CustomizedOperationTypeEnum.UPDATE;
                     } else {
                         return CustomizedOperationTypeEnum.ADD;
                     }
                 }
             }
+            Class<?> supperClazz = clazz.getSuperclass();
+            if (Objects.nonNull(supperClazz)){
+                Field[] supperFields = supperClazz.getDeclaredFields();
+                for (Field field : supperFields) {
+                    EditKey editKey = field.getAnnotation(EditKey.class);
+                    if (editKey != null) {
+                        // 捕捉到编辑对象的id
+                        field.setAccessible(true);
+                        Object obj = field.get(arg);
+                        if (Objects.nonNull(obj)) {
+                            return CustomizedOperationTypeEnum.UPDATE;
+                        } else {
+                            return CustomizedOperationTypeEnum.ADD;
+                        }
+                    }
+                }
+            }
         }
         return CustomizedOperationTypeEnum.EDIT;
     }

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/base/BaseEntity.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.annotation.EditKey;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -23,6 +24,7 @@ public class BaseEntity implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "主键")
     @TableId(value = "id")
+    @EditKey
     private Long id;
 
     @JsonSerialize(using = ToStringSerializer.class)