diff --git a/.idea/medicine.iml b/.idea/medicine.iml
new file mode 100644
index 00000000..1bef2497
--- /dev/null
+++ b/.idea/medicine.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/compiler.xml b/src/medicine/.idea/compiler.xml
index a89ee903..12b36f50 100644
--- a/src/medicine/.idea/compiler.xml
+++ b/src/medicine/.idea/compiler.xml
@@ -12,6 +12,7 @@
+
diff --git a/src/medicine/.idea/dbnavigator.xml b/src/medicine/.idea/dbnavigator.xml
index f0bf29ec..0f70c694 100644
--- a/src/medicine/.idea/dbnavigator.xml
+++ b/src/medicine/.idea/dbnavigator.xml
@@ -17,6 +17,9 @@
+
+
+
diff --git a/src/medicine/.idea/encodings.xml b/src/medicine/.idea/encodings.xml
index 6390bb1a..1419fcfe 100644
--- a/src/medicine/.idea/encodings.xml
+++ b/src/medicine/.idea/encodings.xml
@@ -2,5 +2,7 @@
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_yaml_2_15_2.xml b/src/medicine/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_yaml_2_15_2.xml
new file mode 100644
index 00000000..05deea40
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_yaml_2_15_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml b/src/medicine/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml
new file mode 100644
index 00000000..810eb863
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_code_gson_gson_2_10_1.xml b/src/medicine/.idea/libraries/Maven__com_google_code_gson_gson_2_10_1.xml
new file mode 100644
index 00000000..cf0824c7
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_code_gson_gson_2_10_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_3_4.xml b/src/medicine/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_3_4.xml
new file mode 100644
index 00000000..fdcc3a4e
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_3_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml b/src/medicine/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml
new file mode 100644
index 00000000..e462b823
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_guava_guava_29_0_jre.xml b/src/medicine/.idea/libraries/Maven__com_google_guava_guava_29_0_jre.xml
new file mode 100644
index 00000000..413df057
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_guava_guava_29_0_jre.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml b/src/medicine/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml
new file mode 100644
index 00000000..1bc1dd5e
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml b/src/medicine/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml
new file mode 100644
index 00000000..b46e2f91
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_lettuce_lettuce_core_6_2_5_RELEASE.xml b/src/medicine/.idea/libraries/Maven__io_lettuce_lettuce_core_6_2_5_RELEASE.xml
new file mode 100644
index 00000000..40b2d450
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_lettuce_lettuce_core_6_2_5_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_buffer_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_buffer_4_1_94_Final.xml
new file mode 100644
index 00000000..0eb52864
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_buffer_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_4_1_94_Final.xml
new file mode 100644
index 00000000..75f57a59
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_dns_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_dns_4_1_94_Final.xml
new file mode 100644
index 00000000..f030f38e
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_codec_dns_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_common_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_common_4_1_94_Final.xml
new file mode 100644
index 00000000..811f2d4c
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_common_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_handler_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_handler_4_1_94_Final.xml
new file mode 100644
index 00000000..37152525
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_handler_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_4_1_94_Final.xml
new file mode 100644
index 00000000..730b46ec
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_94_Final.xml
new file mode 100644
index 00000000..fb3b9df2
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_4_1_94_Final.xml
new file mode 100644
index 00000000..a90bcd65
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_94_Final.xml b/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_94_Final.xml
new file mode 100644
index 00000000..5a544980
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_94_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_projectreactor_reactor_core_3_5_8.xml b/src/medicine/.idea/libraries/Maven__io_projectreactor_reactor_core_3_5_8.xml
new file mode 100644
index 00000000..8b42a9db
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_projectreactor_reactor_core_3_5_8.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__io_reactivex_rxjava3_rxjava_3_1_6.xml b/src/medicine/.idea/libraries/Maven__io_reactivex_rxjava3_rxjava_3_1_6.xml
new file mode 100644
index 00000000..cf2e3307
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__io_reactivex_rxjava3_rxjava_3_1_6.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__javax_cache_cache_api_1_1_1.xml b/src/medicine/.idea/libraries/Maven__javax_cache_cache_api_1_1_1.xml
new file mode 100644
index 00000000..0dcbbc78
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__javax_cache_cache_api_1_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_11_1.xml b/src/medicine/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_11_1.xml
new file mode 100644
index 00000000..fe353d05
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_11_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_19.xml b/src/medicine/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_19.xml
new file mode 100644
index 00000000..0b626ce4
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_19.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_checkerframework_checker_qual_2_11_1.xml b/src/medicine/.idea/libraries/Maven__org_checkerframework_checker_qual_2_11_1.xml
new file mode 100644
index 00000000..1a9d90c9
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_checkerframework_checker_qual_2_11_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_2_0_10_Final.xml b/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_2_0_10_Final.xml
new file mode 100644
index 00000000..6308bf9c
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_2_0_10_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_river_2_0_10_Final.xml b/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_river_2_0_10_Final.xml
new file mode 100644
index 00000000..2c782f26
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_jboss_marshalling_jboss_marshalling_river_2_0_10_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_jodd_jodd_bean_5_1_6.xml b/src/medicine/.idea/libraries/Maven__org_jodd_jodd_bean_5_1_6.xml
new file mode 100644
index 00000000..50332125
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_jodd_jodd_bean_5_1_6.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_jodd_jodd_core_5_1_6.xml b/src/medicine/.idea/libraries/Maven__org_jodd_jodd_core_5_1_6.xml
new file mode 100644
index 00000000..da853ad1
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_jodd_jodd_core_5_1_6.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_json_json_20220320.xml b/src/medicine/.idea/libraries/Maven__org_json_json_20220320.xml
new file mode 100644
index 00000000..e37f7fda
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_json_json_20220320.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_4.xml b/src/medicine/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_4.xml
new file mode 100644
index 00000000..949f0210
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_redisson_redisson_3_14_1.xml b/src/medicine/.idea/libraries/Maven__org_redisson_redisson_3_14_1.xml
new file mode 100644
index 00000000..38bbc428
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_redisson_redisson_3_14_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_3_1_2.xml
new file mode 100644
index 00000000..acaa3fe1
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_1_2.xml
new file mode 100644
index 00000000..57ce2083
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_3_1_2.xml
new file mode 100644
index 00000000..c7b20a80
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_3_1_2.xml
new file mode 100644
index 00000000..aea1e789
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_redis_1_4_7_RELEASE.xml b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_redis_1_4_7_RELEASE.xml
new file mode 100644
index 00000000..735af693
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_redis_1_4_7_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_1_2.xml
new file mode 100644
index 00000000..c044eb4c
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_commons_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_3_1_2.xml
new file mode 100644
index 00000000..c6ad9fc9
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_redis_3_1_2.xml b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_redis_3_1_2.xml
new file mode 100644
index 00000000..23226fe6
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_data_spring_data_redis_3_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_spring_context_support_6_0_11.xml b/src/medicine/.idea/libraries/Maven__org_springframework_spring_context_support_6_0_11.xml
new file mode 100644
index 00000000..048f057d
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_spring_context_support_6_0_11.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__org_springframework_spring_oxm_6_0_11.xml b/src/medicine/.idea/libraries/Maven__org_springframework_spring_oxm_6_0_11.xml
new file mode 100644
index 00000000..5b17fcec
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__org_springframework_spring_oxm_6_0_11.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/libraries/Maven__redis_clients_jedis_4_3_2.xml b/src/medicine/.idea/libraries/Maven__redis_clients_jedis_4_3_2.xml
new file mode 100644
index 00000000..0512bf76
--- /dev/null
+++ b/src/medicine/.idea/libraries/Maven__redis_clients_jedis_4_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/0/5/051eaf551b928a8ccf651611c070ebb2b8155264 b/src/medicine/.idea/sonarlint/issuestore/0/5/051eaf551b928a8ccf651611c070ebb2b8155264
index d0f8ba3c..e69de29b 100644
--- a/src/medicine/.idea/sonarlint/issuestore/0/5/051eaf551b928a8ccf651611c070ebb2b8155264
+++ b/src/medicine/.idea/sonarlint/issuestore/0/5/051eaf551b928a8ccf651611c070ebb2b8155264
@@ -1,2 +0,0 @@
-
-t java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/0/b/0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1 b/src/medicine/.idea/sonarlint/issuestore/0/b/0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
index 9dca1267..e69de29b 100644
--- a/src/medicine/.idea/sonarlint/issuestore/0/b/0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
+++ b/src/medicine/.idea/sonarlint/issuestore/0/b/0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
@@ -1,4 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(81
-M
-java:S1128 "+Remove this unused import 'java.util.List'.(81
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/1/3/139a0da36daad8c438a5607ee212d1f38a505779 b/src/medicine/.idea/sonarlint/issuestore/1/3/139a0da36daad8c438a5607ee212d1f38a505779
index d215fe77..e69de29b 100644
--- a/src/medicine/.idea/sonarlint/issuestore/1/3/139a0da36daad8c438a5607ee212d1f38a505779
+++ b/src/medicine/.idea/sonarlint/issuestore/1/3/139a0da36daad8c438a5607ee212d1f38a505779
@@ -1,4 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(8Х1
-V
-java:S1128"9Remove this unused import 'org.apache.ibatis.type.Alias'.(8ͻХ1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/e/4/e46aee6c7c512a7b48980a296fca0acf004a1907 b/src/medicine/.idea/sonarlint/issuestore/2/a/2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
similarity index 100%
rename from src/medicine/.idea/sonarlint/issuestore/e/4/e46aee6c7c512a7b48980a296fca0acf004a1907
rename to src/medicine/.idea/sonarlint/issuestore/2/a/2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/6/4/6455addaf8475c1ee66ddf019aba9934cde58b33 b/src/medicine/.idea/sonarlint/issuestore/4/0/40a2343a36c9747fa26c52f19f82c0a493b5c2e0
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/6/4/6455addaf8475c1ee66ddf019aba9934cde58b33
rename to src/medicine/.idea/sonarlint/issuestore/4/0/40a2343a36c9747fa26c52f19f82c0a493b5c2e0
diff --git a/src/medicine/.idea/sonarlint/issuestore/5/a/5aa79857db1807fe40f0941af9e17d8a19d8bc97 b/src/medicine/.idea/sonarlint/issuestore/5/a/5aa79857db1807fe40f0941af9e17d8a19d8bc97
new file mode 100644
index 00000000..f9c7c6d4
--- /dev/null
+++ b/src/medicine/.idea/sonarlint/issuestore/5/a/5aa79857db1807fe40f0941af9e17d8a19d8bc97
@@ -0,0 +1,10 @@
+
+{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(8ӵ1
+Z java:S106"9Replace this use of System.out or System.err by a logger.(8ӵ1
+H
+java:S1075"&Remove this hard-coded path-delimiter.(8ӵ1
+P
+java:S1128"3Remove this unused import 'java.io.BufferedReader'.(8ӵ1
+S
+java:S1128
+"6Remove this unused import 'java.io.InputStreamReader'.(8ӵ1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/6/4/6455addaf8475c1ee66ddf019aba9934cde58b33 b/src/medicine/.idea/sonarlint/issuestore/6/4/6455addaf8475c1ee66ddf019aba9934cde58b33
deleted file mode 100644
index 11cc87e8..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/6/4/6455addaf8475c1ee66ddf019aba9934cde58b33
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(8ϥ1
-^
-java:S1128"ARemove this unused import 'org.apache.ibatis.annotations.Select'.(ߘ8ڠХ1
-g
-java:S1128"ERemove this unused import 'org.springframework.stereotype.Component'.(Ѹ8ѷХ1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/6/a/6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9 b/src/medicine/.idea/sonarlint/issuestore/6/a/6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9
deleted file mode 100644
index 20b018d9..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/6/a/6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9
+++ /dev/null
@@ -1,2 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(8פ1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/7/6/762bc359bc75ba7b3073e784c826f31f6c989305 b/src/medicine/.idea/sonarlint/issuestore/7/6/762bc359bc75ba7b3073e784c826f31f6c989305
deleted file mode 100644
index 4a81afc1..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/7/6/762bc359bc75ba7b3073e784c826f31f6c989305
+++ /dev/null
@@ -1,2 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(81
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/8/2/82d065e13dbb46b69838db763af0105eec47337f b/src/medicine/.idea/sonarlint/issuestore/8/2/82d065e13dbb46b69838db763af0105eec47337f
deleted file mode 100644
index 022143ef..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/8/2/82d065e13dbb46b69838db763af0105eec47337f
+++ /dev/null
@@ -1,17 +0,0 @@
-
-` java:S112"FDefine and throw a dedicated exception instead of using a generic one.(҂
-
-java:S1319"pThe return type of this method should be an interface such as "List" rather than the implementation "ArrayList".(
-f java:S117"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ո
-e
-java:S2095"OUse try-with-resources or close this "PythonInterpreter" in a "finally" clause.(Ո
-U
-java:S1118
-":Add a private constructor to hide the implicit public one.(
-c java:S100"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(
-N
-java:S1854"8Remove this useless assignment to local variable "Pyit".(Ո
-?
-java:S1481")Remove this unused "Pyit" local variable.(Ո
-t
-java:S2142"^Either re-interrupt this method or rethrow the "InterruptedException" that can be caught here.(䠹
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/8/a/8ac776bbbb6e77f29694ccc4476b533f9f4573da b/src/medicine/.idea/sonarlint/issuestore/8/a/8ac776bbbb6e77f29694ccc4476b533f9f4573da
deleted file mode 100644
index 2fe3898d..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/8/a/8ac776bbbb6e77f29694ccc4476b533f9f4573da
+++ /dev/null
@@ -1,16 +0,0 @@
-
-t
-java:S1104"RMake status a static final constant or non-public and provide accessors if needed.(߮81
-k
-java:S1104"NMake OK a static final constant or non-public and provide accessors if needed.(8Ҧ1
-l
-java:S1104
"PMake FAIL a static final constant or non-public and provide accessors if needed.(㑬V8Ҧ1
-E
-java:S1444"(Make this "public static OK" field final(8Ҧ1
-F
-java:S1444
"*Make this "public static FAIL" field final(㑬V8Ҧ1
-u java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(騦$81
-j
-java:S3008"MRename this field "OK" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(8Ҧ1
-k
-java:S3008
"ORename this field "FAIL" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(㑬V8Ҧ1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/8/e/8ea61bcc473345da7a8363076b3ae562bc76fedc b/src/medicine/.idea/sonarlint/issuestore/8/e/8ea61bcc473345da7a8363076b3ae562bc76fedc
index ecdc35b5..e69de29b 100644
--- a/src/medicine/.idea/sonarlint/issuestore/8/e/8ea61bcc473345da7a8363076b3ae562bc76fedc
+++ b/src/medicine/.idea/sonarlint/issuestore/8/e/8ea61bcc473345da7a8363076b3ae562bc76fedc
@@ -1,2 +0,0 @@
-
-{ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(81
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/9/3/932ae6b8f9f42f924c25e69e48dc30fddd63ec28 b/src/medicine/.idea/sonarlint/issuestore/9/3/932ae6b8f9f42f924c25e69e48dc30fddd63ec28
index 4d8c457a..e69de29b 100644
--- a/src/medicine/.idea/sonarlint/issuestore/9/3/932ae6b8f9f42f924c25e69e48dc30fddd63ec28
+++ b/src/medicine/.idea/sonarlint/issuestore/9/3/932ae6b8f9f42f924c25e69e48dc30fddd63ec28
@@ -1,4 +0,0 @@
-
-t java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(
-M
-java:S1128"+Remove this unused import 'java.util.List'.(8䂦1
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/6/a/6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9 b/src/medicine/.idea/sonarlint/issuestore/a/0/a027316d6320e979eb2d643acc8d7431b5899762
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/6/a/6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9
rename to src/medicine/.idea/sonarlint/issuestore/a/0/a027316d6320e979eb2d643acc8d7431b5899762
diff --git a/src/medicine/.idea/sonarlint/issuestore/b/e/be5bf7d32cedc052850e2cc0c99f2cf7357cac12 b/src/medicine/.idea/sonarlint/issuestore/b/e/be5bf7d32cedc052850e2cc0c99f2cf7357cac12
deleted file mode 100644
index 25a5fa64..00000000
--- a/src/medicine/.idea/sonarlint/issuestore/b/e/be5bf7d32cedc052850e2cc0c99f2cf7357cac12
+++ /dev/null
@@ -1,2 +0,0 @@
-
-t java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/issuestore/index.pb b/src/medicine/.idea/sonarlint/issuestore/index.pb
index 438f0684..b32b4177 100644
--- a/src/medicine/.idea/sonarlint/issuestore/index.pb
+++ b/src/medicine/.idea/sonarlint/issuestore/index.pb
@@ -1,47 +1,83 @@
-}
-Mspringboot/src/main/java/com/xht/springboot/Control/GetSpiderInformation.java,6\a\6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9
+B
+springboot/pom.xml,e\4\e46aee6c7c512a7b48980a296fca0acf004a1907
+{
+Kspringboot/src/test/java/com/xht/springboot/SpringbootApplicationTests.java,3\b\3b2df34c425c25ecc13e5e6f866bd6d388aaaf50
+`
+0springboot/.mvn/wrapper/maven-wrapper.properties,e\d\ed8f4c800d81f8a64f7cb76ea964f2420d820df6
+w
+Gspringboot/src/main/java/com/xht/springboot/Config/RedissionConfig.java,e\7\e7fb8e0140bfaca4a8371f31a806802c8dad2ee2
+w
+Gspringboot/src/main/java/com/xht/springboot/Utils/BloomFilterUtils.java,6\6\661af37e1535a382309f94140434b4de4d42f13f
+y
+Ispringboot/src/main/java/com/xht/springboot/Config/CrossOriginConfig.java,2\b\2b9b4bc8935d211a450568375cf2d7da4d92eab5
+s
+Cspringboot/src/main/java/com/xht/springboot/Config/RedisConfig.java,0\3\03febb48c6f14848416295ea77d17704b452f798
+m
+=springboot/src/main/java/com/xht/springboot/Utils/MyLock.java,d\6\d6d02a5bfa15e38571f6a2c3200cbaaebce3a1ae
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/DeleteFunctionForDB.java,0\b\0b251f1bfaf2cd8f80058d8dc2aa5d92389ae5dd
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/InsertFunctionForDB.java,7\d\7d70f34e659e4d46090652b3abb110013fe4a496
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/UpdateFunctionForDB.java,a\2\a208e939918d2caeb2c9b38f01b7b2b9a9c1c423
+r
+Bspringboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java,2\a\2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
w
Gspringboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java,8\e\8ea61bcc473345da7a8363076b3ae562bc76fedc
+
+Xspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/QueryFunctionForDB.java,5\b\5be6cb1ac1481aa1480b23c960b9102ff121b2c3
+
+Ospringboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java,b\e\be5bf7d32cedc052850e2cc0c99f2cf7357cac12
+|
+Lspringboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java,7\6\762bc359bc75ba7b3073e784c826f31f6c989305
z
-Jspringboot/src/main/java/com/xht/springboot/pythonspider/PythonSpider.java,8\2\82d065e13dbb46b69838db763af0105eec47337f
+Jspringboot/src/main/java/com/xht/springboot/Control/WebHomeController.java,e\d\edeacc9d294f3b307d4238fb3f381c6838218bb6
+s
+Cspringboot/src/main/java/com/xht/springboot/Entity/UserComment.java,9\3\932ae6b8f9f42f924c25e69e48dc30fddd63ec28
+q
+Aspringboot/src/main/java/com/xht/springboot/Entity/UserLogin.java,1\3\139a0da36daad8c438a5607ee212d1f38a505779
p
@springboot/src/main/java/com/xht/springboot/Entity/UserHome.java,0\b\0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
-B
-springboot/pom.xml,e\4\e46aee6c7c512a7b48980a296fca0acf004a1907
+q
+Aspringboot/src/main/java/com/xht/springboot/Entity/UserReply.java,0\5\051eaf551b928a8ccf651611c070ebb2b8155264
+p
+@springboot/src/main/java/com/xht/springboot/Entity/UserText.java,4\0\40a2343a36c9747fa26c52f19f82c0a493b5c2e0
+{
+Kspringboot/src/main/java/com/xht/springboot/Dao/InformationQueryMapper.java,0\f\0fcaad315f4a551d84b6b331d3458cf4bcdc6276
{
Kspringboot/src/main/java/com/xht/springboot/Dao/LoginAndRegisterMapper.java,6\4\6455addaf8475c1ee66ddf019aba9934cde58b33
-q
-Aspringboot/src/main/java/com/xht/springboot/Entity/UserLogin.java,1\3\139a0da36daad8c438a5607ee212d1f38a505779
+
+Sspringboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java,4\2\42d62ad23989879b1e669e84287f32b9ec3b7df5
+
+Pspringboot/src/main/java/com/xht/springboot/Service/LoginAndRegisterService.java,1\2\12a535cbad8593fe8b50774140fecabf852efa9a
r
Bspringboot/src/main/java/com/xht/springboot/Tip/RequestResult.java,8\a\8ac776bbbb6e77f29694ccc4476b533f9f4573da
-q
-Aspringboot/src/main/java/com/xht/springboot/Entity/UserReply.java,0\5\051eaf551b928a8ccf651611c070ebb2b8155264
-|
-Lspringboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java,7\6\762bc359bc75ba7b3073e784c826f31f6c989305
-m
-=train_cancer/test_information/train_model_and_load_picture.py,b\c\bc14878c6e46b0ed0df34c90b21fc25660f0e1f1
-W
-'train_cancer/train_model/train/train.py,1\9\197bfd3ed06240b421d21990e0f9a694f132bfac
-X
-(train_cancer/train_model/test/predict.py,d\a\da7c5892671567272f27695c433f21af25c378a9
-]
--train_cancer/train_model/gpu_cpu/check_cpu.py,f\6\f61ac2808b4dc885ec9d8e0a2e3a842098bfb484
-`
-0train_cancer/train_model/data_gen/data_output.py,6\9\69a341fae4073fedbb8b01a3b078c3012c70ce5f
+y
+Ispringboot/src/main/java/com/xht/springboot/Config/InterceptorConfig.java,1\2\129776adc8407ad9ef1e9ad82d91867dfe647d40
+}
+Mspringboot/src/main/java/com/xht/springboot/Interceptor/LoginInterceptor.java,0\d\0dbe3bf0a12d53f67d34580170641b79ed8ca216
+y
+Ispringboot/src/main/java/com/xht/springboot/Entity/CancerInformation.java,b\5\b5e9edd6a873e8f600b989138d8c3c025f1b2893
-Ospringboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java,b\e\be5bf7d32cedc052850e2cc0c99f2cf7357cac12
+Ospringboot/src/main/java/com/xht/springboot/Control/CancerDetectController.java,b\7\b7cd5493e06e5fd9d49343a72ed251284cff7045
+y
+Ispringboot/src/main/java/com/xht/springboot/Utils/RedisAndDbOpsUtils.java,2\e\2e88797485b4a9bb730c7a3ee47a6bf0fd5d7447
-Sspringboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java,4\2\42d62ad23989879b1e669e84287f32b9ec3b7df5
-p
-@springboot/src/main/java/com/xht/springboot/Entity/UserText.java,4\0\40a2343a36c9747fa26c52f19f82c0a493b5c2e0
-s
-Cspringboot/src/main/java/com/xht/springboot/Entity/UserComment.java,9\3\932ae6b8f9f42f924c25e69e48dc30fddd63ec28
-r
-Bspringboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java,2\a\2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
-v
-Fspringboot/src/main/java/com/xht/springboot/SpringbootApplication.java,4\0\40324953a2003c0d6c6b3ceece38a620d48a0df7
+Sspringboot/src/main/java/com/xht/springboot/Control/InformationQueryController.java,2\b\2b64f726d758544a03ab9287b407bfd77c4179b3
+?
+springboot/mvnw,0\9\09333a471984b28a4cd4526d1125b33c56b2495d
+E
+springboot/.gitignore,2\c\2c05bdd0aef78b83c2e6c20e1fe9e9d57e8a7f63
+C
+springboot/mvnw.cmd,a\0\a027316d6320e979eb2d643acc8d7431b5899762
w
Gspringboot/src/main/java/com/xht/springboot/Service/WebHomeService.java,5\f\5feb9f75e1bc678660918562fd0ce2745899be29
-z
-Jspringboot/src/main/java/com/xht/springboot/Control/WebHomeController.java,e\d\edeacc9d294f3b307d4238fb3f381c6838218bb6
\ No newline at end of file
+|
+Lspringboot/src/main/java/com/xht/springboot/Service/CancerDetectService.java,5\a\5aa79857db1807fe40f0941af9e17d8a19d8bc97
+
+Rspringboot/src/main/java/com/xht/springboot/Entity/CancerInformationProcessed.java,2\e\2e789a45bab29b515d553bcbc6fb93843b27bd70
+v
+Fspringboot/src/main/java/com/xht/springboot/SpringbootApplication.java,4\0\40324953a2003c0d6c6b3ceece38a620d48a0df7
+
+Pspringboot/src/main/java/com/xht/springboot/Service/InformationQueryService.java,3\e\3e8390fc18f553cd8e40f74084a3622827076137
\ No newline at end of file
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/7/6/762bc359bc75ba7b3073e784c826f31f6c989305 b/src/medicine/.idea/sonarlint/securityhotspotstore/2/a/2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/7/6/762bc359bc75ba7b3073e784c826f31f6c989305
rename to src/medicine/.idea/sonarlint/securityhotspotstore/2/a/2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/8/2/82d065e13dbb46b69838db763af0105eec47337f b/src/medicine/.idea/sonarlint/securityhotspotstore/4/0/40a2343a36c9747fa26c52f19f82c0a493b5c2e0
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/8/2/82d065e13dbb46b69838db763af0105eec47337f
rename to src/medicine/.idea/sonarlint/securityhotspotstore/4/0/40a2343a36c9747fa26c52f19f82c0a493b5c2e0
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/8/a/8ac776bbbb6e77f29694ccc4476b533f9f4573da b/src/medicine/.idea/sonarlint/securityhotspotstore/5/a/5aa79857db1807fe40f0941af9e17d8a19d8bc97
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/8/a/8ac776bbbb6e77f29694ccc4476b533f9f4573da
rename to src/medicine/.idea/sonarlint/securityhotspotstore/5/a/5aa79857db1807fe40f0941af9e17d8a19d8bc97
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/b/e/be5bf7d32cedc052850e2cc0c99f2cf7357cac12 b/src/medicine/.idea/sonarlint/securityhotspotstore/a/0/a027316d6320e979eb2d643acc8d7431b5899762
similarity index 100%
rename from src/medicine/.idea/sonarlint/securityhotspotstore/b/e/be5bf7d32cedc052850e2cc0c99f2cf7357cac12
rename to src/medicine/.idea/sonarlint/securityhotspotstore/a/0/a027316d6320e979eb2d643acc8d7431b5899762
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/e/4/e46aee6c7c512a7b48980a296fca0acf004a1907 b/src/medicine/.idea/sonarlint/securityhotspotstore/e/4/e46aee6c7c512a7b48980a296fca0acf004a1907
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/medicine/.idea/sonarlint/securityhotspotstore/index.pb b/src/medicine/.idea/sonarlint/securityhotspotstore/index.pb
index 2d229e2a..b32b4177 100644
--- a/src/medicine/.idea/sonarlint/securityhotspotstore/index.pb
+++ b/src/medicine/.idea/sonarlint/securityhotspotstore/index.pb
@@ -1,47 +1,83 @@
-}
-Mspringboot/src/main/java/com/xht/springboot/Control/GetSpiderInformation.java,6\a\6ae8bd6e0b13a9d9272e5cd44460d2d0a72091d9
-w
-Gspringboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java,8\e\8ea61bcc473345da7a8363076b3ae562bc76fedc
-z
-Jspringboot/src/main/java/com/xht/springboot/pythonspider/PythonSpider.java,8\2\82d065e13dbb46b69838db763af0105eec47337f
-p
-@springboot/src/main/java/com/xht/springboot/Entity/UserHome.java,0\b\0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
B
springboot/pom.xml,e\4\e46aee6c7c512a7b48980a296fca0acf004a1907
-r
-Bspringboot/src/main/java/com/xht/springboot/Tip/RequestResult.java,8\a\8ac776bbbb6e77f29694ccc4476b533f9f4573da
-q
-Aspringboot/src/main/java/com/xht/springboot/Entity/UserLogin.java,1\3\139a0da36daad8c438a5607ee212d1f38a505779
{
-Kspringboot/src/main/java/com/xht/springboot/Dao/LoginAndRegisterMapper.java,6\4\6455addaf8475c1ee66ddf019aba9934cde58b33
-q
-Aspringboot/src/main/java/com/xht/springboot/Entity/UserReply.java,0\5\051eaf551b928a8ccf651611c070ebb2b8155264
-|
-Lspringboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java,7\6\762bc359bc75ba7b3073e784c826f31f6c989305
-m
-=train_cancer/test_information/train_model_and_load_picture.py,b\c\bc14878c6e46b0ed0df34c90b21fc25660f0e1f1
-W
-'train_cancer/train_model/train/train.py,1\9\197bfd3ed06240b421d21990e0f9a694f132bfac
-X
-(train_cancer/train_model/test/predict.py,d\a\da7c5892671567272f27695c433f21af25c378a9
-]
--train_cancer/train_model/gpu_cpu/check_cpu.py,f\6\f61ac2808b4dc885ec9d8e0a2e3a842098bfb484
+Kspringboot/src/test/java/com/xht/springboot/SpringbootApplicationTests.java,3\b\3b2df34c425c25ecc13e5e6f866bd6d388aaaf50
`
-0train_cancer/train_model/data_gen/data_output.py,6\9\69a341fae4073fedbb8b01a3b078c3012c70ce5f
-v
-Fspringboot/src/main/java/com/xht/springboot/SpringbootApplication.java,4\0\40324953a2003c0d6c6b3ceece38a620d48a0df7
+0springboot/.mvn/wrapper/maven-wrapper.properties,e\d\ed8f4c800d81f8a64f7cb76ea964f2420d820df6
+w
+Gspringboot/src/main/java/com/xht/springboot/Config/RedissionConfig.java,e\7\e7fb8e0140bfaca4a8371f31a806802c8dad2ee2
+w
+Gspringboot/src/main/java/com/xht/springboot/Utils/BloomFilterUtils.java,6\6\661af37e1535a382309f94140434b4de4d42f13f
+y
+Ispringboot/src/main/java/com/xht/springboot/Config/CrossOriginConfig.java,2\b\2b9b4bc8935d211a450568375cf2d7da4d92eab5
+s
+Cspringboot/src/main/java/com/xht/springboot/Config/RedisConfig.java,0\3\03febb48c6f14848416295ea77d17704b452f798
+m
+=springboot/src/main/java/com/xht/springboot/Utils/MyLock.java,d\6\d6d02a5bfa15e38571f6a2c3200cbaaebce3a1ae
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/DeleteFunctionForDB.java,0\b\0b251f1bfaf2cd8f80058d8dc2aa5d92389ae5dd
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/InsertFunctionForDB.java,7\d\7d70f34e659e4d46090652b3abb110013fe4a496
+
+Yspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/UpdateFunctionForDB.java,a\2\a208e939918d2caeb2c9b38f01b7b2b9a9c1c423
r
Bspringboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java,2\a\2ad2a1260dac6c01c8b352bb0e2ca62f513676a9
+w
+Gspringboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java,8\e\8ea61bcc473345da7a8363076b3ae562bc76fedc
+
+Xspringboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/QueryFunctionForDB.java,5\b\5be6cb1ac1481aa1480b23c960b9102ff121b2c3
Ospringboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java,b\e\be5bf7d32cedc052850e2cc0c99f2cf7357cac12
-
-Sspringboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java,4\2\42d62ad23989879b1e669e84287f32b9ec3b7df5
+|
+Lspringboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java,7\6\762bc359bc75ba7b3073e784c826f31f6c989305
+z
+Jspringboot/src/main/java/com/xht/springboot/Control/WebHomeController.java,e\d\edeacc9d294f3b307d4238fb3f381c6838218bb6
s
Cspringboot/src/main/java/com/xht/springboot/Entity/UserComment.java,9\3\932ae6b8f9f42f924c25e69e48dc30fddd63ec28
+q
+Aspringboot/src/main/java/com/xht/springboot/Entity/UserLogin.java,1\3\139a0da36daad8c438a5607ee212d1f38a505779
+p
+@springboot/src/main/java/com/xht/springboot/Entity/UserHome.java,0\b\0bf6f777ae20a7657065bc4a2b2a9f1f3b4876b1
+q
+Aspringboot/src/main/java/com/xht/springboot/Entity/UserReply.java,0\5\051eaf551b928a8ccf651611c070ebb2b8155264
p
@springboot/src/main/java/com/xht/springboot/Entity/UserText.java,4\0\40a2343a36c9747fa26c52f19f82c0a493b5c2e0
+{
+Kspringboot/src/main/java/com/xht/springboot/Dao/InformationQueryMapper.java,0\f\0fcaad315f4a551d84b6b331d3458cf4bcdc6276
+{
+Kspringboot/src/main/java/com/xht/springboot/Dao/LoginAndRegisterMapper.java,6\4\6455addaf8475c1ee66ddf019aba9934cde58b33
+
+Sspringboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java,4\2\42d62ad23989879b1e669e84287f32b9ec3b7df5
+
+Pspringboot/src/main/java/com/xht/springboot/Service/LoginAndRegisterService.java,1\2\12a535cbad8593fe8b50774140fecabf852efa9a
+r
+Bspringboot/src/main/java/com/xht/springboot/Tip/RequestResult.java,8\a\8ac776bbbb6e77f29694ccc4476b533f9f4573da
+y
+Ispringboot/src/main/java/com/xht/springboot/Config/InterceptorConfig.java,1\2\129776adc8407ad9ef1e9ad82d91867dfe647d40
+}
+Mspringboot/src/main/java/com/xht/springboot/Interceptor/LoginInterceptor.java,0\d\0dbe3bf0a12d53f67d34580170641b79ed8ca216
+y
+Ispringboot/src/main/java/com/xht/springboot/Entity/CancerInformation.java,b\5\b5e9edd6a873e8f600b989138d8c3c025f1b2893
+
+Ospringboot/src/main/java/com/xht/springboot/Control/CancerDetectController.java,b\7\b7cd5493e06e5fd9d49343a72ed251284cff7045
+y
+Ispringboot/src/main/java/com/xht/springboot/Utils/RedisAndDbOpsUtils.java,2\e\2e88797485b4a9bb730c7a3ee47a6bf0fd5d7447
+
+Sspringboot/src/main/java/com/xht/springboot/Control/InformationQueryController.java,2\b\2b64f726d758544a03ab9287b407bfd77c4179b3
+?
+springboot/mvnw,0\9\09333a471984b28a4cd4526d1125b33c56b2495d
+E
+springboot/.gitignore,2\c\2c05bdd0aef78b83c2e6c20e1fe9e9d57e8a7f63
+C
+springboot/mvnw.cmd,a\0\a027316d6320e979eb2d643acc8d7431b5899762
w
Gspringboot/src/main/java/com/xht/springboot/Service/WebHomeService.java,5\f\5feb9f75e1bc678660918562fd0ce2745899be29
-z
-Jspringboot/src/main/java/com/xht/springboot/Control/WebHomeController.java,e\d\edeacc9d294f3b307d4238fb3f381c6838218bb6
\ No newline at end of file
+|
+Lspringboot/src/main/java/com/xht/springboot/Service/CancerDetectService.java,5\a\5aa79857db1807fe40f0941af9e17d8a19d8bc97
+
+Rspringboot/src/main/java/com/xht/springboot/Entity/CancerInformationProcessed.java,2\e\2e789a45bab29b515d553bcbc6fb93843b27bd70
+v
+Fspringboot/src/main/java/com/xht/springboot/SpringbootApplication.java,4\0\40324953a2003c0d6c6b3ceece38a620d48a0df7
+
+Pspringboot/src/main/java/com/xht/springboot/Service/InformationQueryService.java,3\e\3e8390fc18f553cd8e40f74084a3622827076137
\ No newline at end of file
diff --git a/src/medicine/springboot/pom.xml b/src/medicine/springboot/pom.xml
index 10cddd05..4bc2f2eb 100644
--- a/src/medicine/springboot/pom.xml
+++ b/src/medicine/springboot/pom.xml
@@ -35,6 +35,49 @@
8.0.31
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+ org.springframework.boot
+ spring-boot-starter-redis
+ 1.4.7.RELEASE
+
+
+
+ org.apache.commons
+ commons-pool2
+
+
+
+ org.springframework.boot
+ spring-boot-starter-cache
+
+
+
+ com.google.guava
+ guava
+ 29.0-jre
+
+
+
+ org.redisson
+ redisson
+ 3.14.1
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+
+
org.projectlombok
lombok
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Config/CrossOriginConfig.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/CrossOriginConfig.java
new file mode 100644
index 00000000..a0784ed3
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/CrossOriginConfig.java
@@ -0,0 +1,16 @@
+package com.xht.springboot.Config;
+
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CrossOriginConfig implements WebMvcConfigurer {
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**")
+ .allowedOrigins("*")
+ .allowedMethods("*");
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Config/InterceptorConfig.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/InterceptorConfig.java
new file mode 100644
index 00000000..dc3cb406
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/InterceptorConfig.java
@@ -0,0 +1,24 @@
+package com.xht.springboot.Config;
+
+
+import com.xht.springboot.Interceptor.LoginInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+ @Autowired
+ private LoginInterceptor loginInterceptor;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry
+ .addInterceptor(loginInterceptor)
+ .addPathPatterns("/**")
+ .excludePathPatterns("/user/login");
+
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedisConfig.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedisConfig.java
new file mode 100644
index 00000000..86f8bc7d
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedisConfig.java
@@ -0,0 +1,40 @@
+package com.xht.springboot.Config;
+
+
+import org.springframework.boot.autoconfigure.cache.CacheProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.*;
+
+import java.util.Collection;
+
+@Configuration
+public class RedisConfig {
+
+ @Bean
+ public RedisCacheConfiguration redisCacheConfiguration(){
+ RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
+ config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
+ config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
+
+ return config;
+ }
+
+ @Bean
+ public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){
+ RedisTemplate redisTemplate = new RedisTemplate();
+ redisTemplate.setConnectionFactory(lettuceConnectionFactory);
+
+ redisTemplate.setKeySerializer(RedisSerializer.string());
+ redisTemplate.setValueSerializer(RedisSerializer.json());
+ redisTemplate.setHashKeySerializer(RedisSerializer.string());
+ redisTemplate.setHashValueSerializer(RedisSerializer.json());
+
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedissionConfig.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedissionConfig.java
new file mode 100644
index 00000000..4609151a
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Config/RedissionConfig.java
@@ -0,0 +1,31 @@
+package com.xht.springboot.Config;
+
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.SingleServerConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RedissionConfig {
+ /*@Value("#{spring.data.redis.host}")
+ String address;
+ @Value("#{spring.data.redis.port}")
+ String port;
+ @Value("#{spring.data.redis.password}")
+ String pwd;*/
+ @Bean
+ public RedissonClient redissonClient(){
+ Config config = new Config();
+
+ SingleServerConfig singleServerConfig = config.useSingleServer();
+ singleServerConfig.setAddress("redis://192.168.225.128:6390")
+ .setPassword("molong")
+ .setDatabase(0);
+
+ RedissonClient redissonClient = Redisson.create(config);
+ return redissonClient;
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/CancerDetectController.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/CancerDetectController.java
new file mode 100644
index 00000000..8fbcbcb6
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/CancerDetectController.java
@@ -0,0 +1,44 @@
+package com.xht.springboot.Control;
+
+import com.xht.springboot.Service.CancerDetectService;
+import com.xht.springboot.Tip.RequestResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+
+@Controller
+@RequestMapping("/picture")
+public class CancerDetectController {
+ @Autowired
+ CancerDetectService cancerDetectService;
+
+ @PostMapping("/upload")
+ @ResponseBody
+ public RequestResult upload(MultipartFile cancerPicture) throws IOException {
+ RequestResult requestResult = new RequestResult();
+ if(cancerPicture.isEmpty()){
+ requestResult.status = RequestResult.FAIL;
+ }else{
+ if(cancerDetectService.upload(cancerPicture))
+ {
+ requestResult.status = RequestResult.OK;
+ }else{
+ requestResult.status = RequestResult.FAIL;
+ }
+ }
+ return requestResult;
+ }
+
+ @RequestMapping("/")
+ public String s1(){
+ return "test";
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/GetSpiderInformation.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/GetSpiderInformation.java
deleted file mode 100644
index 6d0c6338..00000000
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/GetSpiderInformation.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.xht.springboot.Control;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-public class GetSpiderInformation
-{
- @RequestMapping("/index")
- public String pagespider()
- {
- return "index";
- }
-}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/InformationQueryController.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/InformationQueryController.java
new file mode 100644
index 00000000..2fc12b1b
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/InformationQueryController.java
@@ -0,0 +1,28 @@
+package com.xht.springboot.Control;
+
+
+import com.xht.springboot.Entity.CancerInformation;
+import com.xht.springboot.Entity.CancerInformationProcessed;
+import com.xht.springboot.Service.InformationQueryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/information")
+public class InformationQueryController {
+ @Autowired
+ InformationQueryService informationQueryService;
+
+ @RequestMapping("/cancer")
+ @ResponseBody
+ public List getCancerInformation(String token){
+ return informationQueryService.queryCancerInformation(token);
+ }
+
+
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java
index 9e455965..e601603d 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/LoginAndRegisterController.java
@@ -3,6 +3,7 @@ package com.xht.springboot.Control;
import com.xht.springboot.Dao.LoginAndRegisterMapper;
import com.xht.springboot.Entity.UserLogin;
+import com.xht.springboot.Service.LoginAndRegisterService;
import com.xht.springboot.Tip.RequestResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -17,39 +18,30 @@ import java.util.List;
@Controller
public class LoginAndRegisterController {
@Autowired
- LoginAndRegisterMapper loginAndRegisterMapper;
-
- @Autowired
- RequestResult requestResult;
+ LoginAndRegisterService loginAndRegisterService;
@RequestMapping(value = "/findisrepeat",method = RequestMethod.POST)
@ResponseBody
- public List findIsRepeat(@RequestBody UserLogin userLogin){
- return loginAndRegisterMapper.findIsRepeat(userLogin);
+ public RequestResult findIsRepeat(@RequestBody UserLogin userLogin){
+ return loginAndRegisterService.findIsRepeat(userLogin);
}
@RequestMapping(value = "/register",method = RequestMethod.POST)
@ResponseBody
public RequestResult register(@RequestBody UserLogin userLogin){
- if(loginAndRegisterMapper.register(userLogin) >= 1){
- requestResult.status = RequestResult.OK;
- return requestResult;
- }else {
- requestResult.status = RequestResult.FAIL;
- return requestResult;
- }
+ return loginAndRegisterService.register(userLogin);
}
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
- public UserLogin login(@RequestBody UserLogin userLogin){
- return loginAndRegisterMapper.find(userLogin);
+ public RequestResult login(@RequestBody UserLogin userLogin){
+ return loginAndRegisterService.login(userLogin);
}
@RequestMapping(value = "/forgetpassword",method = RequestMethod.POST)
@ResponseBody
public UserLogin getPassword(@RequestBody UserLogin userLogin){
- return loginAndRegisterMapper.find(userLogin);
+ return loginAndRegisterService.getPwd(userLogin);
}
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java
index 98317a5d..ce109ec7 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/PersonalHomeController.java
@@ -7,12 +7,15 @@ import com.xht.springboot.Service.PersonalHomeService;
import com.xht.springboot.Tip.RequestResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
+@RequestMapping("user")
public class PersonalHomeController {
@Autowired
PersonalHomeService personalHomeService;
@@ -20,12 +23,34 @@ public class PersonalHomeController {
@Autowired
RequestResult requestResult;
- @RequestMapping("/getpersonahomedata")
+ @RequestMapping("/getuserhomedata")
@ResponseBody
- public UserHome getPersonalHomeData(int uid){
+ public UserHome getUserHomeData(int uid){
return personalHomeService.getUserHomeData(uid);
}
+ @PostMapping("/postuserhomedata")
+ @ResponseBody
+ public RequestResult postUserHomeData(@RequestBody UserHome userHome){
+ RequestResult result = new RequestResult();
+ if(personalHomeService.postUserHomeData(userHome))
+ result.status = RequestResult.OK;
+ else
+ result.status = RequestResult.FAIL;
+ return result;
+ }
+
+ @PostMapping("/updateuserhomedata")
+ @ResponseBody
+ public RequestResult updateUserHomeData(@RequestBody UserHome userHome){
+ RequestResult result = new RequestResult();
+ if(personalHomeService.updateUserHomeData(userHome))
+ result.status = RequestResult.OK;
+ else
+ result.status = RequestResult.FAIL;
+ return result;
+ }
+
@RequestMapping("/getusertexts")
@ResponseBody
public List getUserTexts(int uid){
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/WebHomeController.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/WebHomeController.java
index baa93604..277c038a 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Control/WebHomeController.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Control/WebHomeController.java
@@ -6,6 +6,8 @@ import com.xht.springboot.Entity.UserText;
import com.xht.springboot.Service.WebHomeService;
import com.xht.springboot.Tip.RequestResult;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@@ -38,11 +40,10 @@ public class WebHomeController {
public RequestResult postText(@RequestBody UserText userText){
if(webHomeService.postUserText(userText)){
requestResult.status = RequestResult.OK;
- return requestResult;
}else {
requestResult.status = RequestResult.FAIL;
- return requestResult;
}
+ return requestResult;
}
@PostMapping("/deltext")
@@ -149,7 +150,7 @@ public class WebHomeController {
@PostMapping("/findreply")
@ResponseBody
- public List selectReply(@RequestBody UserReply userReply){
- return webHomeService.selectUserReply(userReply);
+ public UserReply selectReply(@RequestParam("id") int replyId){
+ return webHomeService.selectUserReply(replyId);
}
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/InformationQueryMapper.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/InformationQueryMapper.java
new file mode 100644
index 00000000..b789ea7d
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/InformationQueryMapper.java
@@ -0,0 +1,12 @@
+package com.xht.springboot.Dao;
+
+
+import com.xht.springboot.Entity.CancerInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface InformationQueryMapper {
+ public List queryCancerInformation(String token);
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java
index 4060a8c1..b750a403 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/PersonalHomeMapper.java
@@ -12,5 +12,9 @@ public interface PersonalHomeMapper {
//根据uid查询用户详情
public UserHome findById(int id);
+ public int postUserHomeData(UserHome userHome);
+
+ public int updateUserHomeData(UserHome userHome);
+
public List findTexts(int id);
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java
index 1dc2afa5..5e29f46b 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Dao/WebHomeMapper.java
@@ -54,7 +54,7 @@ public interface WebHomeMapper {
public int updateUserReply(UserReply userReply);
- public List selectUserReply(UserReply userReply);
+ public UserReply selectUserReply(int id);
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformation.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformation.java
new file mode 100644
index 00000000..019ef6ba
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformation.java
@@ -0,0 +1,19 @@
+package com.xht.springboot.Entity;
+
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.stereotype.Component;
+
+@Component
+@Data
+@ToString
+public class CancerInformation {
+ private int id;
+ private String name;
+ private String impact;
+ private String summary;
+ private String symptom;
+ private String factor;
+ private String judge;
+ private String heal;
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformationProcessed.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformationProcessed.java
new file mode 100644
index 00000000..75c150da
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/CancerInformationProcessed.java
@@ -0,0 +1,20 @@
+package com.xht.springboot.Entity;
+
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.stereotype.Component;
+
+@Component
+@Data
+@ToString
+public class CancerInformationProcessed {
+ private int id;
+ private String name;
+ private String[] impact;
+ private String[] summary;
+ private String[] symptom;
+ private String[] factor;
+ private String[] judge;
+ private String[] heal;
+ private String totalStr;
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserComment.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserComment.java
index 5f77c796..e4d5652a 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserComment.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserComment.java
@@ -5,11 +5,12 @@ import lombok.Data;
import lombok.ToString;
import org.springframework.stereotype.Component;
+import java.io.Serializable;
import java.util.List;
@Data
@ToString
@Component
-public class UserComment {
+public class UserComment implements Serializable {
private int commentid;
private int textid;
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserHome.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserHome.java
index 7ba32cdd..ce66b17f 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserHome.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserHome.java
@@ -5,13 +5,14 @@ import lombok.Data;
import lombok.ToString;
import org.springframework.stereotype.Component;
+import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@ToString
@Component
-public class UserHome {
+public class UserHome implements Serializable {
private int uid;
//用户累计使用网站时间
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserLogin.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserLogin.java
index d79609e2..b392bf5a 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserLogin.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserLogin.java
@@ -6,10 +6,12 @@ import lombok.ToString;
import org.apache.ibatis.type.Alias;
import org.springframework.stereotype.Component;
+import java.io.Serializable;
+
@Component
@Data
@ToString
-public class UserLogin {
+public class UserLogin implements Serializable {
private int uid;
private String uname;
private String upassword;
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserReply.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserReply.java
index c4747249..394854e1 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserReply.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserReply.java
@@ -5,10 +5,12 @@ import lombok.Data;
import lombok.ToString;
import org.springframework.stereotype.Component;
+import java.io.Serializable;
+
@Component
@Data
@ToString
-public class UserReply {
+public class UserReply implements Serializable {
private int replyid;
private int commentid;
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserText.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserText.java
index 3e839cd0..42ebaba3 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserText.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Entity/UserText.java
@@ -5,13 +5,14 @@ import lombok.Data;
import lombok.ToString;
import org.springframework.stereotype.Component;
+import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@ToString
@Component
-public class UserText {
+public class UserText implements Serializable {
private int textid;
private int uid;
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Interceptor/LoginInterceptor.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Interceptor/LoginInterceptor.java
new file mode 100644
index 00000000..319ac2c5
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Interceptor/LoginInterceptor.java
@@ -0,0 +1,37 @@
+package com.xht.springboot.Interceptor;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+@Component
+public class LoginInterceptor implements HandlerInterceptor {
+ @Autowired
+ RedisTemplate redisTemplate;
+
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ System.out.println("请求方式:"+request.getMethod());
+ System.out.println("URL:"+request.getRequestURI());
+
+ if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
+ System.out.println("放行");
+ return true;
+ }
+
+ System.out.println(request.getRequestURI());
+ String token = request.getHeader("token");
+ System.out.println(token);
+ String result = (String) redisTemplate.opsForValue().get(token);
+ System.out.println("redis token: "+result);
+ if(result==null)
+ return false;
+ else
+ return true;
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/CancerDetectService.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/CancerDetectService.java
new file mode 100644
index 00000000..4e2497e6
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/CancerDetectService.java
@@ -0,0 +1,33 @@
+package com.xht.springboot.Service;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+
+@Service
+public class CancerDetectService {
+ @Value("${upload.dir}")
+ String dir;
+
+ public boolean upload(MultipartFile cancerPicture) throws IOException {
+ File fileDir = new File("springboot/src/main/resources/"+dir);
+ if(!fileDir.exists()){
+ fileDir.mkdirs();
+ }
+
+ String originalFilename = cancerPicture.getOriginalFilename();
+ if(cancerPicture.isEmpty())
+ return false;
+ else{
+ System.out.println(fileDir.getAbsolutePath());
+ cancerPicture.transferTo(new File(fileDir.getAbsolutePath() + "/" + originalFilename));
+ return true;
+ }
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/InformationQueryService.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/InformationQueryService.java
new file mode 100644
index 00000000..2d514256
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/InformationQueryService.java
@@ -0,0 +1,69 @@
+package com.xht.springboot.Service;
+
+
+import com.xht.springboot.Dao.InformationQueryMapper;
+import com.xht.springboot.Entity.CancerInformation;
+import com.xht.springboot.Entity.CancerInformationProcessed;
+import com.xht.springboot.Utils.FuncInterFaces.QueryFunctionForDB;
+import com.xht.springboot.Utils.RedisAndDbOpsUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class InformationQueryService {
+ @Autowired
+ InformationQueryMapper informationQueryMapper;
+ @Autowired
+ RedisAndDbOpsUtils redisAndDbOpsUtils;
+ String cancerInformationCacheName = "cancerInformationByToken::";
+ String cancerInformationLockName = "cancerInformationByTokenLock";
+
+
+ public List queryCancerInformation(String token){
+ QueryFunctionForDB> queryFunctionForDB = new QueryFunctionForDB>() {
+ @Override
+ public List queryForDB(String token) {
+ List results = informationQueryMapper.queryCancerInformation(token);
+ if(results.size()==0)
+ return null;
+ else
+ return results;
+ }
+ };
+
+ List results = redisAndDbOpsUtils.queryNoFilter(cancerInformationCacheName, token, cancerInformationLockName, queryFunctionForDB, token);
+ List res = new ArrayList<>();
+ StringBuilder totalStr = new StringBuilder();
+
+ for(int i=0;i result = loginAndRegisterMapper.findIsRepeat(userLogin);
+ RequestResult requestResult = new RequestResult();
+
+ if(result.size()==0){
+ requestResult.status = RequestResult.OK;
+ requestResult.message = RequestResult.USER_NOT_REPEAT;
+ }else{
+ requestResult.status = RequestResult.FAIL;
+ requestResult.message = RequestResult.USER_REPEAT;
+ }
+
+ return requestResult;
+ }
+
+ public RequestResult register(UserLogin userLogin){
+ if(loginAndRegisterMapper.register(userLogin) >= 1){
+ requestResult.status = RequestResult.OK;
+ requestResult.message = RequestResult.USER_REGISTER_SUCCESS;
+ }else {
+ requestResult.status = RequestResult.FAIL;
+ requestResult.message = RequestResult.USER_REGISTER_FAILED;
+ }
+
+ return requestResult;
+ }
+
+ public RequestResult login(UserLogin userLogin){
+ UserLogin result = loginAndRegisterMapper.find(userLogin);
+ RequestResult requestResult = new RequestResult();
+
+ if(result==null){
+ requestResult.status = RequestResult.FAIL;
+ requestResult.message = RequestResult.USER_LOGIN_FAILED;
+ }
+ else{
+ String token = UUID.randomUUID().toString();//登录成功返回token
+
+ redisTemplate.opsForValue().set(token,"user_token",30, TimeUnit.MINUTES);//存入用户token
+
+ requestResult.status = RequestResult.OK;
+ requestResult.message = RequestResult.USER_LOGIN_SUCCESS;
+ requestResult.data = token;
+ }
+
+ return requestResult;
+ }
+
+ public UserLogin getPwd(UserLogin userLogin){
+ return loginAndRegisterMapper.find(userLogin);
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java
index 77204a64..f5e35673 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/PersonalHomeService.java
@@ -4,22 +4,95 @@ package com.xht.springboot.Service;
import com.xht.springboot.Dao.PersonalHomeMapper;
import com.xht.springboot.Entity.UserHome;
import com.xht.springboot.Entity.UserText;
+import com.xht.springboot.Utils.BloomFilterUtils;
+import com.xht.springboot.Utils.FuncInterFaces.InsertFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.QueryFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.UpdateFunctionForDB;
+import com.xht.springboot.Utils.RedisAndDbOpsUtils;
+import org.redisson.RedissonMultiLock;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.concurrent.TimeUnit;
@Service
public class PersonalHomeService {
@Autowired
PersonalHomeMapper personalHomeMapper;
+ @Autowired
+ RedisTemplate redisTemplate;
+ @Autowired
+ BloomFilterUtils bloomFilterUtils;
+ @Autowired
+ RedissonClient redissonClient;
+ @Autowired
+ RedisAndDbOpsUtils redisAndDbOpsUtils;
+
+
+ String userHomeDataCacheName = "userData::";
+ String userTxtByUidCacheName = "userTxtByUid::";
+ String userHomeDataLockHome = "userHomeDataLock";
+ String userTxtByUidLockHome = "userTxtByUidLock";
+
//获得用户主页数据
public UserHome getUserHomeData(int uid){
- return personalHomeMapper.findById(uid);
+ QueryFunctionForDB queryFunctionForDB = new QueryFunctionForDB() {
+ @Override
+ public UserHome queryForDB(String token) {
+ UserHome userHome = personalHomeMapper.findById(Integer.parseInt(token));
+ return userHome;
+ }
+ };
+
+ return redisAndDbOpsUtils.queryHaveFilter(userHomeDataCacheName,uid+"",userHomeDataLockHome,queryFunctionForDB,uid+"");
}
+ public boolean postUserHomeData(UserHome userHome){//先更新数据库后删除缓存
+ InsertFunctionForDB insertFunctionForDB = new InsertFunctionForDB() {
+ @Override
+ public boolean insertForDB(UserHome data) {
+ int rows = personalHomeMapper.postUserHomeData(data);
+ System.out.println("insert userHomeData "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.insertHaveFilter(userHomeDataCacheName,userHome.getUid()+"",userHome,insertFunctionForDB);
+ }
+
+ public boolean updateUserHomeData(UserHome userHome){
+ UpdateFunctionForDB updateFunctionForDB = new UpdateFunctionForDB() {
+ @Override
+ public boolean updateForDB(UserHome data) {
+ int rows = personalHomeMapper.updateUserHomeData(data);
+ System.out.println("update userHomeData "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseUpdate(userHomeDataCacheName,userHome.getUid()+"",userHomeDataLockHome,userHome,updateFunctionForDB);
+ }
+
+
+
public List getUserTexts(int uid){
- return personalHomeMapper.findTexts(uid);
+ QueryFunctionForDB> queryFunctionForDB = new QueryFunctionForDB>() {
+ @Override
+ public List queryForDB(String token) {
+ List userTexts = personalHomeMapper.findTexts(Integer.parseInt(token));
+ if(userTexts.size()==0)
+ return null;
+ else
+ return userTexts;
+ }
+ };
+
+ return redisAndDbOpsUtils.queryNoFilter(userTxtByUidCacheName,uid+"",userTxtByUidLockHome,queryFunctionForDB,uid+"");
}
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/WebHomeService.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/WebHomeService.java
index ab9f04e7..2e8a43a6 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Service/WebHomeService.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Service/WebHomeService.java
@@ -5,7 +5,18 @@ import com.xht.springboot.Dao.WebHomeMapper;
import com.xht.springboot.Entity.UserComment;
import com.xht.springboot.Entity.UserReply;
import com.xht.springboot.Entity.UserText;
+import com.xht.springboot.Utils.BloomFilterUtils;
+import com.xht.springboot.Utils.FuncInterFaces.DeleteFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.InsertFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.QueryFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.UpdateFunctionForDB;
+import com.xht.springboot.Utils.RedisAndDbOpsUtils;
+import org.redisson.RedissonMultiLock;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -15,91 +26,165 @@ import java.util.List;
public class WebHomeService {
@Autowired
WebHomeMapper webHomeMapper;
+ @Autowired
+ RedisAndDbOpsUtils redisAndDbOpsUtils;
+ @Autowired
+ RedissonClient redissonClient;
+ @Autowired
+ RedisTemplate redisTemplate;
+ @Autowired
+ BloomFilterUtils bloomFilterUtils;
+
+ String webHomeDataCacheName = "userTxt&Cmt::";
+ String webHomeDataKey = "all";
+ String userRepliesOfCmtCacheName = "userRepliesOfCmt::";
+ String userTxtCacheName = "userTxt::";
+ String userCmtCacheName = "userCmt::";
+ String userReplyCacheName = "userReply::";
+ String userFindTxtCacheName = "userFindTxt::";
+ String webHomeDataLockName = "webHomeDataLock";
+ String userRepliesOfCmtLockName = "userRepliesOfCmtLock";
+ String userTxtLockName = "userTxtLock";
+ String userFindTxtLockName = "userFindTxtLock";
+ String userCmtLockName = "userCmtLock";
+ String userReplyLockName = "userReplyLock";
//获得所有文章除了评论的回复
public List getWebHomeData(){
- return webHomeMapper.findAllTextAndComments();
+ QueryFunctionForDB> queryFunctionForDB = new QueryFunctionForDB>() {
+ @Override
+ public List queryForDB(String token) {
+ List userTexts = webHomeMapper.findAllTextAndComments();//没有返回空集合
+ if(userTexts.size()==0)
+ return null;
+ else
+ return userTexts;
+ }
+ };
+
+ return redisAndDbOpsUtils.queryNoFilter(webHomeDataCacheName,webHomeDataKey,webHomeDataLockName,queryFunctionForDB,"");
}
+
public List getUserReplies(int commentid){
- return webHomeMapper.findRepliesByCommentId(commentid);
+ QueryFunctionForDB> queryFunctionForDB = new QueryFunctionForDB>() {
+ @Override
+ public List queryForDB(String token) {
+ List userReplies = webHomeMapper.findRepliesByCommentId(Integer.parseInt(token));
+ if(userReplies.size()==0)
+ return null;
+ else
+ return userReplies;
+ }
+ };
+
+ return redisAndDbOpsUtils.queryNoFilter(userRepliesOfCmtCacheName,commentid+"",userRepliesOfCmtLockName,queryFunctionForDB,commentid+"");
}
+
public boolean postUserText(UserText userText){
- int rows=0;
- rows = webHomeMapper.insertUserText(userText);
- if(rows >= 1){
- System.out.println("insert text OK "+rows);
- return true;
- }else{
- return false;
- }
+ InsertFunctionForDB insertFunctionForDB = new InsertFunctionForDB() {
+ @Override
+ public boolean insertForDB(UserText data) {
+ int rows = webHomeMapper.insertUserText(data);
+ System.out.println("insert userText "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.insertHaveFilter(userTxtCacheName,userText.getTextid()+"" ,userText,insertFunctionForDB);
}
+
public boolean deleteUserText(UserText userText){
- int rows=0;
- rows = webHomeMapper.deleteUserText(userText);
- if(rows >= 1){
- System.out.println("delete text OK "+rows);
- return true;
- }else{
- return false;
- }
+ DeleteFunctionForDB deleteFunctionForDB = new DeleteFunctionForDB() {
+ @Override
+ public boolean deleteForDB(UserText data) {
+ int rows = webHomeMapper.deleteUserText(data);
+ System.out.println("delete userText "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseDelete(userTxtCacheName,userText.getTextid()+"",userTxtLockName,userText,deleteFunctionForDB);
}
+
public boolean updateUserText(UserText userText){
- int rows=0;
- rows = webHomeMapper.updateUserText(userText);
- if(rows >= 1){
- System.out.println("update text OK "+rows);
- return true;
- }else{
- return false;
- }
+ UpdateFunctionForDB userTextUpdateFunctionForDB = new UpdateFunctionForDB() {
+ @Override
+ public boolean updateForDB(UserText data) {
+ int rows = webHomeMapper.updateUserText(data);
+ System.out.println("update userText "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseUpdate(userTxtCacheName,userText.getTextid()+"",userTxtLockName,userText,userTextUpdateFunctionForDB);
}
+
@Transactional
public List findUserText(String token){
- List results = null;
- results = webHomeMapper.findOfTextContains(token);//查询文本中是否包含
- results.addAll(webHomeMapper.findOfTitleContains(token));//查询标题中是否包含
- return results;
+ QueryFunctionForDB> queryFunctionForDB = new QueryFunctionForDB>() {
+ @Override
+ public List queryForDB(String token) {
+ List userTexts = webHomeMapper.findOfTextContains(token);//查询文本中是否包含
+ userTexts.addAll(webHomeMapper.findOfTitleContains(token));//查询标题中是否包含
+ if(userTexts.size()==0)
+ return userTexts;
+ else
+ return userTexts;
+ }
+ };
+
+ return redisAndDbOpsUtils.queryNoFilter(userFindTxtCacheName,token,userFindTxtLockName,queryFunctionForDB,token);
}
+
+
+
+
public boolean postUserComment(UserComment userComment){
- int rows=0;
- rows = webHomeMapper.insertUserComment(userComment);
- if(rows >= 1){
- System.out.println("insert comment OK "+rows);
- return true;
- }else{
- return false;
- }
+ InsertFunctionForDB insertFunctionForDB = new InsertFunctionForDB() {
+ @Override
+ public boolean insertForDB(UserComment data) {
+ int rows = webHomeMapper.insertUserComment(data);
+ System.out.println("insert userComment "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.insertHaveFilter(userCmtCacheName,userComment.getCommentid()+"",userComment,insertFunctionForDB);
}
public boolean deleteUserComment(UserComment userComment){
- int rows=0;
- rows = webHomeMapper.deleteUserComment(userComment);
- if(rows >= 1){
- System.out.println("delete comment OK "+rows);
- return true;
- }else{
- return false;
- }
+ DeleteFunctionForDB deleteFunctionForDB = new DeleteFunctionForDB() {
+ @Override
+ public boolean deleteForDB(UserComment data) {
+ int rows = webHomeMapper.deleteUserComment(data);
+ System.out.println("delete userComment "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseDelete(userCmtCacheName,userComment.getCommentid()+"",userCmtLockName,userComment,deleteFunctionForDB);
}
public boolean updateUserComment(UserComment userComment){
- int rows=0;
- rows = webHomeMapper.updateUserComment(userComment);
- if(rows >= 1){
- System.out.println("update comment OK "+rows);
- return true;
- }else{
- return false;
- }
+ UpdateFunctionForDB updateFunctionForDB = new UpdateFunctionForDB() {
+ @Override
+ public boolean updateForDB(UserComment data) {
+ int rows = webHomeMapper.updateUserComment(data);
+ System.out.println("update userComment "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseUpdate(userCmtCacheName,userComment.getCommentid()+"",userCmtLockName,userComment,updateFunctionForDB);
}
@@ -107,40 +192,50 @@ public class WebHomeService {
+
+
public boolean postUserReply(UserReply userReply){
- int rows=0;
- rows = webHomeMapper.insertUserReply(userReply);
- if(rows >= 1){
- System.out.println("insert reply OK "+rows);
- return true;
- }else{
- return false;
- }
+ InsertFunctionForDB insertFunctionForDB = new InsertFunctionForDB() {
+ @Override
+ public boolean insertForDB(UserReply data) {
+ int rows = webHomeMapper.insertUserReply(data);
+ System.out.println("insert userReply "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.insertHaveFilter(userReplyCacheName,userReply.getReplyid()+"",userReply,insertFunctionForDB);
}
public boolean deleteUserReply(UserReply userReply){
- int rows=0;
- rows = webHomeMapper.deleteUserReply(userReply);
- if(rows >= 1){
- System.out.println("delete reply OK "+rows);
- return true;
- }else{
- return false;
- }
+ DeleteFunctionForDB userReplyDeleteFunctionForDB = new DeleteFunctionForDB() {
+ @Override
+ public boolean deleteForDB(UserReply data) {
+ int rows = webHomeMapper.deleteUserReply(data);
+ System.out.println("delete userReply "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseDelete(userReplyCacheName,userReply.getReplyid()+"",userReplyLockName,userReply,userReplyDeleteFunctionForDB);
}
public boolean updateUserReply(UserReply userReply){
- int rows=0;
- rows = webHomeMapper.updateUserReply(userReply);
- if(rows >= 1){
- System.out.println("update reply OK "+rows);
- return true;
- }else{
- return false;
- }
+ UpdateFunctionForDB updateFunctionForDB = new UpdateFunctionForDB() {
+ @Override
+ public boolean updateForDB(UserReply data) {
+ int rows = webHomeMapper.updateUserReply(data);
+ System.out.println("update userReply "+rows);
+ return rows >= 1;
+ }
+ };
+
+ return redisAndDbOpsUtils.baseUpdate(userReplyCacheName,userReply.getReplyid()+"",userReplyLockName,userReply,updateFunctionForDB);
}
- public List selectUserReply(UserReply userReply){
- return webHomeMapper.selectUserReply(userReply);
+
+ @Cacheable(cacheNames = "userReply",key = "#p0")
+ public UserReply selectUserReply(int id){
+ return webHomeMapper.selectUserReply(id);
}
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/SpringbootApplication.java b/src/medicine/springboot/src/main/java/com/xht/springboot/SpringbootApplication.java
index 783d46ee..fa32a9da 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/SpringbootApplication.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/SpringbootApplication.java
@@ -1,16 +1,29 @@
package com.xht.springboot;
-import com.xht.springboot.pythonspider.PythonSpider;
+import com.xht.springboot.Utils.BloomFilterUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.data.redis.core.RedisTemplate;
-import java.util.ArrayList;
+import java.util.Set;
@SpringBootApplication
+@EnableCaching
public class SpringbootApplication {
public static void main(String[] args) {
- SpringApplication.run(SpringbootApplication.class, args);
+ ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringbootApplication.class, args);
+
+ BloomFilterUtils bloomFilterUtils = applicationContext.getBean(BloomFilterUtils.class);
+ RedisTemplate redisTemplate = (RedisTemplate) applicationContext.getBean("redisTemplate");
+ Set keys = redisTemplate.keys("*");
+ System.out.println("BloomFilter: insert data");
+ for(String key : keys){
+ bloomFilterUtils.putIntoBloomFilter(key);
+ System.out.println(key);
+ }
}
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Tip/RequestResult.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Tip/RequestResult.java
index c0bb536f..e573d962 100644
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/Tip/RequestResult.java
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Tip/RequestResult.java
@@ -9,6 +9,14 @@ import org.springframework.stereotype.Component;
@ToString
public class RequestResult {
public int status;
- public static int OK = 0;
- public static int FAIL = 1;
+ public String message;
+ public String data;
+ public static int OK = 200;
+ public static int FAIL = 400;
+ public static String USER_LOGIN_FAILED = "user_login_failed";
+ public static String USER_LOGIN_SUCCESS = "user_login_success";
+ public static String USER_REGISTER_FAILED = "user_register_failed";
+ public static String USER_REGISTER_SUCCESS = "user_register_success";
+ public static String USER_REPEAT = "user_repeat";
+ public static String USER_NOT_REPEAT = "user_not_repeat";
}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/BloomFilterUtils.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/BloomFilterUtils.java
new file mode 100644
index 00000000..1ce76416
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/BloomFilterUtils.java
@@ -0,0 +1,22 @@
+package com.xht.springboot.Utils;
+
+import com.google.common.hash.BloomFilter;
+import com.google.common.hash.Funnels;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+
+@Component
+public class BloomFilterUtils {
+ private int bloomFilterSize = 10000;
+ private double fpp = 0.3;
+ private BloomFilter bloomFilter = BloomFilter.create(Funnels.stringFunnel(StandardCharsets.UTF_8),bloomFilterSize,fpp);
+
+ public boolean putIntoBloomFilter(String key){
+ return bloomFilter.put(key);
+ }
+
+ public boolean queryKey(String key){
+ return bloomFilter.mightContain(key);
+ }
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/DeleteFunctionForDB.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/DeleteFunctionForDB.java
new file mode 100644
index 00000000..a49b7b6d
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/DeleteFunctionForDB.java
@@ -0,0 +1,5 @@
+package com.xht.springboot.Utils.FuncInterFaces;
+
+public interface DeleteFunctionForDB {
+ public boolean deleteForDB(T data);
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/InsertFunctionForDB.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/InsertFunctionForDB.java
new file mode 100644
index 00000000..6b5cdefd
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/InsertFunctionForDB.java
@@ -0,0 +1,5 @@
+package com.xht.springboot.Utils.FuncInterFaces;
+
+public interface InsertFunctionForDB {
+ public boolean insertForDB(T data);
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/QueryFunctionForDB.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/QueryFunctionForDB.java
new file mode 100644
index 00000000..1dbad97d
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/QueryFunctionForDB.java
@@ -0,0 +1,7 @@
+package com.xht.springboot.Utils.FuncInterFaces;
+
+@FunctionalInterface
+public interface QueryFunctionForDB {
+ public T queryForDB(String token);
+
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/UpdateFunctionForDB.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/UpdateFunctionForDB.java
new file mode 100644
index 00000000..c5ce61b5
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/FuncInterFaces/UpdateFunctionForDB.java
@@ -0,0 +1,5 @@
+package com.xht.springboot.Utils.FuncInterFaces;
+
+public interface UpdateFunctionForDB {
+ public boolean updateForDB(T data);
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/MyLock.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/MyLock.java
new file mode 100644
index 00000000..d0c48648
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/MyLock.java
@@ -0,0 +1,4 @@
+package com.xht.springboot.Utils;
+
+public class MyLock {
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/RedisAndDbOpsUtils.java b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/RedisAndDbOpsUtils.java
new file mode 100644
index 00000000..a220336c
--- /dev/null
+++ b/src/medicine/springboot/src/main/java/com/xht/springboot/Utils/RedisAndDbOpsUtils.java
@@ -0,0 +1,121 @@
+package com.xht.springboot.Utils;
+
+import com.xht.springboot.Utils.FuncInterFaces.DeleteFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.InsertFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.QueryFunctionForDB;
+import com.xht.springboot.Utils.FuncInterFaces.UpdateFunctionForDB;
+import org.redisson.RedissonMultiLock;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisAndDbOpsUtils {
+ @Autowired
+ BloomFilterUtils bloomFilterUtils;
+ @Autowired
+ RedisTemplate redisTemplate;
+ @Autowired
+ RedissonClient redissonClient;
+
+ public T queryNoFilter(String cacheName, String key, String lockName, QueryFunctionForDB queryFunctionsForDB, String token){
+ return baseQuery(cacheName,key,lockName,queryFunctionsForDB,token);
+ }
+
+ public T queryHaveFilter(String cacheName,String key,String lockName,QueryFunctionForDB queryFunctionsForDB,String token){
+ if(!bloomFilterUtils.queryKey(cacheName+key))
+ return null;
+
+ return baseQuery(cacheName,key,lockName,queryFunctionsForDB,token);
+ }
+
+ public T baseQuery(String cacheName,String key,String lockName,QueryFunctionForDB queryFunctionsForDB,String token){
+ T result = (T) redisTemplate.opsForValue().get(cacheName+key);
+ if(result!=null)
+ return result;
+ else{
+ synchronized (this){
+ result = (T) redisTemplate.opsForValue().get(cacheName+key);
+ if(result!=null)
+ return (T) result;
+ else {
+ result = (T) queryFunctionsForDB.queryForDB(token);
+
+ RLock lock = redissonClient.getLock(lockName);
+ RedissonMultiLock redissonMultiLock = new RedissonMultiLock(lock);
+
+ redissonMultiLock.lock();
+ try {
+ if(result!=null){
+ System.out.println("have");
+ redisTemplate.opsForValue().set(cacheName+key,result);
+ }
+ else{
+ System.out.println("null");
+ redisTemplate.opsForValue().set(cacheName+key,null,30,TimeUnit.SECONDS);
+ }
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ redissonMultiLock.unlock();
+ }
+
+ return result;
+ }
+ }
+ }
+ }
+
+ public boolean insertHaveFilter(String cacheName, String key, T data,InsertFunctionForDB insertFunctionForDB){
+ if(insertFunctionForDB.insertForDB(data)){
+ bloomFilterUtils.putIntoBloomFilter(cacheName+key);
+ return true;
+ }else
+ return false;
+ }
+
+ public boolean baseDelete(String cacheName, String key, String lockName, T data, DeleteFunctionForDB deleteFunctionForDB){
+ if(deleteFunctionForDB.deleteForDB(data)){
+ RLock lock = redissonClient.getLock(lockName);
+ RedissonMultiLock redissonMultiLock = new RedissonMultiLock(lock);
+
+ redissonMultiLock.lock();
+ try {
+ redisTemplate.delete(cacheName+key);//删除缓存中数据
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ redissonMultiLock.unlock();
+ }
+
+ return true;
+ }else
+ return false;
+ }
+
+ public boolean baseUpdate(String cacheName, String key, String lockName, T data, UpdateFunctionForDB updateFunctionForDB){
+ if(updateFunctionForDB.updateForDB(data)){
+ RLock lock = redissonClient.getLock(lockName);
+ RedissonMultiLock redissonMultiLock = new RedissonMultiLock(lock);
+
+ redissonMultiLock.lock();
+ try {
+ redisTemplate.delete(cacheName+key);//删除缓存中数据
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ redissonMultiLock.unlock();
+ }
+
+ return true;
+ }else
+ return false;
+ }
+
+}
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/CancerSpider/spider.py b/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/CancerSpider/spider.py
deleted file mode 100644
index 9b7ebc20..00000000
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/CancerSpider/spider.py
+++ /dev/null
@@ -1,89 +0,0 @@
-import requests
-from PIL import Image
-from selenium import webdriver
-from selenium.webdriver import ActionChains
-from selenium.webdriver.common.by import By
-import time
-from lxml import etree
-
-
-def analyse(driver , input_imagexpath , input_anlxpath , imagepath):
- # 图片按钮
- loc1 = driver.find_element(By.XPATH, input_imagexpath).send_keys(imagepath)
- # 分析按钮
- loc2 = driver.find_element(By.XPATH, input_anlxpath)
-
- ActionChains(driver).click(loc1).perform()
- time.sleep(2)
- ActionChains(driver).click(loc2).perform()
- time.sleep(2)
-
-def go_in(driver , input_user , input_password , input_upload):
- # 用户名
- loc3 = driver.find_element(By.XPATH, input_user).send_keys("xht")
- # 密码
- loc4 = driver.find_element(By.XPATH, input_password).send_keys("Xht@20021213")
- # 点击进入
- loc5 = driver.find_element(By.XPATH, input_upload)
-
- ActionChains(driver).click(loc3).perform()
- time.sleep(2)
- ActionChains(driver).click(loc4).perform()
- time.sleep(2)
-
- ActionChains(driver).click(loc5).perform()
- time.sleep(2)
-
-def get_information(driver , url):
- input_res = []
- for i in range(2 , 7):
- if i == 5:
- continue
- else:
- # / html / body / p[3] / text()[2]
- t = "/html/body/p[" + str(i) + "]"
- input_res.append(t)
- loc_res = []
- for i in input_res:
- temp = driver.find_element(By.XPATH , i).text
- loc_res.append(temp)
-
- return loc_res
-
-def get_picture(driver , output_pic , imagename):
- return driver.find_element(By.XPATH , output_pic).screenshot(imagename)
-
-
-
-if __name__ == "__main__":
- # driver.get("http://mammo.neuralrad.com:5300/upload")
- option = webdriver.EdgeOptions()
- option.add_argument("--headless")
- option.add_argument("--disable-gpu")
- option.add_argument("--disable-software-rasterizer")
-
- url = "http://mammo.neuralrad.com:5300/"
- driver = webdriver.Edge(options=option)
- imagepath = "D:\\pro_of_program\\Java\\test\\SOB_B_A-14-22549AB-400-006.png"
- imagename = "SOB_B_A-14-22549AB-400-006.png"
-
- driver.get(url)
-
- input_imagexpath = "/html/body/section[2]/form/p/input[1]"
- input_anlxpath = "/html/body/section[2]/form/p/input[2]"
-
- input_user = "/html/body/section[1]/div/header/div/div[2]/a[1]/div/p/input"
- input_password = "/html/body/section[1]/div/header/div/div[2]/a[2]/div/p/input"
-
- input_upload = "/html/body/section[2]/div/div/h1/a"
- output_picture = "/html/body/img"
-
- go_in(driver , input_user , input_password , input_upload)
- analyse(driver , input_imagexpath , input_anlxpath , imagepath)
- # context 解析结果
- context = get_information(driver , url)
- for i in context:
- print(i)
- # 获取图片
- picture = get_picture(driver , output_picture , imagename)
- # print(picture)
\ No newline at end of file
diff --git a/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/PythonSpider.java b/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/PythonSpider.java
deleted file mode 100644
index d75c8248..00000000
--- a/src/medicine/springboot/src/main/java/com/xht/springboot/pythonspider/PythonSpider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.xht.springboot.pythonspider;
-
-import org.python.util.PythonInterpreter;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-public class PythonSpider
-{
- public static ArrayList Spider()
- {
- ArrayList res = new ArrayList<>();
- PythonInterpreter Pyit = new PythonInterpreter();
- Process proc;
- String path = "src/main/java/com/xht/springboot/pythonspider/CancerSpider/spider.py";
- path = "python " + path;
- try {
- proc = Runtime.getRuntime().exec(path);
- BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
- String line = null;
- while((line = in.readLine()) != null)
- res.add(line);
- in.close();
- proc.waitFor();
- }
- catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- return res;
- }
-}
diff --git a/src/medicine/springboot/src/main/resources/application.properties b/src/medicine/springboot/src/main/resources/application.properties
index a3ac65ce..5ab95c45 100644
--- a/src/medicine/springboot/src/main/resources/application.properties
+++ b/src/medicine/springboot/src/main/resources/application.properties
@@ -1 +1,2 @@
-server.port=8080
\ No newline at end of file
+server.port=8080
+upload.dir=upload\\cancerpictures
\ No newline at end of file
diff --git a/src/medicine/springboot/src/main/resources/application.yaml b/src/medicine/springboot/src/main/resources/application.yaml
index 4f17caf5..bca3ad0e 100644
--- a/src/medicine/springboot/src/main/resources/application.yaml
+++ b/src/medicine/springboot/src/main/resources/application.yaml
@@ -1,12 +1,23 @@
-mybatis:
- config-location: classpath:mybatis/db1/mybatis_config.xml
- mapper-locations:
- - classpath:mybatis/db1/*Mapper.xml
-
-
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/medicine_web
username: root
- password: molong
\ No newline at end of file
+ password: molong
+ data:
+ redis:
+ password: molong
+ port: 6390
+ host: 192.168.225.128
+ lettuce:
+ pool:
+ max-wait: -1
+ min-idle: 0
+ max-active: 8
+ max-idle: 8
+
+mybatis:
+ config-location: classpath:mybatis/db1/mybatis_config.xml
+ mapper-locations:
+ - classpath:mybatis/db1/*Mapper.xml
+
diff --git a/src/medicine/springboot/src/main/resources/mybatis/db1/InformationQueryMapper.xml b/src/medicine/springboot/src/main/resources/mybatis/db1/InformationQueryMapper.xml
new file mode 100644
index 00000000..8c9a2dcb
--- /dev/null
+++ b/src/medicine/springboot/src/main/resources/mybatis/db1/InformationQueryMapper.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/medicine/springboot/src/main/resources/mybatis/db1/PersonalHomeMapper.xml b/src/medicine/springboot/src/main/resources/mybatis/db1/PersonalHomeMapper.xml
index bd7897c0..bae55e36 100644
--- a/src/medicine/springboot/src/main/resources/mybatis/db1/PersonalHomeMapper.xml
+++ b/src/medicine/springboot/src/main/resources/mybatis/db1/PersonalHomeMapper.xml
@@ -8,6 +8,23 @@
select * from userdetails where uid=#{uid}
+
+ insert into userdetails(uid,registertime) values(#{uid},#{registertime})
+
+
+
+ update userdetails
+
+
+ textcounts=#{textcounts},
+
+
+ diseases=#{diseases},
+
+
+ where uid=#{uid}
+
+
diff --git a/src/medicine/springboot/src/main/resources/mybatis/db1/WebHomeMapper.xml b/src/medicine/springboot/src/main/resources/mybatis/db1/WebHomeMapper.xml
index 26e39461..7f5c5ed1 100644
--- a/src/medicine/springboot/src/main/resources/mybatis/db1/WebHomeMapper.xml
+++ b/src/medicine/springboot/src/main/resources/mybatis/db1/WebHomeMapper.xml
@@ -21,7 +21,7 @@
-