jiangping
2025-04-18 daa04a061ac3be4bb812c26fcf8f1b62838cec5a
代码初始化
已添加10个文件
已删除210个文件
已修改15个文件
3683 ■■■■ 文件已修改
.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_alibaba_druid_1_2_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_alibaba_fastjson_1_2_70.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_baomidou_mybatis_plus_spring_boot_autoconfigure_3_5_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_yaml_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_oshi_oshi_core_5_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_pagehelper_pagehelper_6_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_autoconfigure_2_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_starter_2_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_virtuald_curvesapi_1_06.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_starter_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_3_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_1_4_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_annotation_1_4_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_boot_starter_1_4_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_core_1_4_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_2_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_guava_guava_27_0_1_android.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_sun_mail_jakarta_mail_1_6_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_codec_commons_codec_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_fileupload_commons_fileupload_1_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_io_commons_io_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_net_commons_net_3_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__de_rototor_pdfbox_graphics2d_0_30.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_github_classgraph_classgraph_4_8_83.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_lettuce_lettuce_core_5_2_2_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_buffer_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_common_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_handler_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_reactor_core_3_3_3_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_bean_validators_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_boot_starter_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_core_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_data_rest_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_oas_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_schema_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_spi_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_spring_web_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_spring_webflux_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_swagger2_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_swagger_common_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_springfox_springfox_swagger_ui_3_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_swagger_core_v3_swagger_annotations_2_1_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_swagger_core_v3_swagger_models_2_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_swagger_swagger_core_1_5_22.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__javax_servlet_javax_servlet_api_4_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__mysql_mysql_connector_java_8_0_19.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_8.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__net_java_dev_jna_jna_5_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__net_java_dev_jna_jna_platform_5_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_pdfbox_fontbox_2_0_22.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_pdfbox_pdfbox_2_0_22.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_poi_poi_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_santuario_xmlsec_2_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_event_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_shiro_shiro_web_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_31.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_31.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_31.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_4_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_all_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_extension_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_gui_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_slideshow_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgbrowser_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgpp_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgrasterizer_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_swing_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_ttf2svg_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_68.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_68.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_checkerframework_checker_compat_qual_2_5_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_17.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_javassist_javassist_3_25_0_GA.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_mapstruct_mapstruct_1_3_1_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_mybatis_mybatis_3_5_16.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_mybatis_mybatis_spring_2_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_30.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_mail_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_2_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_aop_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_beans_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_context_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_context_support_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_core_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_expression_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_jcl_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_oxm_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_tx_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_web_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__xalan_serializer_2_7_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__xalan_xalan_2_7_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/img/home_func1.2273dcea.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/img/home_func2.9c9be0b6.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/img/home_func3.507ca9bd.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/img/home_func4.e6510cdc.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/package-lock.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/package.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/common.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/Header.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/utils/request/decryption.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/utils/request/encrypt.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/utils/request/index.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/system/SystemController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/annotation/EncryptionReq.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/annotation/EncryptionResp.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/interfaceencryption/DecryptRequestBodyAdvice.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/interfaceencryption/EncryptResponseBodyAdvice.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/interfaceencryption/InterfaceEncryptionMvcConfig.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/interfaceencryption/tool/RSAEncrypt.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/interfaceencryption/tool/RSAEncryptTest.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/AESUtils.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-dev.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-pro.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-test.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_alibaba_druid_1_2_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_alibaba_fastjson_1_2_70.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_baomidou_mybatis_plus_spring_boot_autoconfigure_3_5_7.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_yaml_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_2_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_9.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_oshi_oshi_core_5_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_pagehelper_pagehelper_6_1_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_autoconfigure_2_1_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_starter_2_1_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_virtuald_curvesapi_1_06.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_starter_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_3_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_1_4_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_annotation_1_4_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_boot_starter_1_4_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_yulichang_mybatis_plus_join_core_1_4_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_2_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_guava_failureaccess_1_0_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_guava_guava_27_0_1_android.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_sun_mail_jakarta_mail_1_6_4.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_codec_commons_codec_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_fileupload_commons_fileupload_1_4.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_io_commons_io_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__commons_net_commons_net_3_8_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__de_rototor_pdfbox_graphics2d_0_30.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_github_classgraph_classgraph_4_8_83.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_lettuce_lettuce_core_5_2_2_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_buffer_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_codec_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_common_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_handler_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_transport_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_projectreactor_reactor_core_3_3_3_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_bean_validators_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_boot_starter_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_core_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_data_rest_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_oas_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_schema_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_spi_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_spring_web_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_spring_webflux_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_swagger2_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_swagger_common_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_springfox_springfox_swagger_ui_3_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_swagger_core_v3_swagger_annotations_2_1_5.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_swagger_core_v3_swagger_models_2_1_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_swagger_swagger_core_1_5_22.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__javax_servlet_javax_servlet_api_4_0_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__mysql_mysql_connector_java_8_0_19.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_8.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__net_java_dev_jna_jna_5_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__net_java_dev_jna_jna_platform_5_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_pdfbox_fontbox_2_0_22.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_pdfbox_pdfbox_2_0_22.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_poi_poi_5_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_santuario_xmlsec_2_2_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_core_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_event_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_shiro_shiro_web_1_7_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_31.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_31.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_31.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_4_0_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_all_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_extension_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_gui_util_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_ext_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_slideshow_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_ext_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgbrowser_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgpp_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgrasterizer_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_swing_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_ttf2svg_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_13.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_4.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_68.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_68.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_checkerframework_checker_compat_qual_2_5_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_17.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_4_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_javassist_javassist_3_25_0_GA.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_mapstruct_mapstruct_1_3_1_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_mybatis_mybatis_3_5_16.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_mybatis_mybatis_spring_2_1_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_2_3_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_2_3_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_projectlombok_lombok_1_18_12.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_3.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_30.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_mail_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_2_5_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_aop_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_beans_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_context_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_context_support_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_core_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_expression_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_jcl_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_oxm_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_tx_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_web_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_4_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__xalan_serializer_2_7_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__xalan_xalan_2_7_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml
ÎļþÒÑɾ³ý
admin/lianhelihua_admin/index.html
@@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.1a42a0af.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.09df0529.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.1a42a0af.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js"></script><script src="/lianhelihua_admin/static/js/app.09df0529.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.f066ef6d.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.71473e31.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.262019c4.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.f066ef6d.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.262019c4.js"></script><script src="/lianhelihua_admin/static/js/app.71473e31.js"></script></body></html>
admin/lianhelihua_admin/static/img/home_func1.2273dcea.png
Binary files differ
admin/lianhelihua_admin/static/img/home_func2.9c9be0b6.png
Binary files differ
admin/lianhelihua_admin/static/img/home_func3.507ca9bd.png
Binary files differ
admin/lianhelihua_admin/static/img/home_func4.e6510cdc.png
Binary files differ
admin/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js
ÎļþÒÑɾ³ý
admin/lianhelihua_admin/static/js/chunk-vendors.f4ff0439.js.map
ÎļþÒÑɾ³ý
admin/package-lock.json
@@ -7975,6 +7975,12 @@
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
      "dev": true
    },
    "jsencrypt": {
      "version": "3.3.2",
      "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.2.tgz",
      "integrity": "sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==",
      "dev": true
    },
    "jsesc": {
      "version": "2.5.2",
      "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&sync_timestamp=1603891232110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz",
admin/package.json
@@ -47,7 +47,9 @@
    "node-sass": "^4.12.0",
    "sass-loader": "^8.0.2",
    "vue-cli-plugin-element-ui": "~1.1.4",
    "vue-template-compiler": "^2.6.11"
    "vue-template-compiler": "^2.6.11",
    "crypto-js": "^4.2.0",
    "jsencrypt": "^3.3.2"
  },
  "eslintConfig": {
    "root": true,
admin/src/api/system/common.js
@@ -1,4 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// èŽ·å–å›¾ç‰‡éªŒè¯ç 
export function getCaptcha () {
@@ -14,8 +15,14 @@
}
// æ ¹æ®å¯†ç ç™»å½•
export function loginByPassword (data) {
  return request.post('/system/login', data)
export function loginByPassword (data, iv) {
  if(iv){
    var actData = encryptData(data)
    return request.post('/system/login', actData)
  } else{
    return request.post('/system/login', data)
  }
}
// ç™»å‡º
@@ -24,8 +31,8 @@
}
// ä¿®æ”¹å¯†ç 
export function updatePwd (data) {
  return request.post('/system/updatePwd', data)
export function updatePwd (data,iv) {
  return request.post('/system/updatePwd', iv?encryptData(data):data)
}
// èŽ·å–å·²ç™»å½•çš„ç”¨æˆ·ä¿¡æ¯
admin/src/components/common/Header.vue
@@ -131,7 +131,7 @@
        updatePwd({
          oldPwd: this.changePwdData.form.oldPwd,
          newPwd: this.changePwdData.form.newPwd
        })
        },true)
          .then(() => {
            this.visible.changePwd = false
            setTimeout(() => {
admin/src/utils/request/decryption.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
// AES
import CryptoJS from 'crypto-js'
import JSEncrypt from 'jsencrypt'
import {
  generateRandomObj,
  rsaPassWord
} from './encrypt.js'
// ç§é’¥
// const privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJkOgs/FrhpXs3QzdhiQ9eFdK7HECPNPadhecJA5SU2kEx+FlRnbA7Z9/Tqg9RYV4zuuxp3cYp9fa8AywRzVIHYLCokt39bUYIsEVJQdh4KRr1usl/x8Wv24GjcnuDlsLnwAgSsqNcVM/4XhtaeqyrmNMEbT7YqxJjBGJNamwSfXAgMBAAECgYADkiQZJtqGAM/OATlbH16tMFhJoHI5AvxMMP/dTYjZR9+uV5Z/8O0oP849pO2y4zXW+Z/mpPKkFzzTUhvRSWOldBFOmjktPdCBA8NuyFT3+dlew202pEbjDxdnTjb+GTNnli0cHoILsJGoqEeCCddNbtlidv0kFQWubbgfuSNf2QJBAOHmb9v36hnmcH3eLEo2wy7bEE30q+UoUGzAlLw2Tv/APh82NV6VVB11duYDeifAE0wJFtImp9zEDrVcmiN5PNMCQQCtc1kwdP15Dfj+miTkmjKbsona3+m06XQ0VbeUelQ07VtAG9zpkaza7c8JEA15cOcxHECFG5f2E4f3KBl543ZtAkBBtj6jxiIbFqVyd8Z6cCOm5aKAisPWDTwX5o1dko64ZruraKFtuhKV3y2PC0PlfEIgxCQXTZdW6NE+gIl1+DZxAkAsC3iAh5S+IsAx1u67ZjSnuOSsweNU31t01rdxasbrUcK0Ot8UKLveNDk4sezaA8ORgv0XT/R8tmT2bCZb/1jZAkBUqgcdO5b9YM9wumvKIDHhKuIobrRYlIhSfh36Iaor0VO9a+Xl0c5lwmZmZDyZHE/mfhuVkjdifOwEeORnWPs7";
// const privateKey = uni.getStorageSync('aes_private_key')
export function decryptedData (msg, data) {
  console.log(msg)
  console.log(data)
  // å˜æ¢key:将当月位数字符串去除,然后倒序
  const monthIndex = new Date().getMonth() + 1
  const msgStr = msg.slice(0, monthIndex) + msg.slice(monthIndex + 1)
  const reverseMsgStr = msgStr.split('').reverse().join('')
  const str1 = data.replace(/\s/g, '')
  console.log(reverseMsgStr)
  console.log(str1)
  // è§£å¯†å¹¶è¿”回结果
  return (
    JSON.parse(
      CryptoJS.AES.decrypt({
        ciphertext: CryptoJS.enc.Base64.parse(str1)
      },
      CryptoJS.enc.Utf8.parse(reverseMsgStr), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
        iv: CryptoJS.enc.Utf8.parse('AES/CBC/PKCS5Padding')
      }
      ).toString(CryptoJS.enc.Utf8)
    ) || {}
  )
}
// å¯¹æ•°æ®åР坆
export function encryptData (data) {
  const str = CryptoJS.AES.encrypt(
    JSON.stringify(data),
    CryptoJS.enc.Utf8.parse(generateRandomObj), {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
      iv: CryptoJS.enc.Utf8.parse('AES/CBC/PKCS5Padding')
    }
  ).toString()
  return {
    data: str,
    ivKey: rsaPassWord
  }
}
admin/src/utils/request/encrypt.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
// RSA
import JSEncrypt from 'jsencrypt'
/******************************************************************************/
// å…¬é’¥
// const publicKey = uni.getStorageSync('aes_public_key')
const publicKey =
    "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOgrUW4jM5Y" +
    "2irUCpvpyBn41aTRfGHNQuBHIByK9fbc" +
    "lNXXt7/QuQj3NQCfwknBBCHcM7A38eC249UxjFkLHAm+I9o15INjF/TrHtlzkzzS9jiek" +
    "godhUuM4eVxXQUcDNdAgSkKFt9T5WRXg2cjEZQyoi5DlIWLmOqixmx8OKFRQIDAQAB";
function generateRandomString () {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let result = ''
  const charactersLength = characters.length
  for (let i = 0; i < 16; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength))
  }
  return result
}
export const generateRandomObj = generateRandomString()
// è°ƒç”¨å‡½æ•°ç”Ÿæˆéšæœºå­—符串
const encryptor = new JSEncrypt() // åˆ›å»ºåŠ å¯†å¯¹è±¡å®žä¾‹
// console.log(publicKey)
encryptor.setPublicKey(publicKey) // è®¾ç½®å…¬é’¥
export const rsaPassWord = encryptor.encrypt(generateRandomObj)
admin/src/utils/request/index.js
@@ -3,13 +3,14 @@
import pkg from '../../../package'
import { trim } from '@/utils/util'
import extendsMethods from './extends.methods'
import { decryptedData } from './decryption.js'
// é»˜è®¤é…ç½®
axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
const axiosInstance = axios.create({
  baseURL: process.env.VUE_APP_API_PREFIX,
  // è¯·æ±‚è¶…æ—¶æ—¶é—´
  timeout: 60000
  timeout: 600000
})
// æ–°å»ºè¯·æ±‚拦截器
@@ -23,6 +24,10 @@
      config.params = trim(config.params)
    }
  }
  if (config.ivKey) {
    config.headers.secretKey = config.ivKey
  }
  // config.headers['Content-Type'] = config.contentType || 'application/json;charset=UTF-8'
  // å¯¼å‡ºå¤„理
  if (config.download === true) {
    config.responseType = 'blob'
@@ -52,7 +57,7 @@
  // æœªç™»å½•
  if (response.data.code === 401) {
    if (response.config.autoLogin !== false) {
      window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/#/login' : '/login'
      window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? (process.env.VUE_APP_CONTEXT_PATH + '/#/login') : (process.env.VUE_APP_CONTEXT_PATH + '/login')
    }
    return Promise.reject(response.data)
  }
@@ -60,6 +65,16 @@
  if (!response.data.success) {
    return Promise.reject(response.data)
  }
  if (response.data.message) {
    const tm = response.data.message
    const list = tm.split(' ')
    let msg = list[0]
    if (list.length > 1 && response.data.data) {
      msg = decryptedData(list[1], list[0])
      response.data.data = decryptedData(list[1], response.data.data)
      response.data.message = msg
    }
  }
  return response.data.data
}, function (error) {
  console.log('error', error)
admin/src/views/login.vue
@@ -58,7 +58,7 @@
        password: this.password,
        code: this.captcha.value.trim(),
        uuid: this.captcha.uuid
      })
      },true)
        .then(() => {
          window.location.href = process.env.VUE_APP_CONTEXT_PATH
        })
server/pom.xml
@@ -189,6 +189,11 @@
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15on</artifactId>
      <version>1.60</version>
    </dependency>
  </dependencies>
  <build>
@@ -206,7 +211,51 @@
          <mainClass>com.doumee.LianhelihuaApplication</mainClass>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <delimiters>
            <delimiter>@</delimiter>
          </delimiters>
          <useDefaultDelimiters>false</useDefaultDelimiters>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>dev</id>
      <properties>
        <spring.active>dev</spring.active>
      </properties>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>test</id>
      <properties>
        <spring.active>test</spring.active>
      </properties>
    </profile>
    <profile>
      <id>pro</id>
      <properties>
        <spring.active>pro</spring.active>
      </properties>
    </profile>
  </profiles>
</project>
server/src/main/java/com/doumee/api/system/SystemController.java
@@ -2,6 +2,8 @@
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemUserBiz;
import com.doumee.config.annotation.EncryptionReq;
import com.doumee.config.annotation.EncryptionResp;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
@@ -39,6 +41,8 @@
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录")
    @EncryptionReq
    @EncryptionResp
    @PostMapping("/login")
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPassword(dto, request));
@@ -54,6 +58,8 @@
    @Trace(withRequestParameters = false)
    @ApiOperation("修改当前用户密码")
    @EncryptionReq
    @EncryptionResp
    @PostMapping("/updatePwd")
    public ApiResponse updatePwd (@Validated @RequestBody UpdatePwdDto dto) {
        dto.setUserId(this.getLoginUser().getId());
@@ -63,6 +69,7 @@
    @ApiOperation("获取当前登录的用户信息")
    @GetMapping("/getUserInfo")
    @EncryptionResp
    public ApiResponse<LoginUserInfo> getUserInfo () {
        return ApiResponse.success(this.getLoginUser());
    }
server/src/main/java/com/doumee/config/annotation/EncryptionReq.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.doumee.config.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @Date: 2024/3/29 18:30
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptionReq {
}
server/src/main/java/com/doumee/config/annotation/EncryptionResp.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.doumee.config.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @Date: 2024/3/29 18:30
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptionResp {
}
server/src/main/java/com/doumee/config/interfaceencryption/DecryptRequestBodyAdvice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.doumee.config.interfaceencryption;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.annotation.EncryptionReq;
import com.doumee.config.annotation.EncryptionResp;
import com.doumee.config.interfaceencryption.tool.RSAEncrypt;
import com.doumee.core.utils.AESUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.Base64;
/**
 * ã€é—®é¢˜ã€‘群组表
 * github地址 http://www.github.com/wanyushu
 * gitee地址 http://www.gitee.com/wanyushu
 * @author yushu
 * @email 921784721@qq.com
 * å¯¹è¯·æ±‚的参数进行解密
 **/
@ControllerAdvice
public class DecryptRequestBodyAdvice implements RequestBodyAdvice {
    private Logger log = LoggerFactory.getLogger(this.getClass());
    private boolean encrypt;
    @Override
    public boolean supports(MethodParameter methodParameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
        if (methodParameter.getMethod().isAnnotationPresent(EncryptionReq.class) || methodParameter.getClass().isAnnotationPresent(EncryptionReq.class)  ) {
            encrypt = true;
        }else{
            encrypt=false;
        }
        return encrypt;
    }
    @Override
    public Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
        return body;
    }
    @Override
    public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType,
                                           Class<? extends HttpMessageConverter<?>> converterType){
        if (encrypt) {
            try {
                byte[] payload = StreamUtils.copyToByteArray(inputMessage.getBody());
                String content =new String(payload);
                JSONObject jsonObject = JSONObject.parseObject(content);
                if(jsonObject.get("data")!=null){
                    content = jsonObject.getString("data");
                }
                // è¯»å–完整的客户端请求体,也就是加密/编码后的数据
                String key  = jsonObject.getString("ivKey");
                log.info("加密 key:{}", key);
                String decrypt = RSAEncrypt.decrypt(key, RSAEncrypt.privateKey);
                log.info("加密 Payload:{}",content);
                String decrypt1 = AESUtils.decrypt(content, decrypt);
                // è§£ç ä¸ºåŽŸå§‹æ•°æ®
                byte[] rawPayload =  decrypt1.getBytes();
                log.info("原始 Payload:{}", decrypt);
                // è¿”回 HttpInputMessage åŒ¿åå¯¹è±¡
                return new HttpInputMessage() {
                    @Override
                    public HttpHeaders getHeaders() {
//                        inputMessage.getHeaders().set("Content-Type","application/json;charset=UTF-8");
                        return inputMessage.getHeaders();
                    }
                    @Override
                    public InputStream getBody() throws IOException {
                        // ä½¿ç”¨åŽŸå§‹æ•°æ®æž„å»ºä¸º ByteArrayInputStream
                        return new ByteArrayInputStream(rawPayload);
                    }
                };
            } catch (Exception e) {
                log.error("Decryption failed", e);
            }
        }
        return inputMessage;
    }
    @Override
    public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType,
                                Class<? extends HttpMessageConverter<?>> converterType) {
        return body;
    }
}
server/src/main/java/com/doumee/config/interfaceencryption/EncryptResponseBodyAdvice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
package com.doumee.config.interfaceencryption;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.annotation.EncryptionResp;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.AESUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import java.time.LocalDate;
import java.util.Random;
/**
 * github地址 http://www.github.com/wanyushu
 * gitee地址 http://www.gitee.com/wanyushu
 * @author yushu
 * @email 921784721@qq.com
 * å¯¹è¯·æ±‚的参数进行加密
 **/
@ControllerAdvice
public class EncryptResponseBodyAdvice implements ResponseBodyAdvice<Object> {
    private Logger log = LoggerFactory.getLogger(this.getClass());
    private boolean encrypt;
    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        encrypt = false;
        if (returnType.getMethod().isAnnotationPresent(EncryptionResp.class) || returnType.getClass().isAnnotationPresent(EncryptionResp.class) ) {
            encrypt = true;
        }
        return encrypt;
    }
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                  Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        if (encrypt) {
            try {
                String str = generateRandomLetters(16);
                String afterDealStr = newEncrypt(str);
                ApiResponse apiResponse = (ApiResponse) body;
                //对响应内容进行加密
                ObjectMapper objectMapper = new ObjectMapper();
                String aesEncryptData = AESUtils.encrypt(objectMapper.writeValueAsString(apiResponse.getData()), str);
                apiResponse.setData(aesEncryptData);
                String aesEncryptMessage = AESUtils.encrypt(objectMapper.writeValueAsString(apiResponse.getMessage()), str);
                apiResponse.setMessage(aesEncryptMessage + " " + afterDealStr);
                return body;
            } catch (Exception e) {
                log.error("Encrypted data exception", e);
            }
        }
        return body;
    }
    private static String newEncrypt(String s) {
        //倒序排列
        StringBuilder reverse = new StringBuilder(s).reverse();
        System.out.println("倒序排列后的值 " + reverse);
        //根据当前月份和日期,来判断在字符串中的哪个位置加字符串,比如 å­—符串是 abcdefghijklmn今天是2月14号,就在第二个字符串后面加26个字符串中处于14位的字符,如果日期超过26,就从a重新开始
        LocalDate today = LocalDate.now(); // èŽ·å–å½“å‰æ—¥æœŸ
        int monthValue = today.getMonthValue();
        int dayOfMonth = today.getDayOfMonth(); // èŽ·å–æ—¥æœŸä¸­çš„æ—¥
        int position = dayOfMonth % 26; // è®¡ç®—在字母表中的位置(1-26)
        // è®¡ç®—要插入的字符
        char charToInsert = (char) ('a' + (position - 1));
        // è®¡ç®—插入位置(0-based index)
        int insertPosition = monthValue % (reverse.length() + 1); // ä¿è¯ä¸è¶…出范围
        // æ’入字符
        String result = insertCharacter(reverse.toString(), charToInsert, insertPosition);
        return result;
    }
    public static String insertCharacter(String original, char ch, int position) {
        StringBuilder sb = new StringBuilder(original);
        sb.insert(position, ch);
        return sb.toString();
    }
    public String generateRandomLetters(int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            char randomChar = (char) (random.nextInt(26) + 'a');
            sb.append(randomChar);
        }
        return sb.toString();
    }
}
server/src/main/java/com/doumee/config/interfaceencryption/InterfaceEncryptionMvcConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.doumee.config.interfaceencryption;
import com.doumee.config.annotation.EncryptionReq;
import com.doumee.config.annotation.EncryptionResp;
import com.doumee.config.interfaceencryption.tool.RSAEncrypt;
import com.doumee.core.utils.AESUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.stream.Collectors;
/**
 * app自定义token认证
 */
@Slf4j
//@Component
public class InterfaceEncryptionMvcConfig implements WebMvcConfigurer {
    /**
     * æ˜¯å¦å¼€å‘者
     */
    @Value("${debug_model}")
    private Boolean isDebug;
    /**
     * æ·»åŠ æ‹¦æˆªå™¨
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //API接口JwtToken拦截器
        HandlerInterceptor encrypterceptor = new HandlerInterceptor() {
            @Override
            public  void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                                         @Nullable Exception ex) throws Exception {
                if (!(handler instanceof HandlerMethod)) {
                    return  ;
                }
               /* HandlerMethod handlerMethod = (HandlerMethod) handler;
                if(!( handlerMethod.hasMethodAnnotation(EncryptionResp.class) || handlerMethod.hasMethodAnnotation(EncryptionResp.class))  ){
                    //如果是加密返回参数
                    String str = generateRandomLetters(16);
                    String afterDealStr = newEncrypt(str);
                    ResponseData response = (ResponseData) object;
                    //对响应内容进行加密
                    ObjectMapper objectMapper = new ObjectMapper();
                    String aesEncryptData = AESUtils.encrypt(objectMapper.writeValueAsString(response.getData()), str);
                    response.setData(aesEncryptData);
                    String aesEncryptMessage = AESUtils.encrypt(objectMapper.writeValueAsString(response.getMessage()), str);
                    response.setMessage(aesEncryptMessage + " " + afterDealStr);
                    return object;
                }*/
            }
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                // å¦‚果不是映射到方法直接通过
                if (!(handler instanceof HandlerMethod)) {
                    return true;
                }
                HandlerMethod handlerMethod = (HandlerMethod) handler;
                if(( handlerMethod.hasMethodAnnotation(EncryptionResp.class) || handlerMethod.hasMethodAnnotation(EncryptionResp.class))  ){
                    //如果是加密参数
                    String secretKey = request.getHeader("secretKey");
                    //对key进行解密
//                    String decrypt = RSAEncrypt.decrypt(secretKey, RSAEncrypt.privateKey);
                    //获取请求参数
                    String requestBody = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
                    String param = requestBody.toString();
                    //对参数进行解密
                    String decrypt1 = AESUtils.decrypt(param, requestBody);
                    //放入请求
                    request.setAttribute("param", decrypt1);
                }
                return true;
            }
        };
        registry.addInterceptor(encrypterceptor).addPathPatterns("/**");
    }
}
server/src/main/java/com/doumee/config/interfaceencryption/tool/RSAEncrypt.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.doumee.config.interfaceencryption.tool;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class RSAEncrypt {
    private static Map<Integer, String> keyMap = new HashMap<Integer, String>();  //用于封装随机产生的公钥与私钥
    public static String privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAM6CtRbiMzljaKtQKm+nIGfjVpNF8Yc1C4EcgHIr19tyU1de3v9C5CPc1AJ/CScEEIdwzsDfx4Lbj1TGMWQscCb4j2jXkg2MX9Ose2XOTPNL2OJ6SCh2FS4zh5XFdBRwM10CBKQoW31PlZFeDZyMRlDKiLkOUhYuY6qLGbHw4oVFAgMBAAECgYAt6S0tWzicJ5ebjoUAsZ0ou4gB0ejycD6Qg6+islCY/v+8SuE0ysBBoNSZgXidbe/mzJOKmbWXSAzDghR0+tQrz3v2jEmm/MoBXoHS+YXuZvG6OX7n7rN4GPKm8wYNWGv3IU6NeggOZqMf+kT3JUvqQx5JxjeK/lEBlifmU0wmQQJBAPCGEmGtjbKJnMT4GurzsCJniy2rGAHvu+S51j60eusUuTnEIu78tMJGd8zkjNPlShKqyk+AUdhNoaigIZLclfkCQQDbzF444oJWkZ32iDipWcFxMqEkvn49elUZPHFzDVMN+D0mJ0uN0lGErDZAovCLu095+XecCsduXkki95HtdYytAkA3ph18ogYFx9cQr4Ky15zp6OEHuO0+DXSAkAqkyWcjGtFcLygR+T/tLxaqvjpjEEraFM/oIv1MuXFsrVf3PbgpAkB8OZVHMT3ZD5PnsjXUARaDk8nfqopO1MUj7jVwgSdfzd1BoxPgo+3OvkYrYevyDXttxMEFQFJW3pMXYDTpsHZBAkAX9R4KsvqC3FJkOk6zmGw2tsJBEFL5cqAnXQByoY3XriNgUeHJa/vCXJR7Q+vIYstnLzLzMJl7EMVOrxH4bBwF";
    public static String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZDoLPxa4aV7N0M3YYkPXhXSuxxAjzT2nYXnCQOUlNpBMfhZUZ2wO2ff06oPUWFeM7rsad3GKfX2vAMsEc1SB2CwqJLd/W1GCLBFSUHYeCka9brJf8fFr9uBo3J7g5bC58AIErKjXFTP+F4bWnqsq5jTBG0+2KsSYwRiTWpsEn1wIDAQAB";
//    public static void main(String[] args) throws Exception {
//        String phone = "18256057064";
//        String encrypt = encrypt(phone, publicKey);
//        System.out.println("加密后"+encrypt);
//        System.out.println("解密后"+decrypt(encrypt, privateKey));
//    }
    /**
     * éšæœºç”Ÿæˆå¯†é’¥å¯¹
     *
     * @throws NoSuchAlgorithmException
     */
    public static void genKeyPair() throws NoSuchAlgorithmException {
        // KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
        // åˆå§‹åŒ–密钥对生成器,密钥大小为96-1024位
        keyPairGen.initialize(1024, new SecureRandom());
        // ç”Ÿæˆä¸€ä¸ªå¯†é’¥å¯¹ï¼Œä¿å­˜åœ¨keyPair中
        KeyPair keyPair = keyPairGen.generateKeyPair();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();   // å¾—到私钥
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  // å¾—到公钥
        String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));
        // å¾—到私钥字符串
        String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));
        // å°†å…¬é’¥å’Œç§é’¥ä¿å­˜åˆ°Map
        keyMap.put(0, publicKeyString);  //0表示公钥
        keyMap.put(1, privateKeyString);  //1表示私钥
        System.out.println("公钥:" + publicKeyString);
        System.out.println("私钥:" + privateKeyString);
    }
    /**
     * RSA公钥加密
     *
     * @param str       åŠ å¯†å­—ç¬¦ä¸²
     * @param publicKey å…¬é’¥
     * @return å¯†æ–‡
     * @throws Exception åŠ å¯†è¿‡ç¨‹ä¸­çš„å¼‚å¸¸ä¿¡æ¯
     */
    public static String encrypt(String str, String publicKey) throws Exception {
        //base64编码的公钥
        byte[] decoded = Base64.decodeBase64(publicKey);
        RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
        //RSA加密
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, pubKey);
        String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
        return outStr;
    }
    /**
     * RSA私钥解密
     *
     * @param str        åŠ å¯†å­—ç¬¦ä¸²
     * @param privateKey ç§é’¥
     * @return é“­æ–‡
     * @throws Exception è§£å¯†è¿‡ç¨‹ä¸­çš„异常信息
     */
    public static String decrypt(String str, String privateKey) throws Exception {
        try {
            log.info("RSA私钥解密 str = " + str);
            log.info("RSA私钥解密 privateKey = " + privateKey);
            //64位解码加密后的字符串
            byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
            //base64编码的私钥
            byte[] decoded = Base64.decodeBase64(privateKey);
            RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
            //RSA解密
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, priKey);
            String outStr = new String(cipher.doFinal(inputByte));
            return outStr;
        }catch (Exception e){
           return "{}";
        }
    }
}
server/src/main/java/com/doumee/config/interfaceencryption/tool/RSAEncryptTest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.doumee.config.interfaceencryption.tool;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
public class RSAEncryptTest {
    private static Map<Integer, String> keyMap = new HashMap<Integer, String>();  //用于封装随机产生的公钥与私钥
    /**
     * éšæœºç”Ÿæˆå¯†é’¥å¯¹
     *
     * @throws NoSuchAlgorithmException
     */
    public static void genKeyPair() throws NoSuchAlgorithmException {
        // KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
        // åˆå§‹åŒ–密钥对生成器,密钥大小为96-1024位
        keyPairGen.initialize(1024, new SecureRandom());
        // ç”Ÿæˆä¸€ä¸ªå¯†é’¥å¯¹ï¼Œä¿å­˜åœ¨keyPair中
        KeyPair keyPair = keyPairGen.generateKeyPair();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();   // å¾—到私钥
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  // å¾—到公钥
        String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));
        // å¾—到私钥字符串
        String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));
        // å°†å…¬é’¥å’Œç§é’¥ä¿å­˜åˆ°Map
        keyMap.put(0, publicKeyString);  //0表示公钥
        keyMap.put(1, privateKeyString);  //1表示私钥
        System.out.println("公钥:" + publicKeyString);
        System.out.println("私钥:" + privateKeyString);
    }
    /**
     * RSA公钥加密
     *
     * @param str       åŠ å¯†å­—ç¬¦ä¸²
     * @param publicKey å…¬é’¥
     * @return å¯†æ–‡
     * @throws Exception åŠ å¯†è¿‡ç¨‹ä¸­çš„å¼‚å¸¸ä¿¡æ¯
     */
    public static String encrypt(String str, String publicKey) throws Exception {
        //base64编码的公钥
        byte[] decoded = Base64.decodeBase64(publicKey);
        RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
        //RSA加密
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, pubKey);
        String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
        return outStr;
    }
    /**
     * RSA私钥解密
     *
     * @param str        åŠ å¯†å­—ç¬¦ä¸²
     * @param privateKey ç§é’¥
     * @return é“­æ–‡
     * @throws Exception è§£å¯†è¿‡ç¨‹ä¸­çš„异常信息
     */
    public static String decrypt(String str, String privateKey) throws Exception {
        //64位解码加密后的字符串
        byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
        //base64编码的私钥
        byte[] decoded = Base64.decodeBase64(privateKey);
        RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
        //RSA解密
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, priKey);
        String outStr = new String(cipher.doFinal(inputByte));
        return outStr;
    }
}
server/src/main/java/com/doumee/core/utils/AESUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.doumee.core.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class AESUtils {
    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding"; // ä½¿ç”¨ ECB æ¨¡å¼å¹¶ä½¿ç”¨ PKCS5Padding å¡«å……
    public static String encrypt(String data, String key) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }
    public static String decrypt(String encryptedData, String key) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
        return new String(decryptedBytes, StandardCharsets.UTF_8);
    }
    public static void main(String[] args) throws Exception {
        String key = "qtixtsujiokdgrqq"; // 16 å­—节的密钥
        String decryptedData = decrypt("/V65QRvmgommnLLJQV+JwE7L2FShGboL3TojZL4Up2JzeR/NK7rxwFqVHU4f9BTT2PYgDX5ULBGjbWnrwNpfhB1j1aUWSuItXvAAutz5L7f+bnZGmNNsUzG0KRyDu77e1fkweqfuSqZ7C4dmt6vy+DdYAMSC/RVBx/dOCU4gNcf0SupvH57WHPTt3KpB3OmbXBg74DiAi2JG7+giWDLnDrDBahhTgMSu0u1f3K5SMcE9tVVZCHGkzNAV5owwo/7yyvFMdBELqO/pgtfI1syaHgPdskMXUwa1j6HdLUcAqvaF7PzJOv++VGNqnCm2n2UBoIPEvKkn9TuI3LHHT26v2H0KoRmJdPIhme0eGqyXqAkTYFbAd/6OGUiwJO1vZYZDW/fmtKNThP0UOFLvJ6jVW5XrvIdmjzoF8iOxyyj+N3/3Mp4SinH9gSBuz/TbabH4zXL0Np1UvRmJjtkIEa+q8DEch0HcyH2ABULnu/xyxbIXhLQ1lgBZ2GJ8lO3ynvSSwkbzbd1vP5zWxKIYRDTf5qRk3eDwzXNbmcY6DFPYepS3ceh0kl4iScqG+AO/bvxTqnmm6/nrYVI8qHq7GCWthiTYX0AzulhT7ceyEfMMD4zuz8gbWTfqQtIcDGHeN7gZuFUcwRfHG9sEN7Vkle6QSDZumjODSbrYiTTruQXCSSiDVoXFDK24GvKaNMKB2lh8qcV1sldpyAlgeOKCbYWyBiEG/5ZNZH0iHtrIXn/ebrs6kzMSFREw+CVvgrkpZZ04MP5QGMFEMr3+Zg4KtwYraSoWGg8Pn1MgN/dBCHOKnpCOMW2I8n+sKKZMJh5YkhrEtknf7Zvi8lpZX5Sjz5DOA3vaxy8E0YPbrjRxqlgW8psy5R6ZwDP9jfGIOG0gS0gPewm8xJRYYLEk7vbhwBW2hQ==", key);
        System.out.println("" + decryptedData);
    }
}
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java
@@ -11,20 +11,20 @@
    public final static String CORPSECRET = "8gl5ndGr824OHZ90CkZdcIewUKHoyk13XN4hfxBS_io";
    public final static String ACCESS_TOKEN = "aOpknXCW7KBBwgGAPuacwfhJRcT1PeIg-IroZicxWamj0JayKJ0rKw2sNXGzpQzK8AMDeDrEJC_kTvPPWTgtefDNLtfsdHS7IpXqBV1P8znLG1EmsYPNgvn78dsQd5bBomLl_qPpOob9hUUsSJJKcEmxXldCNEYVBhKmYnQ4yY8WE8i4xp7aLmm-hRql0AzhzaNhUA7nAzNN5BsgSgbXMA";
    //获取accesstoken,corpid=企业ID,corpsecret=应用的凭证密钥
    public final static String[] GET_ACCESS_TOKEN = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${secret}","获取企业微信accesstoken"};
    public final static String[] GET_ACCESS_TOKEN = new String[]{"/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${secret}","获取企业微信accesstoken"};
    //获取部门信息,部门id。获取指定部门及其下的子部门(以及及子部门的子部门等等,递归)。 å¦‚果不填,默认获取全量组织架构
    public final static String[]  GET_DEPARTMENT_LIST = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=${accesstoken}&id=${id}","获取部门信息"};
    public final static String[]  GET_DEPARTMENT_SIMPLELIST = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/department/simplelist?access_token=${accesstoken}&id=${id}","获取部门信息"};
    public final static String[]  GET_DEPARTMENT_INFO = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/department/get?access_token=${accesstoken}&id=${id}","获取单个部门详情"};
    public final static String[]  GET_DEPARTMENT_LIST = new String[]{"/cgi-bin/department/list?access_token=${accesstoken}&id=${id}","获取部门信息"};
    public final static String[]  GET_DEPARTMENT_SIMPLELIST = new String[]{"/cgi-bin/department/simplelist?access_token=${accesstoken}&id=${id}","获取部门信息"};
    public final static String[]  GET_DEPARTMENT_INFO = new String[]{"/cgi-bin/department/get?access_token=${accesstoken}&id=${id}","获取单个部门详情"};
    //获取部门成员,access_token=调用接口凭证,department_id=获取的部门id,fetch_child=    æ˜¯å¦é€’归获取子部门下面的成员:1-递归获取,0-只获取本部门
    public final static String[]  GET_DEPARTMENT_SIMPLE_LIST = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=${accesstoken}&department_id=${departmentId}","获取部门成员"};
    public final static String[]  GET_DEPARTMENT_USER_LIST = new String[]{"https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=${accesstoken}&department_id=${departmentId}","获取部门成员"};
    public final static String[]  GET_DEPARTMENT_SIMPLE_LIST = new String[]{"/cgi-bin/user/simplelist?access_token=${accesstoken}&department_id=${departmentId}","获取部门成员"};
    public final static String[]  GET_DEPARTMENT_USER_LIST = new String[]{"/cgi-bin/user/list?access_token=${accesstoken}&department_id=${departmentId}","获取部门成员"};
    //获取成员详情,access_token=调用接口凭证,userid=成员UserID
    public final static String[]  GET_USER_DETAIL =new String[]{ "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=${accesstoken}&userid=${id}","获取成员详情"};
    public final static String[]  GET_USER_DETAIL =new String[]{ "/cgi-bin/user/get?access_token=${accesstoken}&userid=${id}","获取成员详情"};
    //发送应用消息,access_token=调用接口凭证  POST请求,
    public final static String[]  SEND_MSG =new String[]{ "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}","发生推送消息"};
    public final static String[]  GET_USER_BY_AUTH_CODE =new String[]{ "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=${accesstoken}&code=${code}","获取用户登录身份"};
    public final static String[]  GET_JSAPI_TICKET =new String[]{ "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=${accesstoken}","获取企业 jsapi_ticket"};
    public final static String[]  SEND_MSG =new String[]{ "/cgi-bin/message/send?access_token=${accesstoken}","发生推送消息"};
    public final static String[]  GET_USER_BY_AUTH_CODE =new String[]{ "/cgi-bin/auth/getuserinfo?access_token=${accesstoken}&code=${code}","获取用户登录身份"};
    public final static String[]  GET_JSAPI_TICKET =new String[]{ "/cgi-bin/get_jsapi_ticket?access_token=${accesstoken}","获取企业 jsapi_ticket"};
}
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
@@ -9,6 +9,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@@ -28,6 +29,8 @@
    private SystemDictDataBiz systemDictDataBiz;
    private static QywxUtil qyUtil;
    @Value("${qiwei.serviceurl}")
    private static String qiweiUrl;
    @PostConstruct
    private void init() {
@@ -158,7 +161,7 @@
            String res = null;
            try {
                Map<String,String> headers = new HashMap<>();
                res = HttpsUtil.postJson(url,param);
                res = HttpsUtil.postJson(qiweiUrl+url,param);
                QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType());
                logResult(result,name);
                return  result;
@@ -175,7 +178,7 @@
            String res = null;
            try {
                Map<String,String> headers = new HashMap<>();
                res = HttpsUtil.postJson(url,param);
                res = HttpsUtil.postJson(qiweiUrl+url,param);
                T result = JSONObject.parseObject(res, typeReference.getType());
//                logResult(result,name);
                return  result;
server/src/main/resources/application-dev.yml
@@ -71,3 +71,15 @@
    enable: true
    username: admin
    password: 111111
qiwei:
  serviceurl: https://qyapi.weixin.qq.com
aes:
  encrypt:
    open: true # æ˜¯å¦å¼€å¯åР坆 true  or  false
    showLog: true # æ˜¯å¦æ‰“印加解密log true  or  false
    publicKey: mN4Yn8Or8r7SH1w3 # AES密钥
    privateKey:  # RSA私钥
    time: 600000
server/src/main/resources/application-pro.yml
@@ -51,4 +51,8 @@
  basic:
    enable: true
    username: admin
    password: 111111
    password:
qiwei:
  serviceurl: https://wecom-qyapi.unilever-china.com/
server/src/main/resources/application-test.yml
@@ -72,3 +72,6 @@
    enable: true
    username: admin
    password: 111111
qiwei:
  serviceurl: https://qyapi.weixin.qq.com
server/src/main/resources/application.yml
@@ -9,7 +9,7 @@
spring:
  profiles:
    active: test
    active: dev
  # JSON返回配置
  jackson:
    # é»˜è®¤æ—¶åŒº