Jelajahi Sumber

增加监听器

zhou-hao 5 tahun lalu
induk
melakukan
2071853836

+ 14 - 0
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyOrmConfiguration.java

@@ -3,6 +3,7 @@ package org.hswebframework.web.crud.configuration;
 
 import lombok.SneakyThrows;
 import org.hswebframework.ezorm.core.meta.Feature;
+import org.hswebframework.ezorm.rdb.events.EventListener;
 import org.hswebframework.ezorm.rdb.executor.SyncSqlExecutor;
 import org.hswebframework.ezorm.rdb.executor.reactive.ReactiveSqlExecutor;
 import org.hswebframework.ezorm.rdb.mapping.EntityColumnMapping;
@@ -16,6 +17,8 @@ import org.hswebframework.ezorm.rdb.operator.DefaultDatabaseOperator;
 import org.hswebframework.web.api.crud.entity.EntityFactory;
 import org.hswebframework.web.crud.annotation.EnableEasyormRepository;
 import org.hswebframework.web.crud.entity.factory.MapperEntityFactory;
+import org.hswebframework.web.crud.events.CompositeEventListener;
+import org.hswebframework.web.crud.events.ValidateEventListener;
 import org.hswebframework.web.crud.generator.CurrentTimeGenerator;
 import org.hswebframework.web.crud.generator.DefaultIdGenerator;
 import org.hswebframework.web.crud.generator.MD5Generator;
@@ -110,17 +113,28 @@ public class EasyOrmConfiguration {
 
     @Bean
     public BeanPostProcessor autoRegisterFeature(RDBDatabaseMetadata metadata) {
+        CompositeEventListener eventListener = new CompositeEventListener();
+        metadata.addFeature(eventListener);
         return new BeanPostProcessor() {
             @Override
             public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                 if (bean instanceof Feature) {
                     metadata.addFeature(((Feature) bean));
                 }
+                if (bean instanceof EventListener) {
+                    eventListener.addListener(((EventListener) bean));
+                }
                 return bean;
             }
         };
     }
 
+
+    @Bean
+    public ValidateEventListener validateEventListener() {
+        return new ValidateEventListener();
+    }
+
     @Bean
     @ConfigurationProperties(prefix = "easyorm.default-value-generator")
     public DefaultIdGenerator defaultIdGenerator() {

+ 28 - 0
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/CompositeEventListener.java

@@ -0,0 +1,28 @@
+package org.hswebframework.web.crud.events;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.hswebframework.ezorm.rdb.events.EventContext;
+import org.hswebframework.ezorm.rdb.events.EventListener;
+import org.hswebframework.ezorm.rdb.events.EventType;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+@Getter
+@Setter
+public class CompositeEventListener implements EventListener {
+
+    private List<EventListener> eventListeners = new CopyOnWriteArrayList<>();
+
+    @Override
+    public void onEvent(EventType type, EventContext context) {
+        for (EventListener eventListener : eventListeners) {
+            eventListener.onEvent(type, context);
+        }
+    }
+
+    public void addListener(EventListener eventListener) {
+        eventListeners.add(eventListener);
+    }
+}

+ 1 - 2
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/ValidateEventHandler.java

@@ -1,6 +1,5 @@
 package org.hswebframework.web.crud.events;
 
-import org.hswebframework.ezorm.rdb.events.ContextKeys;
 import org.hswebframework.ezorm.rdb.events.EventContext;
 import org.hswebframework.ezorm.rdb.events.EventListener;
 import org.hswebframework.ezorm.rdb.events.EventType;
@@ -10,7 +9,7 @@ import org.hswebframework.web.api.crud.entity.Entity;
 import org.hswebframework.web.validator.CreateGroup;
 import org.hswebframework.web.validator.UpdateGroup;
 
-public class ValidateEventHandler implements EventListener {
+public class ValidateEventListener implements EventListener {
 
 
     @Override

+ 3 - 1
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/web/reactive/ReactiveSaveController.java

@@ -9,13 +9,15 @@ import org.hswebframework.web.authorization.annotation.Authorize;
 import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Mono;
 
+import javax.validation.Valid;
+
 public interface ReactiveSaveController<E, K> {
 
     ReactiveRepository<E, K> getRepository();
 
     default E applyCreationEntity(Authentication authentication, E entity) {
         RecordCreationEntity creationEntity = ((RecordCreationEntity) entity);
-        creationEntity.setCreateTime(System.currentTimeMillis());
+        creationEntity.setCreateTimeNow();
         creationEntity.setCreatorId(authentication.getUser().getId());
 
         return entity;