diff --git a/.idea/artifacts/platform_sync_data_war.xml b/.idea/artifacts/platform_sync_data_war.xml
new file mode 100644
index 0000000..9fff4bc
--- /dev/null
+++ b/.idea/artifacts/platform_sync_data_war.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/platform-sync-data/target
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml
new file mode 100644
index 0000000..c6ea67e
--- /dev/null
+++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml
new file mode 100644
index 0000000..f538e36
--- /dev/null
+++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_alibaba_druid_1_0_31.xml b/.idea/libraries/Maven__com_alibaba_druid_1_0_31.xml
new file mode 100644
index 0000000..82b83f6
--- /dev/null
+++ b/.idea/libraries/Maven__com_alibaba_druid_1_0_31.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_8.xml b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_8.xml
new file mode 100644
index 0000000..9b223e0
--- /dev/null
+++ b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_8.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml
new file mode 100644
index 0000000..578b079
--- /dev/null
+++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
new file mode 100644
index 0000000..b8581a6
--- /dev/null
+++ b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml
new file mode 100644
index 0000000..d411041
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_41.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_41.xml
new file mode 100644
index 0000000..e2831f2
--- /dev/null
+++ b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_41.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml
new file mode 100644
index 0000000..88d626e
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml
new file mode 100644
index 0000000..6c692c8
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml b/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml
new file mode 100644
index 0000000..1e0b53d
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml
new file mode 100644
index 0000000..78cfcd3
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml
new file mode 100644
index 0000000..666266c
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_14.xml b/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_14.xml
new file mode 100644
index 0000000..f91cc73
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_14.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_14.xml b/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_14.xml
new file mode 100644
index 0000000..25435e2
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_14.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_10.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_10.xml
new file mode 100644
index 0000000..36093ff
--- /dev/null
+++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_10.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml
new file mode 100644
index 0000000..58bdc9a
--- /dev/null
+++ b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_continuation_9_3_8_v20160314.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_continuation_9_3_8_v20160314.xml
new file mode 100644
index 0000000..aebf72f
--- /dev/null
+++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_continuation_9_3_8_v20160314.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_3_8_v20160314.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_3_8_v20160314.xml
new file mode 100644
index 0000000..302a1ad
--- /dev/null
+++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_3_8_v20160314.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_3_8_v20160314.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_3_8_v20160314.xml
new file mode 100644
index 0000000..933fb26
--- /dev/null
+++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_3_8_v20160314.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlets_9_3_8_v20160314.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlets_9_3_8_v20160314.xml
new file mode 100644
index 0000000..b215bbb
--- /dev/null
+++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlets_9_3_8_v20160314.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_3_8_v20160314.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_3_8_v20160314.xml
new file mode 100644
index 0000000..729e79c
--- /dev/null
+++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_3_8_v20160314.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..f58bbc1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
new file mode 100644
index 0000000..78dbe45
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml
new file mode 100644
index 0000000..a523703
--- /dev/null
+++ b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mongodb_bson_3_4_2.xml b/.idea/libraries/Maven__org_mongodb_bson_3_4_2.xml
new file mode 100644
index 0000000..3ad18d7
--- /dev/null
+++ b/.idea/libraries/Maven__org_mongodb_bson_3_4_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mongodb_mongodb_driver_3_4_2.xml b/.idea/libraries/Maven__org_mongodb_mongodb_driver_3_4_2.xml
new file mode 100644
index 0000000..eb69c1d
--- /dev/null
+++ b/.idea/libraries/Maven__org_mongodb_mongodb_driver_3_4_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mongodb_mongodb_driver_core_3_4_2.xml b/.idea/libraries/Maven__org_mongodb_mongodb_driver_core_3_4_2.xml
new file mode 100644
index 0000000..c315f1a
--- /dev/null
+++ b/.idea/libraries/Maven__org_mongodb_mongodb_driver_core_3_4_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_3_4_2.xml b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_2.xml
new file mode 100644
index 0000000..b65acd9
--- /dev/null
+++ b/.idea/libraries/Maven__org_mybatis_mybatis_3_4_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_1.xml b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_1.xml
new file mode 100644
index 0000000..774f47c
--- /dev/null
+++ b/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_2_0.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_2_0.xml
new file mode 100644
index 0000000..e2a7a44
--- /dev/null
+++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_2_0.xml b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_2_0.xml
new file mode 100644
index 0000000..c4a46a2
--- /dev/null
+++ b/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
new file mode 100644
index 0000000..7ab319b
--- /dev/null
+++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
new file mode 100644
index 0000000..da69f6c
--- /dev/null
+++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml
new file mode 100644
index 0000000..f86d2c8
--- /dev/null
+++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml
new file mode 100644
index 0000000..bae9949
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
new file mode 100644
index 0000000..6073e53
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml
new file mode 100644
index 0000000..a14ac63
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
new file mode 100644
index 0000000..20e8163
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..f739d39
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..5eb4732
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..2de3ad6
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..b3f44c0
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..3700898
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_mongodb_1_5_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_mongodb_1_5_2_RELEASE.xml
new file mode 100644
index 0000000..18df672
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_mongodb_1_5_2_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..62a089e
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..996c9fd
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..c64fd94
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..f212266
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml
new file mode 100644
index 0000000..28a0a1d
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_3_RELEASE.xml
new file mode 100644
index 0000000..707aa9c
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_mongodb_1_10_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_mongodb_1_10_3_RELEASE.xml
new file mode 100644
index 0000000..5232c55
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_data_spring_data_mongodb_1_10_3_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..659aa93
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..39b5701
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..36db229
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..3ab7fea
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..2fff822
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..4af6ee0
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..885179d
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_tx_4_3_8_RELEASE.xml
new file mode 100644
index 0000000..cf3af98
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_tx_4_3_8_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml
new file mode 100644
index 0000000..20e2920
--- /dev/null
+++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/platform-operate-api/pom.xml b/platform-operate-api/pom.xml
index 853d598..85c2181 100644
--- a/platform-operate-api/pom.xml
+++ b/platform-operate-api/pom.xml
@@ -138,7 +138,7 @@
9.3.8.v20160314
- 9090
+ 9091
/
diff --git a/platform-operate-api/src/main/webapp/WEB-INF/web.xml b/platform-operate-api/src/main/webapp/WEB-INF/web.xml
index 0960641..b17a4f6 100644
--- a/platform-operate-api/src/main/webapp/WEB-INF/web.xml
+++ b/platform-operate-api/src/main/webapp/WEB-INF/web.xml
@@ -48,6 +48,30 @@
-->
+
+
+
+ cross-origin
+ org.eclipse.jetty.servlets.CrossOriginFilter
+
+ allowedOrigins
+ *
+
+
+ allowedMethods
+ GET,POST,HEAD,OPTIONS,PUT,DELETE
+
+
+ allowedHeaders
+ Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,authorization
+
+
+
+
+ cross-origin
+ /*
+
+
default
*.xml
diff --git a/regional-etl/pom.xml b/regional-etl/pom.xml
index e7469e6..a6c4b06 100644
--- a/regional-etl/pom.xml
+++ b/regional-etl/pom.xml
@@ -21,6 +21,11 @@
spring-boot-starter
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
org.mybatis.spring.boot
mybatis-spring-boot-starter
@@ -47,7 +52,7 @@
com.alibaba
druid
- 1.0.28
+ RELEASE
diff --git a/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java b/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java
index 095af209..760339e 100644
--- a/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java
+++ b/regional-etl/src/main/java/com/lyms/etl/ApplicationRunner.java
@@ -1,5 +1,6 @@
package com.lyms.etl;
+import com.lyms.etl.datasource.DynamicDataSourceRegister;
import com.lyms.etl.service.IInvokeHandler;
import com.lyms.etl.util.AopTargetUtil;
import org.mybatis.spring.annotation.MapperScan;
@@ -9,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.Date;
@@ -21,6 +23,7 @@ import java.util.Set;
*/
@SpringBootApplication
@EnableTransactionManagement
+@Import({ DynamicDataSourceRegister.class })
@MapperScan("com.lyms.etl.dao")
public class ApplicationRunner implements CommandLineRunner{
diff --git a/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSource.java b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSource.java
new file mode 100644
index 0000000..4bc9cb2
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSource.java
@@ -0,0 +1,17 @@
+package com.lyms.etl.datasource;
+
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+/**
+ * 动态数据源
+ * @Author: litao
+ * @Date: 2017/5/17 0017 10:25
+ * @Version: V1.0
+ */
+public class DynamicDataSource extends AbstractRoutingDataSource {
+
+ @Override
+ protected Object determineCurrentLookupKey() {
+ return DynamicDataSourceContextHolder.getDataSourceType();
+ }
+}
diff --git a/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAnno.java b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAnno.java
new file mode 100644
index 0000000..bccc075
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAnno.java
@@ -0,0 +1,16 @@
+package com.lyms.etl.datasource;
+
+import java.lang.annotation.*;
+
+/**
+ * 在方法或类上使用,用于指定使用哪个数据源
+ * @Author: litao
+ * @Date: 2017/5/17 0017 10:31
+ * @Version: V1.0
+ */
+@Target({ ElementType.METHOD, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DynamicDataSourceAnno {
+ String value() default "";
+}
diff --git a/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAspect.java b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAspect.java
new file mode 100644
index 0000000..3d8589e
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceAspect.java
@@ -0,0 +1,55 @@
+package com.lyms.etl.datasource;
+
+import com.lyms.etl.util.ReflectUtil;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+
+/**
+ * 动态切换数据源aop
+ * @Author: litao
+ * @Date: 2017/5/17 0017 10:48
+ * @Version: V1.0
+ */
+@Aspect
+@Component
+//@Order(1) /** 保证在方法执行前执行 */
+public class DynamicDataSourceAspect {
+ private static final Logger logger = LoggerFactory.getLogger(DynamicDataSourceAspect.class);
+
+ @Pointcut("@within(DynamicDataSourceAnno) || @annotation(DynamicDataSourceAnno)")
+ private void advice() {
+ }
+
+ @Before("advice()")
+ public void setDataSource(JoinPoint point) {
+ try {
+ Class> clazz = point.getTarget().getClass();
+ MethodSignature signature = (MethodSignature) point.getSignature();
+ Method method = signature.getMethod();
+
+ /** 可能是通过接口调用方法 所以通过反射获取实现类方法上面的注解 */
+ DynamicDataSourceAnno anno = ReflectUtil.getMethodAnno(clazz, method.getName(), DynamicDataSourceAnno.class);
+ if(anno == null) { /** 方法上沒注解获取类上面的注解 由于只拦截了类和方法上的注解 所以不可能为空 */
+ anno = clazz.getAnnotation(DynamicDataSourceAnno.class);
+ }
+
+ String datasource = anno.value();
+ if(DynamicDataSourceContextHolder.containsDataSource(datasource)) {
+ DynamicDataSourceContextHolder.setDataSourceType(datasource);
+ logger.info("切换到 [{}] 数据源", datasource);
+ } else {
+ logger.info("数据源 [{}] 未找到,使用默认数据源", datasource);
+ }
+ } catch (Exception e) {
+ logger.error("切换数据源失败: ", e.fillInStackTrace());
+ }
+ }
+}
diff --git a/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceContextHolder.java b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceContextHolder.java
new file mode 100644
index 0000000..2167214
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceContextHolder.java
@@ -0,0 +1,33 @@
+package com.lyms.etl.datasource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 通过ThreadLocal来存储当前所使用数据源对应的key
+ * @Author: litao
+ * @Date: 2017/5/17 0017 10:25
+ * @Version: V1.0
+ */
+public class DynamicDataSourceContextHolder {
+
+ private static final ThreadLocal contextHolder = new ThreadLocal();
+
+ public static List dataSourceIds = new ArrayList<>();
+
+ public static void setDataSourceType(String dataSourceType) {
+ contextHolder.set(dataSourceType);
+ }
+
+ public static String getDataSourceType() {
+ return contextHolder.get();
+ }
+
+ public static void clearDataSourceType() {
+ contextHolder.remove();
+ }
+
+ public static boolean containsDataSource(String dataSourceId){
+ return dataSourceIds.contains(dataSourceId);
+ }
+}
diff --git a/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceRegister.java b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceRegister.java
new file mode 100644
index 0000000..c6666e9
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/datasource/DynamicDataSourceRegister.java
@@ -0,0 +1,74 @@
+package com.lyms.etl.datasource;
+
+import com.alibaba.druid.pool.DruidDataSourceFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
+import org.springframework.core.env.Environment;
+import org.springframework.core.type.AnnotationMetadata;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: litao
+ * @Date: 2017/5/18 0018 20:08
+ * @Version: V1.0
+ */
+public class DynamicDataSourceRegister
+ implements ImportBeanDefinitionRegistrar, EnvironmentAware {
+
+ private static final Logger LOG = LoggerFactory.getLogger(DynamicDataSourceRegister.class);
+
+ private DataSource defaultDataSource; /** 主数据源 */
+ private Map customDataSources = new HashMap<>(); /** 其他数据源 */
+
+ @Override
+ public void setEnvironment(Environment environment) {
+ initDefaultDataSource(environment);
+ initCustomDataSources(environment);
+ }
+
+ /**
+ * 初始化多数据源
+ * @param environment
+ */
+ private void initCustomDataSources(Environment environment) {
+ try {
+ RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource");
+
+ Map connProperties = propertyResolver.getSubProperties(".");
+ System.err.println("connProperties>>> " + connProperties);
+ List customs = (List) connProperties.get("customs");
+ } catch (Exception e) {
+ LOG.error("初始化多数据源失败:", e.fillInStackTrace());
+ }
+ }
+
+ /**
+ * 初始化主数据源(默认数据源)
+ * @param environment
+ */
+ @ConfigurationProperties
+ private void initDefaultDataSource(Environment environment) {
+ try {
+ RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource");
+
+ Map connProperties = propertyResolver.getSubProperties(".");
+ defaultDataSource = DruidDataSourceFactory.createDataSource(connProperties);
+ } catch (Exception e) {
+ LOG.error("初始化主数据源出错:", e.fillInStackTrace());
+ }
+ }
+
+ @Override
+ public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
+ System.err.println("registerBeanDefinitions");
+ }
+}
diff --git a/regional-etl/src/main/java/com/lyms/etl/util/ReflectUtil.java b/regional-etl/src/main/java/com/lyms/etl/util/ReflectUtil.java
new file mode 100644
index 0000000..6bbfe94
--- /dev/null
+++ b/regional-etl/src/main/java/com/lyms/etl/util/ReflectUtil.java
@@ -0,0 +1,28 @@
+package com.lyms.etl.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * 反射相关工具类
+ * @Author: litao
+ * @Date: 2017/5/17 0017 17:41
+ * @Version: V1.0
+ */
+public class ReflectUtil {
+
+ private static final Logger log = LoggerFactory.getLogger(ReflectUtil.class);
+
+ public static T getMethodAnno(Class> clazz, String methodName, Class annoClass) {
+ T anno = null;
+ try {
+ anno = clazz.getMethod(methodName).getAnnotation(annoClass);
+ } catch (Exception e) {
+ log.error("反射获取注解出错:", e.fillInStackTrace());
+ }
+ return anno;
+ }
+
+}
diff --git a/regional-etl/src/main/resources/application.properties b/regional-etl/src/main/resources/application.properties
index 72b5300..8b25b99 100644
--- a/regional-etl/src/main/resources/application.properties
+++ b/regional-etl/src/main/resources/application.properties
@@ -21,4 +21,5 @@ spring.datasource.druid.stat.slowSqlMillis=5000
mybatis.typeAliasesPackage=com.lyms.etl.model
mybatis.mapperLocations=classpath:mappers/*.xml
-spring.profiles.active=prod, etl
\ No newline at end of file
+#spring.profiles.active=prod, etl
+spring.profiles.active=etl
\ No newline at end of file
diff --git a/regional-etl/src/main/resources/application.yml b/regional-etl/src/main/resources/application.yml
index 443919a..aed8b4e 100644
--- a/regional-etl/src/main/resources/application.yml
+++ b/regional-etl/src/main/resources/application.yml
@@ -4,6 +4,12 @@ spring:
username: platform
password: platform123
driver-class-name: com.mysql.jdbc.Driver
+ # 必须配置为字符类型 @see com.alibaba.druid.pool.DruidDataSourceFactory > value = (String)properties.get("init");
+ init: "true"
+
+ customs:
+ - ds1
+ - ds2
data:
mongodb: