diff --git a/.idea/misc.xml b/.idea/misc.xml
index 540d695..82dbec8 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,11 +7,6 @@
-
diff --git a/sky-server/src/main/java/com/sky/Aspect/AutoFillAspect.java b/sky-server/src/main/java/com/sky/Aspect/AutoFillAspect.java
new file mode 100644
index 0000000..989e38a
--- /dev/null
+++ b/sky-server/src/main/java/com/sky/Aspect/AutoFillAspect.java
@@ -0,0 +1,74 @@
+package com.sky.Aspect;
+
+import com.sky.annotation.AutoFill;
+import com.sky.constant.AutoFillConstant;
+import com.sky.context.BaseContext;
+import com.sky.enumeration.OperationType;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.time.LocalDateTime;
+
+/*
+* 自定义切面,实现公共字段自动填充处理逻辑
+* */
+@Aspect
+@Component
+@Slf4j
+public class AutoFillAspect {
+
+ /*
+ * 切入点
+ * */
+ @Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")
+ public void autoFillPointCut() {}
+
+ /*
+ * 前置通知,在通知中进行公共字段的赋值
+ * */
+ @Before("autoFillPointCut()")
+ public void autoFill(JoinPoint joinPoint) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+ log.info("开始进行公共字段的自动填充...");
+
+ //获取当前被拦截的方法上的数据库操作类型
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();//方法签名对象
+ AutoFill autoFill = signature.getMethod().getAnnotation(AutoFill.class);//获取方法上的注解对象
+ OperationType operationType = autoFill.value();//获取数据库操作类型
+ //获取当前被拦截的方法的参数 --实体对象
+ Object[] args = joinPoint.getArgs();
+ if(args == null || args.length ==0){
+ return;
+ }
+
+ Object entity = args[0];
+
+ //准备赋值数据
+ LocalDateTime now = LocalDateTime.now();
+ Long currentId = BaseContext.getCurrentId();
+ //根据当前不同操作类型,为对应的属性通过反射赋值
+ if(operationType == OperationType.INSERT){
+ Method setCreateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME, LocalDateTime.class);
+ Method setCreateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER, Long.class);
+ Method setUpdateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);
+ Method setUpdateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);
+
+ //通过反射为对象属性赋值
+ setCreateTime.invoke(entity,now);
+ setCreateUser.invoke(entity,currentId);
+ setUpdateTime.invoke(entity,now);
+ setUpdateUser.invoke(entity,currentId);
+ }else if(operationType == OperationType.UPDATE){
+ Method setUpdateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);
+ Method setUpdateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);
+ setUpdateTime.invoke(entity,now);
+ setUpdateUser.invoke(entity,currentId);
+ }
+ }
+}
diff --git a/sky-server/src/main/java/com/sky/annotation/AutoFill.java b/sky-server/src/main/java/com/sky/annotation/AutoFill.java
new file mode 100644
index 0000000..8f320e7
--- /dev/null
+++ b/sky-server/src/main/java/com/sky/annotation/AutoFill.java
@@ -0,0 +1,20 @@
+package com.sky.annotation;
+
+
+import com.sky.enumeration.OperationType;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+* 自定义注解 ,用于标识某个方法需要进行功能字段自动填充处理
+* */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface AutoFill {
+
+ //数据库操作类型: UPDATE INSERT
+ OperationType value();
+}