Browse Source

增加一些event

zhouhao 6 years ago
parent
commit
4c0aa6536b

+ 17 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/events/DatabaseInitEvent.java

@@ -0,0 +1,17 @@
+package org.hswebframework.web.service.form.events;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.ezorm.rdb.RDBDatabase;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@AllArgsConstructor
+public class DatabaseInitEvent {
+
+    @Getter
+    private RDBDatabase database;
+
+}

+ 20 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/events/FormDataInsertBeforeEvent.java

@@ -0,0 +1,20 @@
+package org.hswebframework.web.service.form.events;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.ezorm.rdb.RDBTable;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@AllArgsConstructor
+@Getter
+public class FormDataInsertBeforeEvent<T> {
+    private String formId;
+
+    private RDBTable<T> table;
+
+    private T data;
+
+}

+ 21 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/events/FormDataQueryBeforeEvent.java

@@ -0,0 +1,21 @@
+package org.hswebframework.web.service.form.events;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.ezorm.rdb.RDBTable;
+import org.hswebframework.web.commons.entity.param.QueryParamEntity;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@AllArgsConstructor
+@Getter
+public class FormDataQueryBeforeEvent<T> {
+    private String formId;
+
+    private RDBTable<T> table;
+
+    private QueryParamEntity param;
+
+}

+ 21 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/events/FormDataUpdateBeforeEvent.java

@@ -0,0 +1,21 @@
+package org.hswebframework.web.service.form.events;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.ezorm.rdb.RDBTable;
+
+/**
+ * @author zhouhao
+ * @since 3.0.0-RC
+ */
+@AllArgsConstructor
+@Getter
+public class FormDataUpdateBeforeEvent<T> {
+    private String formId;
+
+    private RDBTable<T> table;
+
+    private T data;
+
+    private Object id;
+}

+ 7 - 4
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDatabaseRepository.java

@@ -12,7 +12,9 @@ import org.hswebframework.web.datasource.DataSourceHolder;
 import org.hswebframework.web.datasource.DatabaseType;
 import org.hswebframework.web.datasource.DynamicDataSource;
 import org.hswebframework.web.service.form.DatabaseRepository;
+import org.hswebframework.web.service.form.events.DatabaseInitEvent;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -22,14 +24,14 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.function.Supplier;
 
-/**
- * Created by zhouhao on 2017/7/2.
- */
 @Service
 public class SimpleDatabaseRepository implements DatabaseRepository {
 
     private volatile RDBDatabase defaultDatabase = null;
-    private SqlExecutor sqlExecutor     = null;
+    private          SqlExecutor sqlExecutor     = null;
+
+    @Autowired
+    private ApplicationEventPublisher eventPublisher;
 
     private final Map<String, RDBDatabase>                                 repository            = new HashMap<>();
     private final Map<DatabaseType, Supplier<AbstractRDBDatabaseMetaData>> databaseMetaSuppliers = new EnumMap<>(DatabaseType.class);
@@ -99,6 +101,7 @@ public class SimpleDatabaseRepository implements DatabaseRepository {
         AbstractRDBDatabaseMetaData metaData = supplier.get();
         SimpleDatabase database = new SimpleDatabase(metaData, sqlExecutor);
         database.setAutoParse(true);
+        eventPublisher.publishEvent(new DatabaseInitEvent(database));
         return database;
     }
 }

+ 8 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormOperationService.java

@@ -16,7 +16,10 @@ import org.hswebframework.web.entity.form.DynamicFormEntity;
 import org.hswebframework.web.service.form.DatabaseRepository;
 import org.hswebframework.web.service.form.DynamicFormOperationService;
 import org.hswebframework.web.service.form.DynamicFormService;
+import org.hswebframework.web.service.form.events.FormDataInsertBeforeEvent;
+import org.hswebframework.web.service.form.events.FormDataUpdateBeforeEvent;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -33,6 +36,9 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
     private DatabaseRepository databaseRepository;
 
+    @Autowired
+    private ApplicationEventPublisher eventPublisher;
+
     @Autowired
     public void setDynamicFormService(DynamicFormService dynamicFormService) {
         this.dynamicFormService = dynamicFormService;
@@ -111,6 +117,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
     public <T> void insert(String formId, T entity) {
         RDBTable<T> table = getTable(formId);
         Insert<T> insert = table.createInsert();
+        eventPublisher.publishEvent(new FormDataInsertBeforeEvent<>(formId, table, entity));
         insert.value(entity).exec();
     }
 
@@ -138,6 +145,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
     public <T> T updateById(String formId, String id, T data) {
         Objects.requireNonNull(id, "主键不能为空");
         RDBTable<T> table = getTable(formId);
+        eventPublisher.publishEvent(new FormDataUpdateBeforeEvent<>(formId, table, data, id));
         table.createUpdate()
                 .set(data)
                 .where("id", id)