Your Name 6 年前
父节点
当前提交
61ba743f5f

+ 191
- 305
.idea/workspace.xml 查看文件

@@ -5,148 +5,15 @@
5 5
   </component>
6 6
   <component name="ChangeListManager">
7 7
     <list default="true" id="5dd66384-19bf-43a0-b6b4-b05d9b7b9cd4" name="Default" comment="">
8
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml" afterDir="false" />
9
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml" afterDir="false" />
10
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_1_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_1_1.xml" afterDir="false" />
11
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_2_8_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_2_8_3.xml" afterDir="false" />
12
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_0_6.xml" afterDir="false" />
13
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_0_6.xml" afterDir="false" />
14
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_0_6.xml" afterDir="false" />
15
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_0_6.xml" afterDir="false" />
16
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_0_6.xml" afterDir="false" />
17
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_0_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_0_6.xml" afterDir="false" />
18
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml" afterDir="false" />
19
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml" afterDir="false" />
20
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml" afterDir="false" />
21
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml" afterDir="false" />
22
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8.xml" afterDir="false" />
23
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8.xml" afterDir="false" />
24
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_8.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_8.xml" afterDir="false" />
25
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_2.xml" afterDir="false" />
26
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml" afterDir="false" />
27
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_guava_guava_18_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_guava_guava_18_0.xml" afterDir="false" />
28
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml" afterDir="false" />
29
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okhttp_okhttp_2_5_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okhttp_okhttp_2_5_0.xml" afterDir="false" />
30
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okio_okio_1_6_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okio_okio_1_6_0.xml" afterDir="false" />
31
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_core_2_1_14.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_core_2_1_14.xml" afterDir="false" />
32
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_impl_2_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_impl_2_1.xml" afterDir="false" />
33
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_0_75.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_0_75.xml" afterDir="false" />
34
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml" afterDir="false" />
35
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml" afterDir="false" />
36
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml" afterDir="false" />
37
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_5.xml" afterDir="false" />
38
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_5.xml" afterDir="false" />
39
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_5.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_5.xml" afterDir="false" />
40
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_core_2_7_0.xml" afterDir="false" />
41
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_schema_2_7_0.xml" afterDir="false" />
42
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spi_2_7_0.xml" afterDir="false" />
43
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_7_0.xml" afterDir="false" />
44
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_7_0.xml" afterDir="false" />
45
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_7_0.xml" afterDir="false" />
46
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_7_0.xml" afterDir="false" />
47
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_13.xml" afterDir="false" />
48
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_models_1_5_13.xml" afterDir="false" />
49
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_activation_1_1_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_activation_1_1_1.xml" afterDir="false" />
50
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml" afterDir="false" />
51
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml" afterDir="false" />
52
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml" afterDir="false" />
53
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml" afterDir="false" />
54
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__junit_junit_4_12.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__junit_junit_4_12.xml" afterDir="false" />
55
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_15.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_15.xml" afterDir="false" />
56
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_12.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_12.xml" afterDir="false" />
57
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml" afterDir="false" />
58
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml" afterDir="false" />
59
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml" afterDir="false" />
60
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml" afterDir="false" />
61
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml" afterDir="false" />
62
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml" afterDir="false" />
63
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml" afterDir="false" />
64
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml" afterDir="false" />
65
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml" afterDir="false" />
66
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml" afterDir="false" />
67
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml" afterDir="false" />
68
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml" afterDir="false" />
69
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml" afterDir="false" />
70
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml" afterDir="false" />
71
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml" afterDir="false" />
72
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml" afterDir="false" />
73
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml" afterDir="false" />
74
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jdom_jdom_1_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_jdom_jdom_1_1.xml" afterDir="false" />
75
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mapstruct_mapstruct_1_1_0_Final.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mapstruct_mapstruct_1_1_0_Final.xml" afterDir="false" />
76
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml" afterDir="false" />
77
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml" afterDir="false" />
78
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml" afterDir="false" />
79
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml" afterDir="false" />
80
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml" afterDir="false" />
81
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_projectlombok_lombok_1_18_2.xml" afterDir="false" />
82
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_reflections_reflections_0_9_11.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_reflections_reflections_0_9_11.xml" afterDir="false" />
83
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml" afterDir="false" />
84
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml" afterDir="false" />
85
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml" afterDir="false" />
86
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml" afterDir="false" />
87
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml" afterDir="false" />
88
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_4_RELEASE.xml" afterDir="false" />
89
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml" afterDir="false" />
90
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_4_RELEASE.xml" afterDir="false" />
91
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml" afterDir="false" />
92
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml" afterDir="false" />
93
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml" afterDir="false" />
94
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml" afterDir="false" />
95
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml" afterDir="false" />
96
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_4_RELEASE.xml" afterDir="false" />
97
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml" afterDir="false" />
98
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml" afterDir="false" />
99
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml" afterDir="false" />
100
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml" afterDir="false" />
101
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml" afterDir="false" />
102
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml" afterDir="false" />
103
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_5_1_6_RELEASE.xml" afterDir="false" />
104
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_core_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_core_5_1_6_RELEASE.xml" afterDir="false" />
105
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml" afterDir="false" />
106
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml" afterDir="false" />
107
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_6_RELEASE.xml" afterDir="false" />
108
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_messaging_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_messaging_5_1_6_RELEASE.xml" afterDir="false" />
109
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_test_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_test_5_1_6_RELEASE.xml" afterDir="false" />
110
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_tx_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_tx_5_1_6_RELEASE.xml" afterDir="false" />
111
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_web_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_web_5_1_6_RELEASE.xml" afterDir="false" />
112
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml" afterDir="false" />
113
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_websocket_5_1_6_RELEASE.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_websocket_5_1_6_RELEASE.xml" afterDir="false" />
114
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml" afterDir="false" />
115
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml" afterDir="false" />
116
-      <change beforePath="$PROJECT_DIR$/.idea/service.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/service.iml" afterDir="false" />
117 8
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
118
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" afterDir="false" />
119
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstUsherRecordController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstUsherRecordController.java" afterDir="false" />
120
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaMiniFormidsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaMiniFormidsController.java" afterDir="false" />
121
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaFirstUsherRecord.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaFirstUsherRecord.java" afterDir="false" />
122
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysParamService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysParamService.java" afterDir="false" />
123
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCarService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCarService.java" afterDir="false" />
124
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomerService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomerService.java" afterDir="false" />
125
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaFirstUsherRecordService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaFirstUsherRecordService.java" afterDir="false" />
126
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java" afterDir="false" />
127
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/SysParamServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/SysParamServiceImpl.java" afterDir="false" />
9
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java" afterDir="false" />
10
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java" afterDir="false" />
128 11
       <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java" afterDir="false" />
129
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCustomerServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCustomerServiceImpl.java" afterDir="false" />
130
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java" afterDir="false" />
131 12
       <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java" afterDir="false" />
132 13
       <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" afterDir="false" />
133 14
       <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java" afterDir="false" />
134 15
       <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java" afterDir="false" />
135
-      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" afterDir="false" />
136
-      <change beforePath="$PROJECT_DIR$/target/classes/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application.yml" afterDir="false" />
137
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/SysUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/SysUserMapper.xml" afterDir="false" />
138
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaContentLibMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaContentLibMapper.xml" afterDir="false" />
139
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaDeviceMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaDeviceMapper.xml" afterDir="false" />
140
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageContentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageContentMapper.xml" afterDir="false" />
141
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageMapper.xml" afterDir="false" />
142
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageNoticeMapper.xml" afterDir="false" />
143
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaImagesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaImagesMapper.xml" afterDir="false" />
144
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaNoticeMapper.xml" afterDir="false" />
145
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaPersonMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaPersonMapper.xml" afterDir="false" />
146
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaPersonTypeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaPersonTypeMapper.xml" afterDir="false" />
147
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaSyncLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaSyncLogMapper.xml" afterDir="false" />
148
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaVisitingLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaVisitingLogMapper.xml" afterDir="false" />
149
-      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaVisitingWordsMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaVisitingWordsMapper.xml" afterDir="false" />
16
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java" afterDir="false" />
150 17
     </list>
151 18
     <ignored path="$PROJECT_DIR$/target/" />
152 19
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -194,36 +61,57 @@
194 61
     <session id="-1397041257">
195 62
       <usages-collector id="statistics.lifecycle.project">
196 63
         <counts>
64
+          <entry key="project.closed" value="1" />
65
+          <entry key="project.open.time.3" value="1" />
197 66
           <entry key="project.open.time.46" value="1" />
198
-          <entry key="project.opened" value="1" />
67
+          <entry key="project.opened" value="2" />
199 68
         </counts>
200 69
       </usages-collector>
201 70
       <usages-collector id="statistics.file.extensions.open">
202 71
         <counts>
203
-          <entry key="java" value="78" />
204
-          <entry key="yml" value="3" />
72
+          <entry key="java" value="106" />
73
+          <entry key="yml" value="6" />
205 74
         </counts>
206 75
       </usages-collector>
207 76
       <usages-collector id="statistics.file.types.open">
208 77
         <counts>
209
-          <entry key="JAVA" value="78" />
210
-          <entry key="YAML" value="3" />
78
+          <entry key="JAVA" value="106" />
79
+          <entry key="YAML" value="6" />
211 80
         </counts>
212 81
       </usages-collector>
213 82
       <usages-collector id="statistics.file.extensions.edit">
214 83
         <counts>
215
-          <entry key="java" value="2492" />
84
+          <entry key="java" value="4311" />
216 85
         </counts>
217 86
       </usages-collector>
218 87
       <usages-collector id="statistics.file.types.edit">
219 88
         <counts>
220
-          <entry key="JAVA" value="2492" />
89
+          <entry key="JAVA" value="4311" />
221 90
         </counts>
222 91
       </usages-collector>
223 92
     </session>
224 93
   </component>
225 94
   <component name="FileEditorManager">
226
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
95
+    <leaf>
96
+      <file pinned="false" current-in-tab="false">
97
+        <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java">
98
+          <provider selected="true" editor-type-id="text-editor">
99
+            <state relative-caret-position="130">
100
+              <caret line="27" column="23" selection-start-line="27" selection-start-column="18" selection-end-line="27" selection-end-column="23" />
101
+            </state>
102
+          </provider>
103
+        </entry>
104
+      </file>
105
+      <file pinned="false" current-in-tab="true">
106
+        <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java">
107
+          <provider selected="true" editor-type-id="text-editor">
108
+            <state relative-caret-position="152">
109
+              <caret line="404" column="39" selection-start-line="404" selection-start-column="39" selection-end-line="404" selection-end-column="39" />
110
+            </state>
111
+          </provider>
112
+        </entry>
113
+      </file>
114
+    </leaf>
227 115
   </component>
228 116
   <component name="FileTemplateManagerImpl">
229 117
     <option name="RECENT_TEMPLATES">
@@ -235,8 +123,6 @@
235 123
   </component>
236 124
   <component name="FindInProjectRecents">
237 125
     <findStrings>
238
-      <find>newRecordByFront</find>
239
-      <find>notifyConsultant</find>
240 126
       <find>getMultipartFile</find>
241 127
       <find>分发人脸</find>
242 128
       <find>whitelist</find>
@@ -265,6 +151,8 @@
265 151
       <find>send2Front</find>
266 152
       <find>newCustByMainUsher</find>
267 153
       <find>todo</find>
154
+      <find>searchFace</find>
155
+      <find>voice</find>
268 156
     </findStrings>
269 157
     <replaceStrings>
270 158
       <replace>com.huiju.welcome</replace>
@@ -289,14 +177,11 @@
289 177
   <component name="IdeDocumentHistory">
290 178
     <option name="CHANGED_PATHS">
291 179
       <list>
292
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysUserController.java" />
293
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java" />
294 180
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/AliProperties.java" />
295 181
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java" />
296 182
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
297 183
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/TencentProperties.java" />
298 184
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/TencentFaceUtils.java" />
299
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java" />
300 185
         <option value="$PROJECT_DIR$/pom.xml" />
301 186
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstpageController.java" />
302 187
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ICameraService.java" />
@@ -323,9 +208,7 @@
323 208
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFollowupRecordServiceImpl.java" />
324 209
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" />
325 210
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" />
326
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java" />
327 211
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysParamService.java" />
328
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java" />
329 212
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/SysParamServiceImpl.java" />
330 213
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaFirstUsherRecord.java" />
331 214
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstUsherRecordController.java" />
@@ -335,11 +218,16 @@
335 218
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaMiniFormidsController.java" />
336 219
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomerService.java" />
337 220
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCustomerServiceImpl.java" />
221
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java" />
222
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java" />
223
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java" />
224
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java" />
225
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java" />
338 226
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java" />
339 227
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java" />
340
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" />
341
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java" />
228
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java" />
342 229
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java" />
230
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" />
343 231
       </list>
344 232
     </option>
345 233
   </component>
@@ -374,18 +262,12 @@
374 262
           <item name="mainbiz" type="9519ce18:MavenProjectsStructure$ProjectNode" />
375 263
           <item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
376 264
         </path>
377
-        <path>
378
-          <item name="" type="16c1761:MavenProjectsStructure$RootNode" />
379
-          <item name="mainbiz" type="9519ce18:MavenProjectsStructure$ProjectNode" />
380
-          <item name="Plugins" type="7aea1407:MavenProjectsStructure$PluginsNode" />
381
-        </path>
382 265
       </expand>
383 266
       <select />
384 267
     </treeState>
385 268
   </component>
386 269
   <component name="ProjectFrameBounds">
387
-    <option name="x" value="1" />
388
-    <option name="width" value="1918" />
270
+    <option name="width" value="1919" />
389 271
     <option name="height" value="1030" />
390 272
   </component>
391 273
   <component name="ProjectLevelVcsManager" settingsEditedManually="true">
@@ -398,7 +280,6 @@
398 280
     <panes>
399 281
       <pane id="Scope" />
400 282
       <pane id="AndroidView" />
401
-      <pane id="PackagesPane" />
402 283
       <pane id="ProjectPane">
403 284
         <subPane>
404 285
           <expand>
@@ -448,17 +329,7 @@
448 329
               <item name="main" type="462c0819:PsiDirectoryNode" />
449 330
               <item name="java" type="462c0819:PsiDirectoryNode" />
450 331
               <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
451
-              <item name="service" type="462c0819:PsiDirectoryNode" />
452
-            </path>
453
-            <path>
454
-              <item name="service-welcome3" type="b2602c69:ProjectViewProjectNode" />
455
-              <item name="service-welcome3" type="462c0819:PsiDirectoryNode" />
456
-              <item name="src" type="462c0819:PsiDirectoryNode" />
457
-              <item name="main" type="462c0819:PsiDirectoryNode" />
458
-              <item name="java" type="462c0819:PsiDirectoryNode" />
459
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
460
-              <item name="service" type="462c0819:PsiDirectoryNode" />
461
-              <item name="impl" type="462c0819:PsiDirectoryNode" />
332
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
462 333
             </path>
463 334
             <path>
464 335
               <item name="service-welcome3" type="b2602c69:ProjectViewProjectNode" />
@@ -471,6 +342,7 @@
471 342
           <select />
472 343
         </subPane>
473 344
       </pane>
345
+      <pane id="PackagesPane" />
474 346
     </panes>
475 347
   </component>
476 348
   <component name="PropertiesComponent">
@@ -480,7 +352,7 @@
480 352
     <property name="RequestMappingsPanelWidth1" value="75" />
481 353
     <property name="WebServerToolWindowFactoryState" value="false" />
482 354
     <property name="aspect.path.notification.shown" value="true" />
483
-    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1562591492290" />
355
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1562675112470" />
484 356
     <property name="go.gopath.indexing.explicitly.defined" value="true" />
485 357
     <property name="last_opened_file_path" value="E:/learn/green-sdk-sample-doc-2018-05-09/green-sdk-sample/v2018-05-09/green-java-sdk-sample-v20180509" />
486 358
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
@@ -599,17 +471,19 @@
599 471
       <workItem from="1561692193235" duration="21369000" />
600 472
       <workItem from="1561966608632" duration="124000" />
601 473
       <workItem from="1561967334531" duration="1458000" />
602
-      <workItem from="1562216688143" duration="36967000" />
474
+      <workItem from="1562216688143" duration="37059000" />
475
+      <workItem from="1562634693683" duration="20963000" />
603 476
     </task>
604 477
     <servers />
605 478
   </component>
606 479
   <component name="TimeTrackingManager">
607
-    <option name="totallyTimeSpent" value="534714000" />
480
+    <option name="totallyTimeSpent" value="555769000" />
608 481
   </component>
609 482
   <component name="ToolWindowManager">
610
-    <frame x="1" y="0" width="1534" height="824" extended-state="0" />
483
+    <frame x="0" y="0" width="1535" height="824" extended-state="0" />
484
+    <editor active="true" />
611 485
     <layout>
612
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.34146342" />
486
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2295193" />
613 487
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
614 488
       <window_info id="Designer" order="2" />
615 489
       <window_info id="Image Layers" order="3" />
@@ -619,13 +493,13 @@
619 493
       <window_info id="Capture Tool" order="7" />
620 494
       <window_info anchor="bottom" id="Find" order="0" sideWeight="0.49903476" weight="0.3295325" />
621 495
       <window_info anchor="bottom" id="Message" order="1" />
622
-      <window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49903476" visible="true" weight="0.37724552" />
623
-      <window_info anchor="bottom" id="Debug" order="3" sideWeight="0.49903476" weight="0.6511976" />
496
+      <window_info anchor="bottom" id="Run" order="2" sideWeight="0.49903476" visible="true" weight="0.24401198" />
497
+      <window_info anchor="bottom" id="Debug" order="3" sideWeight="0.49903476" weight="0.6766467" />
624 498
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
625 499
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
626 500
       <window_info anchor="bottom" id="TODO" order="6" />
627 501
       <window_info anchor="bottom" id="Spring" order="7" />
628
-      <window_info anchor="bottom" id="Terminal" order="8" weight="0.19384265" />
502
+      <window_info anchor="bottom" id="Terminal" order="8" weight="0.19311377" />
629 503
       <window_info anchor="bottom" id="Event Log" order="9" sideWeight="0.50096524" side_tool="true" weight="0.39953408" />
630 504
       <window_info anchor="bottom" id="Java Enterprise" order="10" />
631 505
       <window_info anchor="bottom" id="Database Changes" order="11" show_stripe_button="false" />
@@ -637,7 +511,7 @@
637 511
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
638 512
       <window_info anchor="right" id="Palette" order="3" />
639 513
       <window_info anchor="right" id="Capture Analysis" order="4" />
640
-      <window_info anchor="right" id="Maven Projects" order="5" visible="true" weight="0.124661244" />
514
+      <window_info anchor="right" id="Maven Projects" order="5" visible="true" weight="0.124576844" />
641 515
       <window_info anchor="right" id="Database" order="6" />
642 516
       <window_info anchor="right" id="Palette&#9;" order="7" />
643 517
       <window_info anchor="right" id="Theme Preview" order="8" />
@@ -690,54 +564,6 @@
690 564
     <option name="myLimit" value="2678400000" />
691 565
   </component>
692 566
   <component name="editorHistoryManager">
693
-    <entry file="jar://D:/REPO/org/springframework/spring-webmvc/5.1.6.RELEASE/spring-webmvc-5.1.6.RELEASE.jar!/org/springframework/web/servlet/FrameworkServlet.class" />
694
-    <entry file="jar://D:/REPO/org/apache/tomcat/embed/tomcat-embed-core/9.0.17/tomcat-embed-core-9.0.17.jar!/org/apache/catalina/core/ApplicationFilterChain.class" />
695
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java">
696
-      <provider selected="true" editor-type-id="text-editor">
697
-        <state relative-caret-position="86">
698
-          <caret line="66" selection-start-line="66" selection-end-line="66" />
699
-        </state>
700
-      </provider>
701
-    </entry>
702
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaCar.java" />
703
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaCarMapper.java">
704
-      <provider selected="true" editor-type-id="text-editor">
705
-        <state relative-caret-position="84">
706
-          <caret line="4" column="44" selection-start-line="4" selection-start-column="44" selection-end-line="4" selection-end-column="44" />
707
-        </state>
708
-      </provider>
709
-    </entry>
710
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/TaCarMapper.xml">
711
-      <provider selected="true" editor-type-id="text-editor">
712
-        <state relative-caret-position="84">
713
-          <caret line="4" lean-forward="true" selection-start-line="4" selection-end-line="4" />
714
-        </state>
715
-      </provider>
716
-    </entry>
717
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitorAppointment.java">
718
-      <provider selected="true" editor-type-id="text-editor">
719
-        <state relative-caret-position="483">
720
-          <caret line="35" column="21" selection-start-line="35" selection-start-column="11" selection-end-line="35" selection-end-column="21" />
721
-        </state>
722
-      </provider>
723
-    </entry>
724
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/CommConstant.java">
725
-      <provider selected="true" editor-type-id="text-editor">
726
-        <state relative-caret-position="336">
727
-          <caret line="16" column="54" selection-start-line="16" selection-start-column="49" selection-end-line="16" selection-end-column="54" />
728
-        </state>
729
-      </provider>
730
-    </entry>
731
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaCarController.java">
732
-      <provider selected="true" editor-type-id="text-editor">
733
-        <state relative-caret-position="328">
734
-          <caret line="62" column="48" lean-forward="true" selection-start-line="62" selection-start-column="48" selection-end-line="62" selection-end-column="48" />
735
-          <folding>
736
-            <element signature="imports" expanded="true" />
737
-          </folding>
738
-        </state>
739
-      </provider>
740
-    </entry>
741 567
     <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/TaMainUsherRecordMapper.xml">
742 568
       <provider selected="true" editor-type-id="text-editor" />
743 569
     </entry>
@@ -790,20 +616,6 @@
790 616
         </state>
791 617
       </provider>
792 618
     </entry>
793
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java">
794
-      <provider selected="true" editor-type-id="text-editor">
795
-        <state relative-caret-position="339">
796
-          <caret line="44" column="11" lean-forward="true" selection-start-line="44" selection-start-column="11" selection-end-line="44" selection-end-column="11" />
797
-        </state>
798
-      </provider>
799
-    </entry>
800
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java">
801
-      <provider selected="true" editor-type-id="text-editor">
802
-        <state relative-caret-position="398">
803
-          <caret line="43" column="51" selection-start-line="43" selection-start-column="32" selection-end-line="43" selection-end-column="51" />
804
-        </state>
805
-      </provider>
806
-    </entry>
807 619
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java">
808 620
       <provider selected="true" editor-type-id="text-editor">
809 621
         <state relative-caret-position="229">
@@ -832,13 +644,6 @@
832 644
         </state>
833 645
       </provider>
834 646
     </entry>
835
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
836
-      <provider selected="true" editor-type-id="text-editor">
837
-        <state relative-caret-position="-370">
838
-          <caret line="25" lean-forward="true" selection-start-line="25" selection-end-line="25" />
839
-        </state>
840
-      </provider>
841
-    </entry>
842 647
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysParamService.java">
843 648
       <provider selected="true" editor-type-id="text-editor">
844 649
         <state relative-caret-position="494">
@@ -867,9 +672,6 @@
867 672
       <provider selected="true" editor-type-id="text-editor">
868 673
         <state relative-caret-position="323">
869 674
           <caret line="17" column="22" selection-start-line="17" selection-start-column="12" selection-end-line="17" selection-end-column="22" />
870
-          <folding>
871
-            <element signature="imports" expanded="true" />
872
-          </folding>
873 675
         </state>
874 676
       </provider>
875 677
     </entry>
@@ -880,16 +682,6 @@
880 682
         </state>
881 683
       </provider>
882 684
     </entry>
883
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java">
884
-      <provider selected="true" editor-type-id="text-editor">
885
-        <state relative-caret-position="-611">
886
-          <caret line="247" column="21" selection-start-line="247" selection-start-column="11" selection-end-line="247" selection-end-column="21" />
887
-          <folding>
888
-            <element signature="imports" expanded="true" />
889
-          </folding>
890
-        </state>
891
-      </provider>
892
-    </entry>
893 685
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaCustomerMapController.java">
894 686
       <provider selected="true" editor-type-id="text-editor">
895 687
         <state relative-caret-position="-603">
@@ -911,13 +703,6 @@
911 703
         </state>
912 704
       </provider>
913 705
     </entry>
914
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ICameraService.java">
915
-      <provider selected="true" editor-type-id="text-editor">
916
-        <state relative-caret-position="133">
917
-          <caret line="9" column="12" selection-start-line="9" selection-start-column="12" selection-end-line="9" selection-end-column="12" />
918
-        </state>
919
-      </provider>
920
-    </entry>
921 706
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaMainUsherRecordController.java">
922 707
       <provider selected="true" editor-type-id="text-editor">
923 708
         <state relative-caret-position="254">
@@ -939,16 +724,6 @@
939 724
         </state>
940 725
       </provider>
941 726
     </entry>
942
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java">
943
-      <provider selected="true" editor-type-id="text-editor">
944
-        <state relative-caret-position="206">
945
-          <caret line="247" lean-forward="true" selection-start-line="247" selection-end-line="247" />
946
-          <folding>
947
-            <element signature="imports" expanded="true" />
948
-          </folding>
949
-        </state>
950
-      </provider>
951
-    </entry>
952 727
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomerService.java">
953 728
       <provider selected="true" editor-type-id="text-editor">
954 729
         <state relative-caret-position="238">
@@ -969,13 +744,6 @@
969 744
         </state>
970 745
       </provider>
971 746
     </entry>
972
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java">
973
-      <provider selected="true" editor-type-id="text-editor">
974
-        <state relative-caret-position="319">
975
-          <caret line="56" column="13" selection-start-line="56" selection-start-column="13" selection-end-line="56" selection-end-column="13" />
976
-        </state>
977
-      </provider>
978
-    </entry>
979 747
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaFirstUsherRecord.java">
980 748
       <provider selected="true" editor-type-id="text-editor">
981 749
         <state relative-caret-position="-114">
@@ -997,52 +765,170 @@
997 765
         </state>
998 766
       </provider>
999 767
     </entry>
1000
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java">
768
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java">
769
+      <provider selected="true" editor-type-id="text-editor">
770
+        <state relative-caret-position="228">
771
+          <caret line="99" column="23" lean-forward="true" selection-start-line="99" selection-start-column="23" selection-end-line="99" selection-end-column="23" />
772
+        </state>
773
+      </provider>
774
+    </entry>
775
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java">
776
+      <provider selected="true" editor-type-id="text-editor">
777
+        <state relative-caret-position="319">
778
+          <caret line="56" column="13" selection-start-line="56" selection-start-column="13" selection-end-line="56" selection-end-column="13" />
779
+        </state>
780
+      </provider>
781
+    </entry>
782
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysUserController.java">
783
+      <provider selected="true" editor-type-id="text-editor">
784
+        <state relative-caret-position="-3633">
785
+          <caret line="36" column="13" selection-start-line="36" selection-start-column="13" selection-end-line="36" selection-end-column="13" />
786
+        </state>
787
+      </provider>
788
+    </entry>
789
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java">
790
+      <provider selected="true" editor-type-id="text-editor">
791
+        <state relative-caret-position="81">
792
+          <caret line="149" selection-start-line="149" selection-end-line="149" />
793
+        </state>
794
+      </provider>
795
+    </entry>
796
+    <entry file="jar://D:/m2_yincheng/org/springframework/spring-core/5.1.6.RELEASE/spring-core-5.1.6.RELEASE-sources.jar!/org/springframework/util/MimeTypeUtils.java">
1001 797
       <provider selected="true" editor-type-id="text-editor">
1002
-        <state relative-caret-position="377">
1003
-          <caret line="186" column="38" lean-forward="true" selection-start-line="186" selection-start-column="38" selection-end-line="186" selection-end-column="38" />
798
+        <state relative-caret-position="1740">
799
+          <caret line="308" column="25" selection-start-line="308" selection-start-column="25" selection-end-line="308" selection-end-column="25" />
800
+        </state>
801
+      </provider>
802
+    </entry>
803
+    <entry file="jar://D:/m2_yincheng/org/springframework/spring-web/5.1.6.RELEASE/spring-web-5.1.6.RELEASE-sources.jar!/org/springframework/http/MediaType.java">
804
+      <provider selected="true" editor-type-id="text-editor">
805
+        <state relative-caret-position="98">
806
+          <caret line="609" column="35" selection-start-line="609" selection-start-column="35" selection-end-line="609" selection-end-column="35" />
807
+        </state>
808
+      </provider>
809
+    </entry>
810
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/MiniApp.java">
811
+      <provider selected="true" editor-type-id="text-editor">
812
+        <state relative-caret-position="272">
813
+          <caret line="85" column="9" selection-start-line="78" selection-start-column="8" selection-end-line="85" selection-end-column="9" />
814
+        </state>
815
+      </provider>
816
+    </entry>
817
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java">
818
+      <provider selected="true" editor-type-id="text-editor">
819
+        <state relative-caret-position="-664">
820
+          <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
821
+        </state>
822
+      </provider>
823
+    </entry>
824
+    <entry file="jar://D:/m2_yincheng/org/springframework/spring-web/5.1.6.RELEASE/spring-web-5.1.6.RELEASE-sources.jar!/org/springframework/http/HttpEntity.java">
825
+      <provider selected="true" editor-type-id="text-editor">
826
+        <state relative-caret-position="139">
827
+          <caret line="99" column="11" selection-start-line="99" selection-start-column="11" selection-end-line="99" selection-end-column="11" />
828
+        </state>
829
+      </provider>
830
+    </entry>
831
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/DateUtils.java">
832
+      <provider selected="true" editor-type-id="text-editor">
833
+        <state relative-caret-position="257">
834
+          <caret line="56" column="31" selection-start-line="56" selection-start-column="31" selection-end-line="56" selection-end-column="31" />
835
+        </state>
836
+      </provider>
837
+    </entry>
838
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/AliProperties.java">
839
+      <provider selected="true" editor-type-id="text-editor">
840
+        <state relative-caret-position="124">
841
+          <caret line="10" column="25" selection-start-line="10" selection-start-column="25" selection-end-line="10" selection-end-column="25" />
842
+        </state>
843
+      </provider>
844
+    </entry>
845
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java">
846
+      <provider selected="true" editor-type-id="text-editor">
847
+        <state relative-caret-position="145">
848
+          <caret line="41" column="4" selection-start-line="41" selection-start-column="4" selection-end-line="41" selection-end-column="4" />
849
+        </state>
850
+      </provider>
851
+    </entry>
852
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java">
853
+      <provider selected="true" editor-type-id="text-editor">
854
+        <state relative-caret-position="-976">
855
+          <caret line="4" column="15" selection-start-line="4" selection-start-column="15" selection-end-line="4" selection-end-column="15" />
1004 856
         </state>
1005 857
       </provider>
1006 858
     </entry>
1007 859
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCarRecordService.java">
1008 860
       <provider selected="true" editor-type-id="text-editor">
1009
-        <state relative-caret-position="357">
861
+        <state relative-caret-position="160">
1010 862
           <caret line="32" column="12" selection-start-line="32" selection-start-column="12" selection-end-line="32" selection-end-column="12" />
1011 863
         </state>
1012 864
       </provider>
1013 865
     </entry>
1014
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java">
866
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
867
+      <provider selected="true" editor-type-id="text-editor">
868
+        <state relative-caret-position="247">
869
+          <caret line="64" column="18" selection-start-line="64" selection-start-column="11" selection-end-line="64" selection-end-column="18" />
870
+        </state>
871
+      </provider>
872
+    </entry>
873
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ICameraService.java">
1015 874
       <provider selected="true" editor-type-id="text-editor">
1016
-        <state relative-caret-position="-1315">
1017
-          <caret line="331" column="37" selection-start-line="331" selection-start-column="20" selection-end-line="331" selection-end-column="37" />
875
+        <state relative-caret-position="95">
876
+          <caret line="7" column="11" selection-start-line="7" selection-start-column="11" selection-end-line="7" selection-end-column="11" />
1018 877
         </state>
1019 878
       </provider>
1020 879
     </entry>
1021 880
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java">
1022 881
       <provider selected="true" editor-type-id="text-editor">
1023
-        <state relative-caret-position="566">
1024
-          <caret line="166" lean-forward="true" selection-start-line="166" selection-end-line="166" />
882
+        <state relative-caret-position="180">
883
+          <caret line="87" selection-start-line="87" selection-end-line="87" />
1025 884
         </state>
1026 885
       </provider>
1027 886
     </entry>
1028
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaFirstUsherRecordServiceImpl.java">
887
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java">
1029 888
       <provider selected="true" editor-type-id="text-editor">
1030
-        <state relative-caret-position="228">
1031
-          <caret line="99" column="23" lean-forward="true" selection-start-line="99" selection-start-column="23" selection-end-line="99" selection-end-column="23" />
889
+        <state relative-caret-position="287">
890
+          <caret line="163" column="13" selection-start-line="163" selection-start-column="13" selection-end-line="163" selection-end-column="13" />
1032 891
         </state>
1033 892
       </provider>
1034 893
     </entry>
1035
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaWechatUserController.java">
894
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java">
1036 895
       <provider selected="true" editor-type-id="text-editor">
1037
-        <state relative-caret-position="176">
1038
-          <caret line="127" lean-forward="true" selection-start-line="127" selection-end-line="127" />
896
+        <state relative-caret-position="977">
897
+          <caret line="116" selection-start-line="116" selection-end-line="116" />
1039 898
         </state>
1040 899
       </provider>
1041 900
     </entry>
1042
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java">
901
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java">
902
+      <provider selected="true" editor-type-id="text-editor">
903
+        <state relative-caret-position="140">
904
+          <caret line="276" column="45" selection-start-line="276" selection-start-column="45" selection-end-line="276" selection-end-column="45" />
905
+          <folding>
906
+            <element signature="imports" expanded="true" />
907
+          </folding>
908
+        </state>
909
+      </provider>
910
+    </entry>
911
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AliFaceUtils.java">
912
+      <provider selected="true" editor-type-id="text-editor">
913
+        <state relative-caret-position="117">
914
+          <caret line="349" selection-start-line="349" selection-end-line="349" />
915
+          <folding>
916
+            <element signature="imports" expanded="true" />
917
+          </folding>
918
+        </state>
919
+      </provider>
920
+    </entry>
921
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java">
922
+      <provider selected="true" editor-type-id="text-editor">
923
+        <state relative-caret-position="130">
924
+          <caret line="27" column="23" selection-start-line="27" selection-start-column="18" selection-end-line="27" selection-end-column="23" />
925
+        </state>
926
+      </provider>
927
+    </entry>
928
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java">
1043 929
       <provider selected="true" editor-type-id="text-editor">
1044
-        <state relative-caret-position="35">
1045
-          <caret line="145" lean-forward="true" selection-start-line="145" selection-end-line="145" />
930
+        <state relative-caret-position="152">
931
+          <caret line="404" column="39" selection-start-line="404" selection-start-column="39" selection-end-line="404" selection-end-column="39" />
1046 932
         </state>
1047 933
       </provider>
1048 934
     </entry>

+ 73
- 75
src/main/java/com.huiju.welcome/controller/ImgController.java 查看文件

@@ -1,75 +1,73 @@
1
-package com.huiju.welcome.controller;
2
-
3
-import com.huiju.welcome.common.base.ResponseBean;
4
-import com.huiju.welcome.utils.AliFaceUtils;
5
-import com.huiju.welcome.utils.AliOSSUtils;
6
-import com.huiju.welcome.utils.TencentFaceUtils;
7
-import io.swagger.annotations.ApiOperation;
8
-import io.swagger.annotations.ApiParam;
9
-import org.apache.http.HttpStatus;
10
-import org.springframework.beans.factory.annotation.Autowired;
11
-import org.springframework.beans.factory.annotation.Value;
12
-import org.springframework.web.bind.annotation.GetMapping;
13
-import org.springframework.web.bind.annotation.PostMapping;
14
-import org.springframework.web.bind.annotation.RequestMapping;
15
-import org.springframework.web.bind.annotation.RequestParam;
16
-import org.springframework.web.bind.annotation.RestController;
17
-import org.springframework.web.multipart.MultipartFile;
18
-
19
-import java.io.File;
20
-import java.io.FileInputStream;
21
-import java.io.FileOutputStream;
22
-import java.io.IOException;
23
-
24
-/**
25
- * @author FXF
26
- * @date 2019-03-13
27
- */
28
-@RestController
29
-@RequestMapping("/")
30
-public class ImgController {
31
-
32
-	@Autowired
33
-	TencentFaceUtils tencentFaceUtils;
34
-	
35
-	@Autowired
36
-	private AliFaceUtils aliFaceUtils;
37
-
38
-	@GetMapping("/face")
39
-	public ResponseBean testUpload2Aliface() {
40
-		try {
41
-			//tencentFaceUtils.searchFace("https://estateagents.oss-cn-shanghai.aliyuncs.com/1561458925754-%E6%9C%AA%E7%9F%A5%E6%96%87%E4%BB%B6.jpg");
42
-			//return ResponseBean.success("");
43
-			//aliFaceUtils.createFace("10087","https://estateagents.oss-cn-shanghai.aliyuncs.com/1561458925754-%E6%9C%AA%E7%9F%A5%E6%96%87%E4%BB%B6.jpg");
44
-			return ResponseBean.success(aliFaceUtils.searchFace("https://estateagents.oss-cn-shanghai.aliyuncs.com/1561458925754-%E6%9C%AA%E7%9F%A5%E6%96%87%E4%BB%B6.jpg"));
45
-		} catch (Exception e) {
46
-			e.printStackTrace();
47
-		}
48
-		return ResponseBean.error("", 400);
49
-	}
50
-	
51
-	@ApiOperation(value = "图片/视频上传以及获取url", notes = "图片/视频上传以及获取url")
52
-	@PostMapping(value = "/uploadFile", consumes = "multipart/*", headers = "content-type=multipart/form-data")
53
-	public ResponseBean uploadFile(@ApiParam(value = "uploadFile" ,required = true) MultipartFile uploadFile){
54
-		String defaultUploadDir = "/";
55
-
56
-		try {
57
-			String img = AliOSSUtils.putObject(uploadFile, defaultUploadDir);
58
-			return ResponseBean.success(img);
59
-		} catch (IOException e) {
60
-			return ResponseBean.error("上传图片失败: " + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
61
-		}
62
-	}
63
-
64
-	@PostMapping("/miniapp/upload")
65
-	public ResponseBean uploadImage(@RequestParam("file") MultipartFile multipartFile) {
66
-		String defaultUploadDir = "/";
67
-
68
-		try {
69
-			String img = AliOSSUtils.putObject(multipartFile, defaultUploadDir);
70
-			return ResponseBean.success(img);
71
-		} catch (IOException e) {
72
-			return ResponseBean.error("上传图片失败: " + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
73
-		}
74
-	}
75
-}
1
+package com.huiju.welcome.controller;
2
+
3
+import com.huiju.welcome.common.base.ResponseBean;
4
+import com.huiju.welcome.utils.AliFaceUtils;
5
+import com.huiju.welcome.utils.AliOSSUtils;
6
+import com.huiju.welcome.utils.Encrypt;
7
+import com.huiju.welcome.utils.TencentFaceUtils;
8
+import io.swagger.annotations.ApiOperation;
9
+import io.swagger.annotations.ApiParam;
10
+import org.apache.http.HttpStatus;
11
+import org.springframework.beans.factory.annotation.Autowired;
12
+import org.springframework.beans.factory.annotation.Value;
13
+import org.springframework.web.bind.annotation.GetMapping;
14
+import org.springframework.web.bind.annotation.PostMapping;
15
+import org.springframework.web.bind.annotation.RequestMapping;
16
+import org.springframework.web.bind.annotation.RequestParam;
17
+import org.springframework.web.bind.annotation.RestController;
18
+import org.springframework.web.multipart.MultipartFile;
19
+
20
+import java.io.File;
21
+import java.io.FileInputStream;
22
+import java.io.FileOutputStream;
23
+import java.io.IOException;
24
+
25
+/**
26
+ * @author FXF
27
+ * @date 2019-03-13
28
+ */
29
+@RestController
30
+@RequestMapping("/")
31
+public class ImgController {
32
+
33
+	@Autowired
34
+	TencentFaceUtils tencentFaceUtils;
35
+	
36
+	@Autowired
37
+	private AliFaceUtils aliFaceUtils;
38
+
39
+	@GetMapping("/face")
40
+	public ResponseBean testUpload2Aliface() {
41
+		try {
42
+			return ResponseBean.success(aliFaceUtils.detectFace("https://estateagents.oss-cn-shanghai.aliyuncs.com/1562654830859-unknown.jpg"));
43
+		} catch (Exception e) {
44
+			e.printStackTrace();
45
+		}
46
+		return ResponseBean.error("", 400);
47
+	}
48
+	
49
+	@ApiOperation(value = "图片/视频上传以及获取url", notes = "图片/视频上传以及获取url")
50
+	@PostMapping(value = "/uploadFile", consumes = "multipart/*", headers = "content-type=multipart/form-data")
51
+	public ResponseBean uploadFile(@ApiParam(value = "uploadFile" ,required = true) MultipartFile uploadFile){
52
+		String defaultUploadDir = "/";
53
+
54
+		try {
55
+			String img = AliOSSUtils.putObject(uploadFile, defaultUploadDir);
56
+			return ResponseBean.success(img);
57
+		} catch (IOException e) {
58
+			return ResponseBean.error("上传图片失败: " + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
59
+		}
60
+	}
61
+
62
+	@PostMapping("/miniapp/upload")
63
+	public ResponseBean uploadImage(@RequestParam("file") MultipartFile multipartFile) {
64
+		String defaultUploadDir = "/";
65
+
66
+		try {
67
+			String img = AliOSSUtils.putObject(multipartFile, defaultUploadDir);
68
+			return ResponseBean.success(img);
69
+		} catch (IOException e) {
70
+			return ResponseBean.error("上传图片失败: " + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
71
+		}
72
+	}
73
+}

+ 218
- 218
src/main/java/com.huiju.welcome/controller/TaWechatUserController.java 查看文件

@@ -1,218 +1,218 @@
1
-package com.huiju.welcome.controller;
2
-
3
-import com.alibaba.fastjson.JSONObject;
4
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
-import com.baomidou.mybatisplus.core.metadata.IPage;
6
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
-import com.huiju.welcome.common.base.BaseController;
8
-import com.huiju.welcome.common.base.ResponseBean;
9
-import com.huiju.welcome.model.SysUser;
10
-import com.huiju.welcome.model.TaPerson;
11
-import com.huiju.welcome.model.TaWechatUser;
12
-import com.huiju.welcome.service.ISysUserService;
13
-import com.huiju.welcome.service.ITaPersonService;
14
-import com.huiju.welcome.service.ITaWechatUserService;
15
-import com.huiju.welcome.utils.CommConstant;
16
-import com.huiju.welcome.utils.JWTUtils;
17
-import com.huiju.welcome.utils.MiniApp;
18
-import com.huiju.welcome.utils.StatusUtils;
19
-import org.apache.http.HttpStatus;
20
-import org.slf4j.Logger;
21
-import org.slf4j.LoggerFactory;
22
-import org.springframework.beans.factory.annotation.Autowired;
23
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
24
-import org.springframework.web.bind.annotation.*;
25
-
26
-import javax.servlet.http.HttpServletRequest;
27
-import java.time.LocalDateTime;
28
-import java.util.HashMap;
29
-import java.util.Map;
30
-
31
-/**
32
- * <p>
33
-    *  前端控制器
34
-    * </p>
35
- *
36
- * @author jobob
37
- * @since 2019-06-11
38
- */
39
-@RestController
40
-@RequestMapping("/miniapp")
41
-public class TaWechatUserController extends BaseController {
42
-
43
-    private final Logger logger = LoggerFactory.getLogger(TaWechatUserController.class);
44
-
45
-    @Autowired
46
-    private MiniApp miniApp;
47
-
48
-    @Autowired
49
-    private ITaWechatUserService iTaWechatUserService;
50
-
51
-    @Autowired
52
-    private ITaPersonService iTaPersonService;
53
-
54
-    @Autowired
55
-    private ISysUserService iSysUserService;
56
-
57
-    @GetMapping("/login")
58
-    public ResponseBean login(@RequestParam String code) {
59
-        ResponseBean resp = miniApp.getOpenid(code);
60
-        if (resp.getCode() != 200) {
61
-            return resp;
62
-        }
63
-
64
-        JSONObject data = (JSONObject) resp.getData();
65
-        String openid = data.getString("openid");
66
-        String sessionKey = data.getString("session_key");
67
-        String unionId = data.getString("unionid");
68
-        String appid = miniApp.getAppid();
69
-
70
-        Map<String, Object> map = new HashMap<>();
71
-        map.put("openid", openid);
72
-        map.put("sessionKey", sessionKey);
73
-        map.put("unionId", unionId);
74
-        map.put("appid", appid);
75
-
76
-        // 如果已经存在的用户, 直接返回
77
-        TaWechatUser taWechatUser = iTaWechatUserService.getByOpenid(openid, appid);
78
-        if (null == taWechatUser) {
79
-            // 否则新增用户数据
80
-            taWechatUser = new TaWechatUser();
81
-            taWechatUser.setAppid(appid);
82
-            taWechatUser.setClientType(CommConstant.WECHAT_CLIENT_MINIAPP);
83
-            taWechatUser.setOpenid(openid);
84
-            taWechatUser.setUnionId(unionId);
85
-            taWechatUser.setStatus(StatusUtils.Normal);
86
-            taWechatUser.setCreateDate(LocalDateTime.now());
87
-
88
-            boolean success = iTaWechatUserService.save(taWechatUser);
89
-            if (!success) {
90
-                return ResponseBean.error("预存用户信息失败", HttpStatus.SC_INTERNAL_SERVER_ERROR);
91
-            }
92
-        }
93
-
94
-        if (null != taWechatUser.getPersonId()) {
95
-            SysUser sysUser = iSysUserService.getById(taWechatUser.getPersonId());
96
-            map.put("identity", sysUser.getUserIdentity());
97
-        }
98
-
99
-        map.put("user", taWechatUser);
100
-        map.put("token", JWTUtils.newToken(taWechatUser.getUserId() + ""));
101
-        return ResponseBean.success(map);
102
-    }
103
-
104
-    @PostMapping("/bind")
105
-    public ResponseBean bind(@RequestBody String paramStr, HttpServletRequest request) {
106
-        String userId = JWTUtils.getSubject(request);
107
-        TaWechatUser taWechatUser = iTaWechatUserService.getById(Integer.valueOf(userId));
108
-
109
-        if (null == taWechatUser) {
110
-            return ResponseBean.error("数据异常, 请清空缓存后重新操作", HttpStatus.SC_INTERNAL_SERVER_ERROR);
111
-        }
112
-
113
-        if (null != taWechatUser.getPersonId()) {
114
-            return ResponseBean.error("不支持人员重复绑定", HttpStatus.SC_BAD_REQUEST);
115
-        }
116
-
117
-        JSONObject params = JSONObject.parseObject(paramStr);
118
-        if (null == params) {
119
-            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
120
-        }
121
-
122
-        String phone = params.getString("phone");
123
-        String captcha = params.getString("captcha");
124
-
125
-        if (null == phone || "".equals(phone.trim()) || null == captcha || "".equals(captcha.trim())) {
126
-            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
127
-        }
128
-
129
-        // todo
130
-        // 先简单验证
131
-        if (!"1234".equals(captcha)) {
132
-            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
133
-        }
134
-
135
-        SysUser sysUser = iSysUserService.getByPhone(phone);
136
-        if (null == sysUser) {
137
-            return ResponseBean.error("该手机号对应人员不存在", HttpStatus.SC_BAD_REQUEST);
138
-        }
139
-
140
-        taWechatUser.setPersonId(sysUser.getUserId());
141
-        boolean success = iTaWechatUserService.updateById(taWechatUser);
142
-
143
-        if (!success) {
144
-            return ResponseBean.error("人员绑定失败", HttpStatus.SC_INTERNAL_SERVER_ERROR);
145
-        }
146
-
147
-        Map<String, Object> map = new HashMap<>();
148
-        map.put("user", taWechatUser);
149
-        map.put("identity", sysUser.getUserIdentity());
150
-
151
-        return ResponseBean.success(taWechatUser);
152
-    }
153
-
154
-    /**
155
-     * 修改对象
156
-     * @param taWechatUser 实体对象
157
-     * @return
158
-     */
159
-    @RequestMapping(value="/user/{id}",method= RequestMethod.PUT)
160
-    public ResponseBean update(@RequestBody TaWechatUser taWechatUser, @PathVariable Integer id){
161
-        ResponseBean responseBean = new ResponseBean();
162
-        try {
163
-            if (iTaWechatUserService.updateById(taWechatUser)){
164
-                responseBean.addSuccess("success");
165
-            }else {
166
-                responseBean.addError("fail");
167
-            }
168
-        }catch (Exception e){
169
-            logger.error("taWechatUserUpdate -=- {}",e.toString());
170
-            responseBean.addError(e.getMessage());
171
-        }
172
-        return responseBean;
173
-    }
174
-
175
-    /**
176
-     * 根据id查询对象
177
-     * @param id  实体ID
178
-     */
179
-    @RequestMapping(value="/user/{id}",method= RequestMethod.GET)
180
-    public ResponseBean get(@PathVariable Integer id, HttpServletRequest request){
181
-        ResponseBean responseBean = new ResponseBean();
182
-        try {
183
-            if (id.intValue() == 0) {
184
-                String userId = JWTUtils.getSubject(request);
185
-                responseBean.addSuccess(iTaWechatUserService.getById(Integer.valueOf(userId)));
186
-            } else {
187
-                responseBean.addSuccess(iTaWechatUserService.getById(id));
188
-            }
189
-        }catch (Exception e){
190
-            logger.error("taWechatUserGetByID -=- {}",e.toString());
191
-            responseBean.addError(e.getMessage());
192
-        }
193
-        return responseBean;
194
-    }
195
-
196
-    /**
197
-     * 分页查询
198
-     */
199
-    @RequestMapping(value="/user",method= RequestMethod.GET)
200
-    public ResponseBean list(
201
-        @RequestParam(defaultValue = "1") int pageNumber,
202
-        @RequestParam(defaultValue = "10") int pageSize
203
-    ){
204
-        ResponseBean responseBean = new ResponseBean();
205
-        try {
206
-            IPage<TaWechatUser> pg = new Page<>(pageNumber, pageSize);
207
-            QueryWrapper<TaWechatUser> queryWrapper = new QueryWrapper<>();
208
-            queryWrapper.orderByDesc("create_date");
209
-
210
-            IPage<TaWechatUser> result = iTaWechatUserService.page(pg, queryWrapper);
211
-            responseBean.addSuccess(result);
212
-        }catch (Exception e){
213
-            logger.error("taWechatUserList -=- {}",e.toString());
214
-            responseBean.addError(e.getMessage());
215
-        }
216
-        return responseBean;
217
-    }
218
-}
1
+package com.huiju.welcome.controller;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.metadata.IPage;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
+import com.huiju.welcome.common.base.BaseController;
8
+import com.huiju.welcome.common.base.ResponseBean;
9
+import com.huiju.welcome.model.SysUser;
10
+import com.huiju.welcome.model.TaPerson;
11
+import com.huiju.welcome.model.TaWechatUser;
12
+import com.huiju.welcome.service.ISysUserService;
13
+import com.huiju.welcome.service.ITaPersonService;
14
+import com.huiju.welcome.service.ITaWechatUserService;
15
+import com.huiju.welcome.utils.CommConstant;
16
+import com.huiju.welcome.utils.JWTUtils;
17
+import com.huiju.welcome.utils.MiniApp;
18
+import com.huiju.welcome.utils.StatusUtils;
19
+import org.apache.http.HttpStatus;
20
+import org.slf4j.Logger;
21
+import org.slf4j.LoggerFactory;
22
+import org.springframework.beans.factory.annotation.Autowired;
23
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
24
+import org.springframework.web.bind.annotation.*;
25
+
26
+import javax.servlet.http.HttpServletRequest;
27
+import java.time.LocalDateTime;
28
+import java.util.HashMap;
29
+import java.util.Map;
30
+
31
+/**
32
+ * <p>
33
+    *  前端控制器
34
+    * </p>
35
+ *
36
+ * @author jobob
37
+ * @since 2019-06-11
38
+ */
39
+@RestController
40
+@RequestMapping("/miniapp")
41
+public class TaWechatUserController extends BaseController {
42
+
43
+    private final Logger logger = LoggerFactory.getLogger(TaWechatUserController.class);
44
+
45
+    @Autowired
46
+    private MiniApp miniApp;
47
+
48
+    @Autowired
49
+    private ITaWechatUserService iTaWechatUserService;
50
+
51
+    @Autowired
52
+    private ITaPersonService iTaPersonService;
53
+
54
+    @Autowired
55
+    private ISysUserService iSysUserService;
56
+
57
+    @GetMapping("/login")
58
+    public ResponseBean login(@RequestParam String code) {
59
+        ResponseBean resp = miniApp.getOpenid(code);
60
+        if (resp.getCode() != 200) {
61
+            return resp;
62
+        }
63
+
64
+        JSONObject data = (JSONObject) resp.getData();
65
+        String openid = data.getString("openid");
66
+        String sessionKey = data.getString("session_key");
67
+        String unionId = data.getString("unionid");
68
+        String appid = miniApp.getAppid();
69
+
70
+        Map<String, Object> map = new HashMap<>();
71
+        map.put("openid", openid);
72
+        map.put("sessionKey", sessionKey);
73
+        map.put("unionId", unionId);
74
+        map.put("appid", appid);
75
+
76
+        // 如果已经存在的用户, 直接返回
77
+        TaWechatUser taWechatUser = iTaWechatUserService.getByOpenid(openid, appid);
78
+        if (null == taWechatUser) {
79
+            // 否则新增用户数据
80
+            taWechatUser = new TaWechatUser();
81
+            taWechatUser.setAppid(appid);
82
+            taWechatUser.setClientType(CommConstant.WECHAT_CLIENT_MINIAPP);
83
+            taWechatUser.setOpenid(openid);
84
+            taWechatUser.setUnionId(unionId);
85
+            taWechatUser.setStatus(StatusUtils.Normal);
86
+            taWechatUser.setCreateDate(LocalDateTime.now());
87
+
88
+            boolean success = iTaWechatUserService.save(taWechatUser);
89
+            if (!success) {
90
+                return ResponseBean.error("预存用户信息失败", HttpStatus.SC_INTERNAL_SERVER_ERROR);
91
+            }
92
+        }
93
+
94
+        if (null != taWechatUser.getPersonId()) {
95
+            SysUser sysUser = iSysUserService.getById(taWechatUser.getPersonId());
96
+            map.put("identity", sysUser.getUserIdentity());
97
+        }
98
+
99
+        map.put("user", taWechatUser);
100
+        map.put("token", JWTUtils.newToken(taWechatUser.getUserId() + ""));
101
+        return ResponseBean.success(map);
102
+    }
103
+
104
+    @PostMapping("/bind")
105
+    public ResponseBean bind(@RequestBody String paramStr, HttpServletRequest request) {
106
+        String userId = JWTUtils.getSubject(request);
107
+        TaWechatUser taWechatUser = iTaWechatUserService.getById(Integer.valueOf(userId));
108
+
109
+        if (null == taWechatUser) {
110
+            return ResponseBean.error("数据异常, 请清空缓存后重新操作", HttpStatus.SC_INTERNAL_SERVER_ERROR);
111
+        }
112
+
113
+        if (null != taWechatUser.getPersonId()) {
114
+            return ResponseBean.error("不支持人员重复绑定", HttpStatus.SC_BAD_REQUEST);
115
+        }
116
+
117
+        JSONObject params = JSONObject.parseObject(paramStr);
118
+        if (null == params) {
119
+            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
120
+        }
121
+
122
+        String phone = params.getString("phone");
123
+        String captcha = params.getString("captcha");
124
+
125
+        if (null == phone || "".equals(phone.trim()) || null == captcha || "".equals(captcha.trim())) {
126
+            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
127
+        }
128
+
129
+        // todo
130
+        // 先简单验证
131
+        if (!"1234".equals(captcha)) {
132
+            return ResponseBean.error("绑定参数为空或者非法", HttpStatus.SC_BAD_REQUEST);
133
+        }
134
+
135
+        SysUser sysUser = iSysUserService.getByPhone(phone);
136
+        if (null == sysUser) {
137
+            return ResponseBean.error("该手机号对应人员不存在", HttpStatus.SC_BAD_REQUEST);
138
+        }
139
+
140
+        taWechatUser.setPersonId(sysUser.getUserId());
141
+        boolean success = iTaWechatUserService.updateById(taWechatUser);
142
+
143
+        if (!success) {
144
+            return ResponseBean.error("人员绑定失败", HttpStatus.SC_INTERNAL_SERVER_ERROR);
145
+        }
146
+
147
+        Map<String, Object> map = new HashMap<>();
148
+        map.put("user", taWechatUser);
149
+        map.put("identity", sysUser.getUserIdentity());
150
+
151
+        return ResponseBean.success(map);
152
+    }
153
+
154
+    /**
155
+     * 修改对象
156
+     * @param taWechatUser 实体对象
157
+     * @return
158
+     */
159
+    @RequestMapping(value="/user/{id}",method= RequestMethod.PUT)
160
+    public ResponseBean update(@RequestBody TaWechatUser taWechatUser, @PathVariable Integer id){
161
+        ResponseBean responseBean = new ResponseBean();
162
+        try {
163
+            if (iTaWechatUserService.updateById(taWechatUser)){
164
+                responseBean.addSuccess("success");
165
+            }else {
166
+                responseBean.addError("fail");
167
+            }
168
+        }catch (Exception e){
169
+            logger.error("taWechatUserUpdate -=- {}",e.toString());
170
+            responseBean.addError(e.getMessage());
171
+        }
172
+        return responseBean;
173
+    }
174
+
175
+    /**
176
+     * 根据id查询对象
177
+     * @param id  实体ID
178
+     */
179
+    @RequestMapping(value="/user/{id}",method= RequestMethod.GET)
180
+    public ResponseBean get(@PathVariable Integer id, HttpServletRequest request){
181
+        ResponseBean responseBean = new ResponseBean();
182
+        try {
183
+            if (id.intValue() == 0) {
184
+                String userId = JWTUtils.getSubject(request);
185
+                responseBean.addSuccess(iTaWechatUserService.getById(Integer.valueOf(userId)));
186
+            } else {
187
+                responseBean.addSuccess(iTaWechatUserService.getById(id));
188
+            }
189
+        }catch (Exception e){
190
+            logger.error("taWechatUserGetByID -=- {}",e.toString());
191
+            responseBean.addError(e.getMessage());
192
+        }
193
+        return responseBean;
194
+    }
195
+
196
+    /**
197
+     * 分页查询
198
+     */
199
+    @RequestMapping(value="/user",method= RequestMethod.GET)
200
+    public ResponseBean list(
201
+        @RequestParam(defaultValue = "1") int pageNumber,
202
+        @RequestParam(defaultValue = "10") int pageSize
203
+    ){
204
+        ResponseBean responseBean = new ResponseBean();
205
+        try {
206
+            IPage<TaWechatUser> pg = new Page<>(pageNumber, pageSize);
207
+            QueryWrapper<TaWechatUser> queryWrapper = new QueryWrapper<>();
208
+            queryWrapper.orderByDesc("create_date");
209
+
210
+            IPage<TaWechatUser> result = iTaWechatUserService.page(pg, queryWrapper);
211
+            responseBean.addSuccess(result);
212
+        }catch (Exception e){
213
+            logger.error("taWechatUserList -=- {}",e.toString());
214
+            responseBean.addError(e.getMessage());
215
+        }
216
+        return responseBean;
217
+    }
218
+}

+ 52
- 22
src/main/java/com.huiju.welcome/service/impl/TaCarRecordServiceImpl.java 查看文件

@@ -59,6 +59,9 @@ public class TaCarRecordServiceImpl extends ServiceImpl<TaCarRecordMapper, TaCar
59 59
     @Autowired
60 60
     private ISysParamService iSysParamService;
61 61
 
62
+    @Autowired
63
+    private ICameraService iCameraService;
64
+
62 65
     @Autowired
63 66
     private ITaVisitorAppointmentService iTaVisitorAppointmentService;
64 67
 
@@ -94,17 +97,20 @@ public class TaCarRecordServiceImpl extends ServiceImpl<TaCarRecordMapper, TaCar
94 97
         List<TaCustomer> taCustomerList = iTaCustomerService.getSomeCustMayBe(taCarRecord.getPlateNumber());
95 98
 
96 99
         // 如果没有对应人员
100
+        Integer personId = null;
97 101
         if (null == taCustomerList || taCustomerList.size() == 0) {
98 102
             // 再去人脸库比对一次
99
-            Integer personId = null;
100
-            try {
101
-                Float threshold = iSysParamService.getSamePersonThreshold();
102
-                JSONObject result = aliFaceUtils.searchFace(taCarRecord.getDriverImage());
103
-                if (result.getFloat("rate") >= threshold) {
104
-                    personId = Integer.valueOf(result.getString("personId"));
103
+            if (null != taCarRecord.getDriverImage() && aliFaceUtils.detectFace(taCarRecord.getDriverImage())) {
104
+                try {
105
+                    Float threshold = iSysParamService.getSamePersonThreshold();
106
+                    JSONObject result = aliFaceUtils.searchFace(taCarRecord.getDriverImage());
107
+
108
+                    if (null != result && result.getFloat("rate") * 100 >= threshold) {
109
+                        personId = Integer.valueOf(result.getString("personId"));
110
+                    }
111
+                } catch (Exception e) {
112
+                    e.printStackTrace();
105 113
                 }
106
-            } catch (Exception e) {
107
-                e.printStackTrace();
108 114
             }
109 115
 
110 116
             // 依据人脸与预约判断
@@ -143,26 +149,50 @@ public class TaCarRecordServiceImpl extends ServiceImpl<TaCarRecordMapper, TaCar
143 149
         } else {
144 150
             // 对应客户, 先随机取一条
145 151
             taCustomer = taCustomerList.get(0);
152
+        }
146 153
 
147
-            // 新增人脸
148
-            if (null != taCarRecord.getDriverImage()) {
149
-                TaPerson person = new TaPerson();
154
+        // 新增人脸
155
+        if (null != taCarRecord.getDriverImage() && aliFaceUtils.detectFace(taCarRecord.getDriverImage())) {
156
+            TaPerson person = new TaPerson();
157
+            if (null != taCustomer) {
150 158
                 person.setRealId(taCustomer.getCustomerId());
151 159
                 person.setPhone(taCustomer.getPhone());
152 160
                 person.setName(taCustomer.getCustomerName());
153
-                person.setSex(String.valueOf(taCustomer.getSex()));
154
-                person.setTypeId(CommConstant.TYPE_VIP_PERSON);
155
-                person.setStatus(StatusUtils.Normal);
156
-                person.setCreateDate(LocalDateTime.now());
157
-                boolean success = iTaPersonService.save(person);
158
-
159
-                if (success) {
160
-                    TaCustomerMap mp = new TaCustomerMap();
161
-                    mp.setCustomerId(taCustomer.getCustomerId());
162
-                    mp.setPersonId(person.getPersonId());
163
-                    iTaCustomerMapService.save(mp);
161
+                if (null != taCustomer.getSex()) {
162
+                    person.setSex(String.valueOf(taCustomer.getSex()));
163
+                }
164
+            }
165
+            person.setTypeId(CommConstant.TYPE_VIP_PERSON);
166
+            person.setStatus(StatusUtils.Normal);
167
+            person.setCreateDate(LocalDateTime.now());
168
+            person.setAvatar(taCarRecord.getDriverImage());
169
+            if (null != personId) {
170
+                TaPerson psn = iTaPersonService.getById(personId);
171
+                if (null != psn) {
172
+                    person.setRealId(psn.getRealId());
164 173
                 }
165 174
             }
175
+
176
+            boolean success = iTaPersonService.save(person);
177
+
178
+            if (success && null != taCustomer) {
179
+                TaCustomerMap mp = new TaCustomerMap();
180
+                mp.setCustomerId(taCustomer.getCustomerId());
181
+                mp.setPersonId(person.getPersonId());
182
+                iTaCustomerMapService.save(mp);
183
+            }
184
+
185
+            if (null == person.getRealId()) {
186
+                person.setRealId(person.getPersonId());
187
+                iTaPersonService.updateById(person);
188
+            }
189
+
190
+            try {
191
+                iCameraService.dispatchPerson(person);
192
+            } catch (Exception e) {
193
+                log.error("下发驾驶员人脸失败: {}", e.getMessage());
194
+                e.printStackTrace();
195
+            }
166 196
         }
167 197
 
168 198
         // 先入库

+ 4
- 2
src/main/java/com.huiju.welcome/service/impl/TaMainUsherRecordServiceImpl.java 查看文件

@@ -275,8 +275,10 @@ public class TaMainUsherRecordServiceImpl extends ServiceImpl<TaMainUsherRecordM
275 275
         } else if (null != taMainUsherRecord.getAvatar()) {
276 276
             // 依据人脸查询
277 277
             JSONObject result = aliFaceUtils.searchFace(taMainUsherRecord.getAvatar());
278
-            Integer personId = Integer.valueOf(result.getString("personId"));
279
-            taCustomer = iTaCustomerService.getSameByPerson(personId);
278
+            if (null != result) {
279
+                Integer personId = Integer.valueOf(result.getString("personId"));
280
+                taCustomer = iTaCustomerService.getSameByPerson(personId);
281
+            }
280 282
         }
281 283
 
282 284
         if (null == taCustomer && null == taMainUsherRecord.getCustomerId()) {

+ 2
- 1
src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java 查看文件

@@ -336,6 +336,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
336 336
         person.setStatus(StatusUtils.Normal);
337 337
         person.setLastVisiteDate(taSnapshotPerson.getCreateDate());
338 338
         person.setLastVisiteDevice(taSnapshotPerson.getDeviceId());
339
+        person.setCreateDate(LocalDateTime.now());
339 340
 
340 341
         Integer sex = taSnapshotPerson.getSex();
341 342
         person.setSex(null == sex || sex == 0 ? null : String.valueOf(sex));
@@ -401,7 +402,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
401 402
         Map<String,Object> data = new HashMap<>();
402 403
         data.put("person",taPerson);
403 404
         data.put("taVisitingWords",taVisitingWords);
404
-        data.put("audio", xfYun.voice( personName + "," + words, sex  == 2 ? 1 : 2));
405
+        data.put("audio", xfYun.voice( words, sex  == 2 ? 1 : 2));
405 406
 
406 407
         Map<String, Object> payload = new HashMap<>();
407 408
         payload.put("to", deviceId);

+ 92
- 1
src/main/java/com.huiju.welcome/utils/AliFaceUtils.java 查看文件

@@ -25,8 +25,14 @@ import org.apache.http.HttpStatus;
25 25
 import org.springframework.beans.factory.annotation.Autowired;
26 26
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
27 27
 import org.springframework.context.annotation.Configuration;
28
+import org.springframework.http.HttpEntity;
29
+import org.springframework.http.HttpHeaders;
30
+import org.springframework.http.MediaType;
31
+import org.springframework.web.client.RestTemplate;
28 32
 
29 33
 import java.io.UnsupportedEncodingException;
34
+import java.net.MalformedURLException;
35
+import java.net.URL;
30 36
 import java.util.ArrayList;
31 37
 import java.util.Arrays;
32 38
 import java.util.Date;
@@ -55,6 +61,54 @@ public class AliFaceUtils {
55 61
         IClientProfile iClientProfile = DefaultProfile.getProfile(AliProperties.face.getRegionId(), AliProperties.accessKeyId, AliProperties.accessKeySecret);
56 62
         recognitionClient = new DefaultAcsClient(iClientProfile);
57 63
     }
64
+
65
+    /**
66
+     * 检测照片中是否有人脸
67
+     * @param image
68
+     * @return
69
+     */
70
+    public boolean detectFace(String image)  {
71
+        if (null == image) return false;
72
+
73
+        log.info("阿里云开始检测是否有人脸");
74
+        log.info("人脸图 {}", image);
75
+
76
+        String url = "https://dtplus-cn-shanghai.data.aliyuncs.com/face/detect";
77
+        Date now = new Date();
78
+        String gmtStr = DateUtils.toGMTString(now);
79
+
80
+        Map<String, Object> sendData = new HashMap<String, Object>();
81
+        sendData.put("type", 0);
82
+        sendData.put("image_url", image);
83
+        String sendJSON = JSONObject.toJSONString(sendData);
84
+
85
+        HttpHeaders headers = new HttpHeaders();
86
+        headers.setContentType(MediaType.APPLICATION_JSON);
87
+        headers.set("accept", MediaType.APPLICATION_JSON_VALUE);
88
+        headers.set("date", gmtStr);
89
+        headers.set("Authorization", "Dataplus "+ getSignature(url, "POST", MediaType.APPLICATION_JSON_VALUE, gmtStr, sendJSON));
90
+
91
+        RestTemplate restTemplate = new RestTemplate();
92
+        HttpEntity<String> request = new HttpEntity<>(sendJSON, headers);
93
+        String resp ="";
94
+        try{
95
+            resp = restTemplate.postForEntity(url, request, String.class).getBody();
96
+
97
+            JSONObject result = JSONObject.parseObject(resp);
98
+
99
+            Integer faceNum = result.getInteger("face_num");
100
+
101
+            log.info("人脸数目: {}", faceNum);
102
+
103
+            return null != faceNum && faceNum > 0;
104
+        }catch (Exception e){
105
+            log.error("检测人脸失败: {}", e.getMessage());
106
+            e.printStackTrace();
107
+        }
108
+
109
+        log.info("未检测到人脸");
110
+        return false;
111
+    }
58 112
     
59 113
     /**
60 114
      * 获取用户信息
@@ -291,9 +345,18 @@ public class AliFaceUtils {
291 345
                             JSONArray sceneResults = ((JSONObject)taskResult).getJSONArray("results");
292 346
                             for (Object sceneResult : sceneResults) {
293 347
                                 JSONArray personList = ((JSONObject) sceneResult).getJSONArray("topPersonData");
348
+                                log.info("查询阿里云人脸结果: {}", personList);
294 349
 
295 350
                                 if (null != personList && personList.size() > 0) {
296
-                                    return personList.getJSONObject(0).getJSONArray("persons").getJSONObject(0);
351
+                                    JSONArray persons = personList.getJSONObject(0).getJSONArray("persons");
352
+                                    if (null != persons && persons.size() > 0) {
353
+                                        JSONObject person = persons.getJSONObject(0);
354
+                                        if (null != person.getString("personId") && !"null".equals(person.getString("personId"))) {
355
+                                            return person;
356
+                                        } else if (persons.size() > 1) {
357
+                                            return persons.getJSONObject(1);
358
+                                        }
359
+                                    }
297 360
                                 }
298 361
                             }
299 362
                         }else{
@@ -400,4 +463,32 @@ public class AliFaceUtils {
400 463
         request.putBodyParameter("Group", AliProperties.face.getGroup());
401 464
         return request;
402 465
     }
466
+
467
+    private String getSignature(String url, String method, String contentType, String gmtStr, String data) {
468
+        URL realURL = null;
469
+        try {
470
+            realURL = new URL(url);
471
+        } catch (MalformedURLException e) {
472
+            log.error("解析 URL 失败: {}", e.getMessage());
473
+            e.printStackTrace();
474
+            return null;
475
+        }
476
+        String path = realURL.getFile();
477
+
478
+        String[] parts = new String[]{
479
+                method,
480
+                contentType,
481
+                Encrypt.MD5Base64(data),
482
+                contentType,
483
+                gmtStr,
484
+                path
485
+        };
486
+
487
+        String str2Sign = String.join("\n", parts);
488
+        log.info("---string to sign ===> {}", str2Sign);
489
+
490
+        String signature = AliProperties.accessKeyId + ":" + Encrypt.HMACSha1(str2Sign, AliProperties.accessKeySecret);
491
+        log.info("---signature ===> {}", signature);
492
+        return signature;
493
+    }
403 494
 }

+ 8
- 0
src/main/java/com.huiju.welcome/utils/DateUtils.java 查看文件

@@ -1,10 +1,12 @@
1 1
 package com.huiju.welcome.utils;
2 2
 
3
+import java.text.SimpleDateFormat;
3 4
 import java.time.Instant;
4 5
 import java.time.LocalDateTime;
5 6
 import java.time.ZoneId;
6 7
 import java.time.format.DateTimeFormatter;
7 8
 import java.util.Date;
9
+import java.util.Locale;
8 10
 
9 11
 public class DateUtils {
10 12
     public static LocalDateTime date2LocalDateTime(Date date) {
@@ -48,4 +50,10 @@ public class DateUtils {
48 50
 
49 51
         return LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), Integer.valueOf(parts[0]), Integer.valueOf(parts[1]));
50 52
     }
53
+
54
+    public static String toGMTString(Date date) {
55
+        SimpleDateFormat df = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK);
56
+        df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));
57
+        return df.format(date);
58
+    }
51 59
 }

+ 40
- 0
src/main/java/com.huiju.welcome/utils/Encrypt.java 查看文件

@@ -2,12 +2,18 @@ package com.huiju.welcome.utils;
2 2
 
3 3
 import org.apache.commons.codec.binary.Base64;
4 4
 import org.springframework.util.DigestUtils;
5
+import sun.misc.BASE64Encoder;
5 6
 
7
+import javax.crypto.Mac;
8
+import javax.crypto.spec.SecretKeySpec;
6 9
 import java.io.UnsupportedEncodingException;
7 10
 import java.net.URLEncoder;
11
+import java.security.MessageDigest;
8 12
 
9 13
 public class Encrypt {
10 14
     public static String md5(String str, String ...salt) {
15
+        if (null == str) return null;
16
+
11 17
         byte[] secBytes = null;
12 18
 
13 19
         String plainText = str;
@@ -19,6 +25,8 @@ public class Encrypt {
19 25
     }
20 26
 
21 27
     public static String base64(String str) {
28
+        if (null == str) return "";
29
+
22 30
         String rtn = "";
23 31
         try {
24 32
             rtn = new String(Base64.encodeBase64(str.getBytes("UTF-8")));
@@ -38,4 +46,36 @@ public class Encrypt {
38 46
         }
39 47
         return rtn;
40 48
     }
49
+
50
+    public static String HMACSha1(String data, String key) {
51
+        String result;
52
+        try {
53
+            SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1");
54
+            Mac mac = Mac.getInstance("HmacSHA1");
55
+            mac.init(signingKey);
56
+            byte[] rawHmac = mac.doFinal(data.getBytes());
57
+            result =  new String(Base64.encodeBase64(rawHmac));
58
+        } catch (Exception e) {
59
+            throw new Error("Failed to generate HMAC : " + e.getMessage());
60
+        }
61
+        return result;
62
+    }
63
+
64
+    public static String MD5Base64(String s) {
65
+        if (s == null)
66
+            return null;
67
+        String encodeStr = "";
68
+        byte[] utfBytes = s.getBytes();
69
+        MessageDigest mdTemp;
70
+        try {
71
+            mdTemp = MessageDigest.getInstance("MD5");
72
+            mdTemp.update(utfBytes);
73
+            byte[] md5Bytes = mdTemp.digest();
74
+            BASE64Encoder b64Encoder = new BASE64Encoder();
75
+            encodeStr = b64Encoder.encode(md5Bytes);
76
+        } catch (Exception e) {
77
+            throw new Error("Failed to generate MD5 : " + e.getMessage());
78
+        }
79
+        return encodeStr;
80
+    }
41 81
 }