From b12d4fc863dddb56e62228db847f993dbebd2a76 Mon Sep 17 00:00:00 2001 From: tuyp Date: Tue, 25 Nov 2025 11:10:46 +0800 Subject: [PATCH] start... --- .idea/.gitignore | 2 ++ .idea/compiler.xml | 22 ++++++++++++++++++++++ .idea/encodings.xml | 7 +++++++ .idea/inspectionProfiles/Project_Default.xml | 45 +++++++++++++++++++++++++++++++++++++++++++++ .idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml | 13 +++++++++++++ .idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml | 13 +++++++++++++ .idea/libraries/Maven__cn_hutool_hutool_all_5_5_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_alibaba_druid_1_1_22.xml | 13 +++++++++++++ .idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml | 13 +++++++++++++ .idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml | 13 +++++++++++++ .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_6.xml | 13 +++++++++++++ .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_dysmsapi_1_1_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_kms_2_11_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_ram_3_1_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_3_15_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_auth0_java_jwt_3_10_3.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_3_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_belerweb_pinyin4j_2_5_1.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_9.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_9.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_9.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_9.xml | 13 +++++++++++++ .idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_9.xml | 13 +++++++++++++ .idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml | 13 +++++++++++++ .idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml | 13 +++++++++++++ .idea/libraries/Maven__com_google_guava_guava_20_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_itextpdf_itext_asian_5_2_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_itextpdf_itextpdf_5_4_1.xml | 13 +++++++++++++ .idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml | 13 +++++++++++++ .idea/libraries/Maven__com_qcloud_cos_api_5_6_8.xml | 13 +++++++++++++ .idea/libraries/Maven__com_qcloud_vod_api_2_1_2.xml | 13 +++++++++++++ .idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_10_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_squareup_okhttp_logging_interceptor_2_7_5.xml | 13 +++++++++++++ .idea/libraries/Maven__com_squareup_okhttp_okhttp_2_7_5.xml | 13 +++++++++++++ .idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml | 13 +++++++++++++ .idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_1_322.xml | 13 +++++++++++++ .idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml | 13 +++++++++++++ .idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml | 13 +++++++++++++ .idea/libraries/Maven__commons_codec_commons_codec_1_11.xml | 13 +++++++++++++ .idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml | 13 +++++++++++++ .idea/libraries/Maven__commons_lang_commons_lang_2_5.xml | 13 +++++++++++++ .idea/libraries/Maven__commons_logging_commons_logging_1_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_buffer_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_codec_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_common_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_handler_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_resolver_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_netty_netty_transport_4_1_38_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__io_projectreactor_reactor_core_3_2_11_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml | 13 +++++++++++++ .idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml | 13 +++++++++++++ .idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml | 13 +++++++++++++ .idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml | 13 +++++++++++++ .idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml | 13 +++++++++++++ .idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml | 13 +++++++++++++ .idea/libraries/Maven__joda_time_joda_time_2_10_3.xml | 13 +++++++++++++ .idea/libraries/Maven__log4j_log4j_1_2_17.xml | 13 +++++++++++++ .idea/libraries/Maven__mysql_mysql_connector_java_8_0_17.xml | 13 +++++++++++++ .idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml | 13 +++++++++++++ .idea/libraries/Maven__net_polyv_polyv_java_live_sdk_2_0_4.xml | 13 +++++++++++++ .idea/libraries/Maven__net_polyv_polyv_java_sdk_common_2_0_4.xml | 13 +++++++++++++ .idea/libraries/Maven__net_sf_ehcache_ehcache_2_10_6.xml | 13 +++++++++++++ .idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml | 13 +++++++++++++ .idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_commons_commons_pool2_2_6_2.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_9.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_9.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_poi_poi_3_13.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_22.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_22.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_22.xml | 13 +++++++++++++ .idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml | 13 +++++++++++++ .idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_4.xml | 13 +++++++++++++ .idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml | 13 +++++++++++++ .idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml | 13 +++++++++++++ .idea/libraries/Maven__org_freemarker_freemarker_2_3_28.xml | 13 +++++++++++++ .idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_17_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml | 13 +++++++++++++ .idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml | 13 +++++++++++++ .idea/libraries/Maven__org_java_websocket_Java_WebSocket_1_5_1.xml | 13 +++++++++++++ .idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml | 13 +++++++++++++ .idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml | 13 +++++++++++++ .idea/libraries/Maven__org_mybatis_mybatis_3_5_4.xml | 13 +++++++++++++ .idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_4.xml | 13 +++++++++++++ .idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml | 13 +++++++++++++ .idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_1.xml | 13 +++++++++++++ .idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml | 13 +++++++++++++ .idea/libraries/Maven__org_scilab_forge_jlatexmath_1_0_7.xml | 13 +++++++++++++ .idea/libraries/Maven__org_scilab_forge_jlatexmath_font_cyrillic_1_0_7.xml | 13 +++++++++++++ .idea/libraries/Maven__org_scilab_forge_jlatexmath_font_greek_1_0_7.xml | 13 +++++++++++++ .idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml | 13 +++++++++++++ .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml | 13 +++++++++++++ .idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_26.xml | 13 +++++++++++++ .idea/libraries/Maven__org_slf4j_slf4j_simple_1_7_26.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_7_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_10_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_10_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_10_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_aop_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_beans_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_context_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_context_support_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_core_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_expression_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_jcl_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_jdbc_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_messaging_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_oxm_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_tx_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_web_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_webmvc_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_springframework_spring_websocket_5_1_9_RELEASE.xml | 13 +++++++++++++ .idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml | 13 +++++++++++++ .idea/libraries/Maven__redis_clients_jedis_3_3_0.xml | 13 +++++++++++++ .idea/libraries/Maven__stax_stax_api_1_0_1.xml | 13 +++++++++++++ .idea/libraries/jre1_8.xml | 9 +++++++++ .idea/misc.xml | 11 +++++++++++ .idea/modules.xml | 8 ++++++++ .idea/uiDesigner.xml | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .idea/vcs.xml | 6 ++++++ logs/springboot-logback-error.log | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ logs/springboot-logback-info.log | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ logs/springboot-logback/error/2023-05-08-0.log.gz | Bin 0 -> 2278 bytes logs/springboot-logback/error/2023-05-09-0.log.gz | Bin 0 -> 3133 bytes logs/springboot-logback/error/2023-05-10-0.log.gz | Bin 0 -> 1635 bytes logs/springboot-logback/error/2023-05-11-0.log.gz | Bin 0 -> 2042 bytes logs/springboot-logback/error/2023-05-19-0.log.gz | Bin 0 -> 2034 bytes logs/springboot-logback/error/2023-05-23-0.log.gz | Bin 0 -> 2947 bytes logs/springboot-logback/error/2023-06-06-0.log.gz | Bin 0 -> 3102 bytes logs/springboot-logback/error/2023-09-13-0.log.gz | Bin 0 -> 223 bytes logs/springboot-logback/error/2023-11-02-0.log.gz | Bin 0 -> 5196 bytes logs/springboot-logback/error/2024-03-01-0.log.gz | Bin 0 -> 457 bytes logs/springboot-logback/error/2024-03-04-0.log.gz | Bin 0 -> 336 bytes logs/springboot-logback/error/2024-04-23-0.log.gz | Bin 0 -> 799 bytes logs/springboot-logback/error/2024-04-28-0.log.gz | Bin 0 -> 3458 bytes logs/springboot-logback/error/2024-08-16-0.log.gz | Bin 0 -> 1607 bytes logs/springboot-logback/error/2024-08-20-0.log3632128746896100.tmp | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ logs/springboot-logback/error/2024-08-22-0.log.gz | Bin 0 -> 2270 bytes logs/springboot-logback/error/2024-08-26-0.log.gz | Bin 0 -> 4563 bytes logs/springboot-logback/error/2025-01-07-0.log.gz | Bin 0 -> 3326 bytes logs/springboot-logback/error/2025-01-08-0.log.gz | Bin 0 -> 1310 bytes logs/springboot-logback/error/2025-01-13-0.log.gz | Bin 0 -> 413 bytes logs/springboot-logback/error/2025-01-14-0.log.gz | Bin 0 -> 476 bytes logs/springboot-logback/error/2025-10-23-0.log.gz | Bin 0 -> 13830 bytes logs/springboot-logback/error/2025-10-30-0.log.gz | Bin 0 -> 2332 bytes logs/springboot-logback/error/2025-11-17-0.log.gz | Bin 0 -> 3457 bytes logs/springboot-logback/info/2024-08-26-0.log.gz | Bin 0 -> 8023 bytes logs/springboot-logback/info/2025-04-08-0.log.gz | Bin 0 -> 1054 bytes logs/springboot-logback/info/2025-04-09-0.log.gz | Bin 0 -> 3748 bytes logs/springboot-logback/info/2025-06-25-0.log.gz | Bin 0 -> 1697 bytes logs/springboot-logback/info/2025-10-28-0.log.gz | Bin 0 -> 1937 bytes logs/springboot-logback/info/2025-10-29-0.log.gz | Bin 0 -> 7722 bytes logs/springboot-logback/info/2025-10-30-0.log.gz | Bin 0 -> 14620 bytes logs/springboot-logback/info/2025-10-31-0.log.gz | Bin 0 -> 6006 bytes logs/springboot-logback/info/2025-11-03-0.log.gz | Bin 0 -> 5849 bytes logs/springboot-logback/info/2025-11-04-0.log.gz | Bin 0 -> 1697 bytes logs/springboot-logback/info/2025-11-05-0.log.gz | Bin 0 -> 3512 bytes logs/springboot-logback/info/2025-11-06-0.log.gz | Bin 0 -> 4911 bytes logs/springboot-logback/info/2025-11-17-0.log.gz | Bin 0 -> 5491 bytes mvnw | 310 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mvnw.cmd | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ show.iml | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/MeishuApplication.java | 40 ++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/ResponseData.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/ResponseVO.java | 21 +++++++++++++++++++++ src/main/java/com/subsidy/common/configure/AliyunSmsProperties.java | 28 ++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/MyTomcat.java | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/MybatisPlusConfig.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/PolyvConfig.java | 19 +++++++++++++++++++ src/main/java/com/subsidy/common/configure/QXueYouConfig.java | 18 ++++++++++++++++++ src/main/java/com/subsidy/common/configure/RedisConfig.java | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/RemoteProperties.java | 36 ++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/RenSheConfig.java | 20 ++++++++++++++++++++ src/main/java/com/subsidy/common/configure/RestTemplateConfig.java | 31 +++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/SubsidyConfig.java | 18 ++++++++++++++++++ src/main/java/com/subsidy/common/configure/SwaggerConfig.java | 43 +++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/VODConfig.java | 27 +++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/WebConfig.java | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/WebLogAspect.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/configure/WechatConfig.java | 24 ++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/AttendanceConstant.java | 29 +++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/Code.java | 33 +++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/CourseNotification.java | 8 ++++++++ src/main/java/com/subsidy/common/constant/MemberType.java | 11 +++++++++++ src/main/java/com/subsidy/common/constant/Platform.java | 27 +++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/ProjectReview.java | 29 +++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/ProjectSchedule.java | 15 +++++++++++++++ src/main/java/com/subsidy/common/constant/ProjectStatus.java | 32 ++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/ProjectTrack.java | 14 ++++++++++++++ src/main/java/com/subsidy/common/constant/ProjectType.java | 32 ++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/Role.java | 10 ++++++++++ src/main/java/com/subsidy/common/constant/SMSTemplate.java | 31 +++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/SmsCode.java | 24 ++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/VodConstant.java | 31 +++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/constant/WxConstant.java | 35 +++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/exception/GlobalExceptionHandler.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/exception/HttpException.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/handler/MetaHandler.java | 26 ++++++++++++++++++++++++++ src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/common/interceptor/LoginRequired.java | 20 ++++++++++++++++++++ src/main/java/com/subsidy/common/interceptor/TimeRequired.java | 10 ++++++++++ src/main/java/com/subsidy/controller/AdministerController.java | 22 ++++++++++++++++++++++ src/main/java/com/subsidy/mapper/AdministerMapper.java | 18 ++++++++++++++++++ src/main/java/com/subsidy/model/AdministerDO.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/service/AdministerService.java | 16 ++++++++++++++++ src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java | 20 ++++++++++++++++++++ src/main/java/com/subsidy/util/ActivityDetectionUtils.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/AliyunSmsUtil.java | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/Base64Util.java | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/BaseModel.java | 34 ++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/CodeGenerator.java | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/ConstantUtils.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/DateFormatUtil.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/DudaoConstant.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/EhCacheUtil.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/EncryptString.java | 42 ++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/EncryptUtil.java | 35 +++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/ExcelFormatUtils.java | 19 +++++++++++++++++++ src/main/java/com/subsidy/util/HttpUtil.java | 461 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/IpAddressUtil.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/JwtUtil.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/Localstorage.java | 31 +++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/MathUtil.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/MongoUtil.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/MyBeanUtils.java | 29 +++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/MyStringUtils.java | 30 ++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/OSSUtils.java | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/PDFUtil.java | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/PageHelper.java | 30 ++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/PolyvUtils.java | 31 +++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/RandomUtil.java | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/RedisUtil.java | 620 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/RenSheJuConstant.java | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/ResultMode.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/SMSUtils.java | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/SecretUtils.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/ShehuihuaConstant.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/Signature.java | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/TestMain.java | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/VodUtil.java | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/excel/ExcelColumn.java | 14 ++++++++++++++ src/main/java/com/subsidy/util/excel/ExcelColumnUtil.java | 22 ++++++++++++++++++++++ src/main/java/com/subsidy/util/excel/ExcelUtil.java | 506 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/tree/Node.java | 42 ++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/tree/NumberTree.java | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/subsidy/util/tree/SerialNumber.java | 28 ++++++++++++++++++++++++++++ src/main/resources/application-dev.properties | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/application-prod.properties | 32 ++++++++++++++++++++++++++++++++ src/main/resources/application.properties | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/code.properties | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/ehcache.xml | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/logback-spring.xml | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/mapper/AdministerMapper.xml | 37 +++++++++++++++++++++++++++++++++++++ src/main/resources/mybatis-plus.properties | 12 ++++++++++++ src/main/resources/mybatis.xml | 9 +++++++++ src/main/resources/templates/controller.java.ftl | 41 +++++++++++++++++++++++++++++++++++++++++ src/main/resources/templates/entity.java.ftl | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/templates/mapper.java.ftl | 22 ++++++++++++++++++++++ src/main/resources/templates/mapper.xml.ftl | 39 +++++++++++++++++++++++++++++++++++++++ src/main/resources/templates/service.java.ftl | 20 ++++++++++++++++++++ src/main/resources/templates/serviceImpl.java.ftl | 26 ++++++++++++++++++++++++++ target/classes/META-INF/spring-configuration-metadata.json | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/META-INF/subsidy.kotlin_module | Bin 0 -> 16 bytes target/classes/application-dev.properties | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/application-prod.properties | 32 ++++++++++++++++++++++++++++++++ target/classes/application.properties | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/code.properties | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/com/subsidy/MeishuApplication.class | Bin 0 -> 1093 bytes target/classes/com/subsidy/common/ResponseData.class | Bin 0 -> 3260 bytes target/classes/com/subsidy/common/ResponseVO$ResponseVOBuilder.class | Bin 0 -> 2372 bytes target/classes/com/subsidy/common/ResponseVO.class | Bin 0 -> 3970 bytes target/classes/com/subsidy/common/configure/AliyunSmsProperties.class | Bin 0 -> 4821 bytes target/classes/com/subsidy/common/configure/MyTomcat$GwsTomcatConnectionCustomizer.class | Bin 0 -> 1743 bytes target/classes/com/subsidy/common/configure/MyTomcat.class | Bin 0 -> 3380 bytes target/classes/com/subsidy/common/configure/MybatisPlusConfig.class | Bin 0 -> 1610 bytes target/classes/com/subsidy/common/configure/PolyvConfig.class | Bin 0 -> 2974 bytes target/classes/com/subsidy/common/configure/QXueYouConfig.class | Bin 0 -> 2541 bytes target/classes/com/subsidy/common/configure/RedisConfig.class | Bin 0 -> 5740 bytes target/classes/com/subsidy/common/configure/RemoteProperties.class | Bin 0 -> 1540 bytes target/classes/com/subsidy/common/configure/RenSheConfig.class | Bin 0 -> 2510 bytes target/classes/com/subsidy/common/configure/RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class | Bin 0 -> 1241 bytes target/classes/com/subsidy/common/configure/RestTemplateConfig.class | Bin 0 -> 1092 bytes target/classes/com/subsidy/common/configure/SubsidyConfig.class | Bin 0 -> 2541 bytes target/classes/com/subsidy/common/configure/SwaggerConfig.class | Bin 0 -> 2540 bytes target/classes/com/subsidy/common/configure/VODConfig.class | Bin 0 -> 3944 bytes target/classes/com/subsidy/common/configure/WebConfig.class | Bin 0 -> 4251 bytes target/classes/com/subsidy/common/configure/WebLogAspect.class | Bin 0 -> 1212 bytes target/classes/com/subsidy/common/configure/WechatConfig.class | Bin 0 -> 2998 bytes target/classes/com/subsidy/common/constant/AttendanceConstant.class | Bin 0 -> 860 bytes target/classes/com/subsidy/common/constant/Code.class | Bin 0 -> 2914 bytes target/classes/com/subsidy/common/constant/CourseNotification.class | Bin 0 -> 450 bytes target/classes/com/subsidy/common/constant/MemberType.class | Bin 0 -> 488 bytes target/classes/com/subsidy/common/constant/Platform.class | Bin 0 -> 1007 bytes target/classes/com/subsidy/common/constant/ProjectReview.class | Bin 0 -> 1140 bytes target/classes/com/subsidy/common/constant/ProjectSchedule.class | Bin 0 -> 1070 bytes target/classes/com/subsidy/common/constant/ProjectStatus.class | Bin 0 -> 1550 bytes target/classes/com/subsidy/common/constant/ProjectTrack.class | Bin 0 -> 1075 bytes target/classes/com/subsidy/common/constant/ProjectType.class | Bin 0 -> 706 bytes target/classes/com/subsidy/common/constant/Role.class | Bin 0 -> 416 bytes target/classes/com/subsidy/common/constant/SMSTemplate.class | Bin 0 -> 594 bytes target/classes/com/subsidy/common/constant/SmsCode.class | Bin 0 -> 509 bytes target/classes/com/subsidy/common/constant/VodConstant.class | Bin 0 -> 736 bytes target/classes/com/subsidy/common/constant/WxConstant.class | Bin 0 -> 914 bytes target/classes/com/subsidy/common/exception/GlobalExceptionHandler.class | Bin 0 -> 6919 bytes target/classes/com/subsidy/common/exception/HttpException.class | Bin 0 -> 1225 bytes target/classes/com/subsidy/common/handler/MetaHandler.class | Bin 0 -> 1073 bytes target/classes/com/subsidy/common/interceptor/AuthenticationInterceptor.class | Bin 0 -> 3961 bytes target/classes/com/subsidy/common/interceptor/LoginRequired.class | Bin 0 -> 521 bytes target/classes/com/subsidy/common/interceptor/TimeRequired.class | Bin 0 -> 487 bytes target/classes/com/subsidy/controller/AdministerController.class | Bin 0 -> 597 bytes target/classes/com/subsidy/mapper/AdministerMapper.class | Bin 0 -> 397 bytes target/classes/com/subsidy/model/AdministerDO.class | Bin 0 -> 9528 bytes target/classes/com/subsidy/service/AdministerService.class | Bin 0 -> 322 bytes target/classes/com/subsidy/service/impl/AdministerServiceImpl.class | Bin 0 -> 703 bytes target/classes/com/subsidy/util/ActivityDetectionUtils.class | Bin 0 -> 2816 bytes target/classes/com/subsidy/util/AliyunSmsUtil.class | Bin 0 -> 7265 bytes target/classes/com/subsidy/util/Base64Util.class | Bin 0 -> 2922 bytes target/classes/com/subsidy/util/BaseModel.class | Bin 0 -> 2964 bytes target/classes/com/subsidy/util/CodeGenerator$1.class | Bin 0 -> 535 bytes target/classes/com/subsidy/util/CodeGenerator$2.class | Bin 0 -> 1431 bytes target/classes/com/subsidy/util/CodeGenerator.class | Bin 0 -> 7691 bytes target/classes/com/subsidy/util/ConstantUtils.class | Bin 0 -> 2632 bytes target/classes/com/subsidy/util/DateFormatUtil.class | Bin 0 -> 3494 bytes target/classes/com/subsidy/util/DudaoConstant.class | Bin 0 -> 824 bytes target/classes/com/subsidy/util/EhCacheUtil.class | Bin 0 -> 2139 bytes target/classes/com/subsidy/util/EncryptString.class | Bin 0 -> 1539 bytes target/classes/com/subsidy/util/ExcelFormatUtils.class | Bin 0 -> 1597 bytes target/classes/com/subsidy/util/HttpUtil$1.class | Bin 0 -> 1170 bytes target/classes/com/subsidy/util/HttpUtil$2.class | Bin 0 -> 1165 bytes target/classes/com/subsidy/util/HttpUtil$3.class | Bin 0 -> 1171 bytes target/classes/com/subsidy/util/HttpUtil$4.class | Bin 0 -> 1182 bytes target/classes/com/subsidy/util/HttpUtil$DataParse.class | Bin 0 -> 518 bytes target/classes/com/subsidy/util/HttpUtil.class | Bin 0 -> 11046 bytes target/classes/com/subsidy/util/IpAddressUtil.class | Bin 0 -> 3326 bytes target/classes/com/subsidy/util/JwtUtil.class | Bin 0 -> 3450 bytes target/classes/com/subsidy/util/Localstorage.class | Bin 0 -> 2204 bytes target/classes/com/subsidy/util/MathUtil.class | Bin 0 -> 5361 bytes target/classes/com/subsidy/util/MyBeanUtils.class | Bin 0 -> 1565 bytes target/classes/com/subsidy/util/MyStringUtils.class | Bin 0 -> 1237 bytes target/classes/com/subsidy/util/OSSUtils.class | Bin 0 -> 4462 bytes target/classes/com/subsidy/util/PDFUtil.class | Bin 0 -> 7486 bytes target/classes/com/subsidy/util/PageHelper.class | Bin 0 -> 3418 bytes target/classes/com/subsidy/util/PolyvUtils.class | Bin 0 -> 1504 bytes target/classes/com/subsidy/util/RandomUtil.class | Bin 0 -> 3480 bytes target/classes/com/subsidy/util/RedisUtil.class | Bin 0 -> 14903 bytes target/classes/com/subsidy/util/RenSheJuConstant.class | Bin 0 -> 926 bytes target/classes/com/subsidy/util/ResultMode.class | Bin 0 -> 1273 bytes target/classes/com/subsidy/util/SMSUtils.class | Bin 0 -> 7093 bytes target/classes/com/subsidy/util/SecretUtils.class | Bin 0 -> 4163 bytes target/classes/com/subsidy/util/ShehuihuaConstant.class | Bin 0 -> 1021 bytes target/classes/com/subsidy/util/Signature.class | Bin 0 -> 3538 bytes target/classes/com/subsidy/util/TestMain.class | Bin 0 -> 2946 bytes target/classes/com/subsidy/util/VodUtil.class | Bin 0 -> 5507 bytes target/classes/com/subsidy/util/excel/ExcelColumn.class | Bin 0 -> 534 bytes target/classes/com/subsidy/util/excel/ExcelColumnUtil.class | Bin 0 -> 542 bytes target/classes/com/subsidy/util/excel/ExcelUtil.class | Bin 0 -> 21088 bytes target/classes/com/subsidy/util/tree/Node.class | Bin 0 -> 3629 bytes target/classes/com/subsidy/util/tree/NumberTree.class | Bin 0 -> 8857 bytes target/classes/com/subsidy/util/tree/SerialNumber.class | Bin 0 -> 1193 bytes target/classes/ehcache.xml | 44 ++++++++++++++++++++++++++++++++++++++++++++ target/classes/logback-spring.xml | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/mapper/AdministerMapper.xml | 37 +++++++++++++++++++++++++++++++++++++ target/classes/mybatis-plus.properties | 12 ++++++++++++ target/classes/mybatis.xml | 9 +++++++++ target/classes/templates/controller.java.ftl | 41 +++++++++++++++++++++++++++++++++++++++++ target/classes/templates/entity.java.ftl | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/classes/templates/mapper.java.ftl | 22 ++++++++++++++++++++++ target/classes/templates/mapper.xml.ftl | 39 +++++++++++++++++++++++++++++++++++++++ target/classes/templates/service.java.ftl | 20 ++++++++++++++++++++ target/classes/templates/serviceImpl.java.ftl | 26 ++++++++++++++++++++++++++ target/ecnutracks.jar | Bin 0 -> 119454676 bytes target/ecnutracks.jar.original | Bin 0 -> 493171 bytes target/maven-archiver/pom.properties | 3 +++ target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 413 files changed, 11861 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml create mode 100644 .idea/libraries/Maven__cn_hutool_hutool_all_5_5_2.xml create mode 100644 .idea/libraries/Maven__com_alibaba_druid_1_1_22.xml create mode 100644 .idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml create mode 100644 .idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml create mode 100644 .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_6.xml create mode 100644 .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_dysmsapi_1_1_0.xml create mode 100644 .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_kms_2_11_0.xml create mode 100644 .idea/libraries/Maven__com_aliyun_aliyun_java_sdk_ram_3_1_0.xml create mode 100644 .idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_3_15_0.xml create mode 100644 .idea/libraries/Maven__com_auth0_java_jwt_3_10_3.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_0.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_0.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml create mode 100644 .idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_3_2.xml create mode 100644 .idea/libraries/Maven__com_belerweb_pinyin4j_2_5_1.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_9.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_9.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_9.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_9.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_9.xml create mode 100644 .idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml create mode 100644 .idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml create mode 100644 .idea/libraries/Maven__com_google_guava_guava_20_0.xml create mode 100644 .idea/libraries/Maven__com_itextpdf_itext_asian_5_2_0.xml create mode 100644 .idea/libraries/Maven__com_itextpdf_itextpdf_5_4_1.xml create mode 100644 .idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml create mode 100644 .idea/libraries/Maven__com_qcloud_cos_api_5_6_8.xml create mode 100644 .idea/libraries/Maven__com_qcloud_vod_api_2_1_2.xml create mode 100644 .idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_10_0.xml create mode 100644 .idea/libraries/Maven__com_squareup_okhttp_logging_interceptor_2_7_5.xml create mode 100644 .idea/libraries/Maven__com_squareup_okhttp_okhttp_2_7_5.xml create mode 100644 .idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml create mode 100644 .idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_1_322.xml create mode 100644 .idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml create mode 100644 .idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml create mode 100644 .idea/libraries/Maven__commons_codec_commons_codec_1_11.xml create mode 100644 .idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml create mode 100644 .idea/libraries/Maven__commons_lang_commons_lang_2_5.xml create mode 100644 .idea/libraries/Maven__commons_logging_commons_logging_1_2.xml create mode 100644 .idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_buffer_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_codec_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_common_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_handler_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_resolver_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_netty_netty_transport_4_1_38_Final.xml create mode 100644 .idea/libraries/Maven__io_projectreactor_reactor_core_3_2_11_RELEASE.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml create mode 100644 .idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml create mode 100644 .idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml create mode 100644 .idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml create mode 100644 .idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml create mode 100644 .idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml create mode 100644 .idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml create mode 100644 .idea/libraries/Maven__joda_time_joda_time_2_10_3.xml create mode 100644 .idea/libraries/Maven__log4j_log4j_1_2_17.xml create mode 100644 .idea/libraries/Maven__mysql_mysql_connector_java_8_0_17.xml create mode 100644 .idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml create mode 100644 .idea/libraries/Maven__net_polyv_polyv_java_live_sdk_2_0_4.xml create mode 100644 .idea/libraries/Maven__net_polyv_polyv_java_sdk_common_2_0_4.xml create mode 100644 .idea/libraries/Maven__net_sf_ehcache_ehcache_2_10_6.xml create mode 100644 .idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml create mode 100644 .idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_pool2_2_6_2.xml create mode 100644 .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_9.xml create mode 100644 .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml create mode 100644 .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_9.xml create mode 100644 .idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml create mode 100644 .idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_3_13.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_22.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_22.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_22.xml create mode 100644 .idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml create mode 100644 .idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_4.xml create mode 100644 .idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml create mode 100644 .idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml create mode 100644 .idea/libraries/Maven__org_freemarker_freemarker_2_3_28.xml create mode 100644 .idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_17_Final.xml create mode 100644 .idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml create mode 100644 .idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml create mode 100644 .idea/libraries/Maven__org_java_websocket_Java_WebSocket_1_5_1.xml create mode 100644 .idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml create mode 100644 .idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml create mode 100644 .idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_3_5_4.xml create mode 100644 .idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_4.xml create mode 100644 .idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml create mode 100644 .idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_1.xml create mode 100644 .idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml create mode 100644 .idea/libraries/Maven__org_scilab_forge_jlatexmath_1_0_7.xml create mode 100644 .idea/libraries/Maven__org_scilab_forge_jlatexmath_font_cyrillic_1_0_7.xml create mode 100644 .idea/libraries/Maven__org_scilab_forge_jlatexmath_font_greek_1_0_7.xml create mode 100644 .idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_26.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_simple_1_7_26.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_7_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_10_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_10_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_10_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_aop_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_beans_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_context_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_context_support_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_core_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_expression_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_jcl_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_jdbc_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_messaging_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_oxm_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_tx_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_web_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_webmvc_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_websocket_5_1_9_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml create mode 100644 .idea/libraries/Maven__redis_clients_jedis_3_3_0.xml create mode 100644 .idea/libraries/Maven__stax_stax_api_1_0_1.xml create mode 100644 .idea/libraries/jre1_8.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 logs/springboot-logback-error.log create mode 100644 logs/springboot-logback-info.log create mode 100644 logs/springboot-logback/error/2023-05-08-0.log.gz create mode 100644 logs/springboot-logback/error/2023-05-09-0.log.gz create mode 100644 logs/springboot-logback/error/2023-05-10-0.log.gz create mode 100644 logs/springboot-logback/error/2023-05-11-0.log.gz create mode 100644 logs/springboot-logback/error/2023-05-19-0.log.gz create mode 100644 logs/springboot-logback/error/2023-05-23-0.log.gz create mode 100644 logs/springboot-logback/error/2023-06-06-0.log.gz create mode 100644 logs/springboot-logback/error/2023-09-13-0.log.gz create mode 100644 logs/springboot-logback/error/2023-11-02-0.log.gz create mode 100644 logs/springboot-logback/error/2024-03-01-0.log.gz create mode 100644 logs/springboot-logback/error/2024-03-04-0.log.gz create mode 100644 logs/springboot-logback/error/2024-04-23-0.log.gz create mode 100644 logs/springboot-logback/error/2024-04-28-0.log.gz create mode 100644 logs/springboot-logback/error/2024-08-16-0.log.gz create mode 100644 logs/springboot-logback/error/2024-08-20-0.log3632128746896100.tmp create mode 100644 logs/springboot-logback/error/2024-08-22-0.log.gz create mode 100644 logs/springboot-logback/error/2024-08-26-0.log.gz create mode 100644 logs/springboot-logback/error/2025-01-07-0.log.gz create mode 100644 logs/springboot-logback/error/2025-01-08-0.log.gz create mode 100644 logs/springboot-logback/error/2025-01-13-0.log.gz create mode 100644 logs/springboot-logback/error/2025-01-14-0.log.gz create mode 100644 logs/springboot-logback/error/2025-10-23-0.log.gz create mode 100644 logs/springboot-logback/error/2025-10-30-0.log.gz create mode 100644 logs/springboot-logback/error/2025-11-17-0.log.gz create mode 100644 logs/springboot-logback/info/2024-08-26-0.log.gz create mode 100644 logs/springboot-logback/info/2025-04-08-0.log.gz create mode 100644 logs/springboot-logback/info/2025-04-09-0.log.gz create mode 100644 logs/springboot-logback/info/2025-06-25-0.log.gz create mode 100644 logs/springboot-logback/info/2025-10-28-0.log.gz create mode 100644 logs/springboot-logback/info/2025-10-29-0.log.gz create mode 100644 logs/springboot-logback/info/2025-10-30-0.log.gz create mode 100644 logs/springboot-logback/info/2025-10-31-0.log.gz create mode 100644 logs/springboot-logback/info/2025-11-03-0.log.gz create mode 100644 logs/springboot-logback/info/2025-11-04-0.log.gz create mode 100644 logs/springboot-logback/info/2025-11-05-0.log.gz create mode 100644 logs/springboot-logback/info/2025-11-06-0.log.gz create mode 100644 logs/springboot-logback/info/2025-11-17-0.log.gz create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 show.iml create mode 100644 src/main/java/com/subsidy/MeishuApplication.java create mode 100644 src/main/java/com/subsidy/common/ResponseData.java create mode 100644 src/main/java/com/subsidy/common/ResponseVO.java create mode 100644 src/main/java/com/subsidy/common/configure/AliyunSmsProperties.java create mode 100644 src/main/java/com/subsidy/common/configure/MyTomcat.java create mode 100644 src/main/java/com/subsidy/common/configure/MybatisPlusConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/PolyvConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/QXueYouConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/RedisConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/RemoteProperties.java create mode 100644 src/main/java/com/subsidy/common/configure/RenSheConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/RestTemplateConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/SubsidyConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/SwaggerConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/VODConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/WebConfig.java create mode 100644 src/main/java/com/subsidy/common/configure/WebLogAspect.java create mode 100644 src/main/java/com/subsidy/common/configure/WechatConfig.java create mode 100644 src/main/java/com/subsidy/common/constant/AttendanceConstant.java create mode 100644 src/main/java/com/subsidy/common/constant/Code.java create mode 100644 src/main/java/com/subsidy/common/constant/CourseNotification.java create mode 100644 src/main/java/com/subsidy/common/constant/MemberType.java create mode 100644 src/main/java/com/subsidy/common/constant/Platform.java create mode 100644 src/main/java/com/subsidy/common/constant/ProjectReview.java create mode 100644 src/main/java/com/subsidy/common/constant/ProjectSchedule.java create mode 100644 src/main/java/com/subsidy/common/constant/ProjectStatus.java create mode 100644 src/main/java/com/subsidy/common/constant/ProjectTrack.java create mode 100644 src/main/java/com/subsidy/common/constant/ProjectType.java create mode 100644 src/main/java/com/subsidy/common/constant/Role.java create mode 100644 src/main/java/com/subsidy/common/constant/SMSTemplate.java create mode 100644 src/main/java/com/subsidy/common/constant/SmsCode.java create mode 100644 src/main/java/com/subsidy/common/constant/VodConstant.java create mode 100644 src/main/java/com/subsidy/common/constant/WxConstant.java create mode 100644 src/main/java/com/subsidy/common/exception/GlobalExceptionHandler.java create mode 100644 src/main/java/com/subsidy/common/exception/HttpException.java create mode 100644 src/main/java/com/subsidy/common/handler/MetaHandler.java create mode 100644 src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java create mode 100644 src/main/java/com/subsidy/common/interceptor/LoginRequired.java create mode 100644 src/main/java/com/subsidy/common/interceptor/TimeRequired.java create mode 100644 src/main/java/com/subsidy/controller/AdministerController.java create mode 100644 src/main/java/com/subsidy/mapper/AdministerMapper.java create mode 100644 src/main/java/com/subsidy/model/AdministerDO.java create mode 100644 src/main/java/com/subsidy/service/AdministerService.java create mode 100644 src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java create mode 100644 src/main/java/com/subsidy/util/ActivityDetectionUtils.java create mode 100644 src/main/java/com/subsidy/util/AliyunSmsUtil.java create mode 100644 src/main/java/com/subsidy/util/Base64Util.java create mode 100644 src/main/java/com/subsidy/util/BaseModel.java create mode 100644 src/main/java/com/subsidy/util/CodeGenerator.java create mode 100644 src/main/java/com/subsidy/util/ConstantUtils.java create mode 100644 src/main/java/com/subsidy/util/DateFormatUtil.java create mode 100644 src/main/java/com/subsidy/util/DudaoConstant.java create mode 100644 src/main/java/com/subsidy/util/EhCacheUtil.java create mode 100644 src/main/java/com/subsidy/util/EncryptString.java create mode 100644 src/main/java/com/subsidy/util/EncryptUtil.java create mode 100644 src/main/java/com/subsidy/util/ExcelFormatUtils.java create mode 100644 src/main/java/com/subsidy/util/HttpUtil.java create mode 100644 src/main/java/com/subsidy/util/IpAddressUtil.java create mode 100644 src/main/java/com/subsidy/util/JwtUtil.java create mode 100644 src/main/java/com/subsidy/util/Localstorage.java create mode 100644 src/main/java/com/subsidy/util/MathUtil.java create mode 100644 src/main/java/com/subsidy/util/MongoUtil.java create mode 100644 src/main/java/com/subsidy/util/MyBeanUtils.java create mode 100644 src/main/java/com/subsidy/util/MyStringUtils.java create mode 100644 src/main/java/com/subsidy/util/OSSUtils.java create mode 100644 src/main/java/com/subsidy/util/PDFUtil.java create mode 100644 src/main/java/com/subsidy/util/PageHelper.java create mode 100644 src/main/java/com/subsidy/util/PolyvUtils.java create mode 100644 src/main/java/com/subsidy/util/RandomUtil.java create mode 100644 src/main/java/com/subsidy/util/RedisUtil.java create mode 100644 src/main/java/com/subsidy/util/RenSheJuConstant.java create mode 100644 src/main/java/com/subsidy/util/ResultMode.java create mode 100644 src/main/java/com/subsidy/util/SMSUtils.java create mode 100644 src/main/java/com/subsidy/util/SecretUtils.java create mode 100644 src/main/java/com/subsidy/util/ShehuihuaConstant.java create mode 100644 src/main/java/com/subsidy/util/Signature.java create mode 100644 src/main/java/com/subsidy/util/TestMain.java create mode 100644 src/main/java/com/subsidy/util/VodUtil.java create mode 100644 src/main/java/com/subsidy/util/excel/ExcelColumn.java create mode 100644 src/main/java/com/subsidy/util/excel/ExcelColumnUtil.java create mode 100644 src/main/java/com/subsidy/util/excel/ExcelUtil.java create mode 100644 src/main/java/com/subsidy/util/tree/Node.java create mode 100644 src/main/java/com/subsidy/util/tree/NumberTree.java create mode 100644 src/main/java/com/subsidy/util/tree/SerialNumber.java create mode 100644 src/main/resources/application-dev.properties create mode 100644 src/main/resources/application-prod.properties create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/code.properties create mode 100644 src/main/resources/ehcache.xml create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/mapper/AdministerMapper.xml create mode 100644 src/main/resources/mybatis-plus.properties create mode 100644 src/main/resources/mybatis.xml create mode 100644 src/main/resources/templates/controller.java.ftl create mode 100644 src/main/resources/templates/entity.java.ftl create mode 100644 src/main/resources/templates/mapper.java.ftl create mode 100644 src/main/resources/templates/mapper.xml.ftl create mode 100644 src/main/resources/templates/service.java.ftl create mode 100644 src/main/resources/templates/serviceImpl.java.ftl create mode 100644 target/classes/META-INF/spring-configuration-metadata.json create mode 100644 target/classes/META-INF/subsidy.kotlin_module create mode 100644 target/classes/application-dev.properties create mode 100644 target/classes/application-prod.properties create mode 100644 target/classes/application.properties create mode 100644 target/classes/code.properties create mode 100644 target/classes/com/subsidy/MeishuApplication.class create mode 100644 target/classes/com/subsidy/common/ResponseData.class create mode 100644 target/classes/com/subsidy/common/ResponseVO$ResponseVOBuilder.class create mode 100644 target/classes/com/subsidy/common/ResponseVO.class create mode 100644 target/classes/com/subsidy/common/configure/AliyunSmsProperties.class create mode 100644 target/classes/com/subsidy/common/configure/MyTomcat$GwsTomcatConnectionCustomizer.class create mode 100644 target/classes/com/subsidy/common/configure/MyTomcat.class create mode 100644 target/classes/com/subsidy/common/configure/MybatisPlusConfig.class create mode 100644 target/classes/com/subsidy/common/configure/PolyvConfig.class create mode 100644 target/classes/com/subsidy/common/configure/QXueYouConfig.class create mode 100644 target/classes/com/subsidy/common/configure/RedisConfig.class create mode 100644 target/classes/com/subsidy/common/configure/RemoteProperties.class create mode 100644 target/classes/com/subsidy/common/configure/RenSheConfig.class create mode 100644 target/classes/com/subsidy/common/configure/RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class create mode 100644 target/classes/com/subsidy/common/configure/RestTemplateConfig.class create mode 100644 target/classes/com/subsidy/common/configure/SubsidyConfig.class create mode 100644 target/classes/com/subsidy/common/configure/SwaggerConfig.class create mode 100644 target/classes/com/subsidy/common/configure/VODConfig.class create mode 100644 target/classes/com/subsidy/common/configure/WebConfig.class create mode 100644 target/classes/com/subsidy/common/configure/WebLogAspect.class create mode 100644 target/classes/com/subsidy/common/configure/WechatConfig.class create mode 100644 target/classes/com/subsidy/common/constant/AttendanceConstant.class create mode 100644 target/classes/com/subsidy/common/constant/Code.class create mode 100644 target/classes/com/subsidy/common/constant/CourseNotification.class create mode 100644 target/classes/com/subsidy/common/constant/MemberType.class create mode 100644 target/classes/com/subsidy/common/constant/Platform.class create mode 100644 target/classes/com/subsidy/common/constant/ProjectReview.class create mode 100644 target/classes/com/subsidy/common/constant/ProjectSchedule.class create mode 100644 target/classes/com/subsidy/common/constant/ProjectStatus.class create mode 100644 target/classes/com/subsidy/common/constant/ProjectTrack.class create mode 100644 target/classes/com/subsidy/common/constant/ProjectType.class create mode 100644 target/classes/com/subsidy/common/constant/Role.class create mode 100644 target/classes/com/subsidy/common/constant/SMSTemplate.class create mode 100644 target/classes/com/subsidy/common/constant/SmsCode.class create mode 100644 target/classes/com/subsidy/common/constant/VodConstant.class create mode 100644 target/classes/com/subsidy/common/constant/WxConstant.class create mode 100644 target/classes/com/subsidy/common/exception/GlobalExceptionHandler.class create mode 100644 target/classes/com/subsidy/common/exception/HttpException.class create mode 100644 target/classes/com/subsidy/common/handler/MetaHandler.class create mode 100644 target/classes/com/subsidy/common/interceptor/AuthenticationInterceptor.class create mode 100644 target/classes/com/subsidy/common/interceptor/LoginRequired.class create mode 100644 target/classes/com/subsidy/common/interceptor/TimeRequired.class create mode 100644 target/classes/com/subsidy/controller/AdministerController.class create mode 100644 target/classes/com/subsidy/mapper/AdministerMapper.class create mode 100644 target/classes/com/subsidy/model/AdministerDO.class create mode 100644 target/classes/com/subsidy/service/AdministerService.class create mode 100644 target/classes/com/subsidy/service/impl/AdministerServiceImpl.class create mode 100644 target/classes/com/subsidy/util/ActivityDetectionUtils.class create mode 100644 target/classes/com/subsidy/util/AliyunSmsUtil.class create mode 100644 target/classes/com/subsidy/util/Base64Util.class create mode 100644 target/classes/com/subsidy/util/BaseModel.class create mode 100644 target/classes/com/subsidy/util/CodeGenerator$1.class create mode 100644 target/classes/com/subsidy/util/CodeGenerator$2.class create mode 100644 target/classes/com/subsidy/util/CodeGenerator.class create mode 100644 target/classes/com/subsidy/util/ConstantUtils.class create mode 100644 target/classes/com/subsidy/util/DateFormatUtil.class create mode 100644 target/classes/com/subsidy/util/DudaoConstant.class create mode 100644 target/classes/com/subsidy/util/EhCacheUtil.class create mode 100644 target/classes/com/subsidy/util/EncryptString.class create mode 100644 target/classes/com/subsidy/util/ExcelFormatUtils.class create mode 100644 target/classes/com/subsidy/util/HttpUtil$1.class create mode 100644 target/classes/com/subsidy/util/HttpUtil$2.class create mode 100644 target/classes/com/subsidy/util/HttpUtil$3.class create mode 100644 target/classes/com/subsidy/util/HttpUtil$4.class create mode 100644 target/classes/com/subsidy/util/HttpUtil$DataParse.class create mode 100644 target/classes/com/subsidy/util/HttpUtil.class create mode 100644 target/classes/com/subsidy/util/IpAddressUtil.class create mode 100644 target/classes/com/subsidy/util/JwtUtil.class create mode 100644 target/classes/com/subsidy/util/Localstorage.class create mode 100644 target/classes/com/subsidy/util/MathUtil.class create mode 100644 target/classes/com/subsidy/util/MyBeanUtils.class create mode 100644 target/classes/com/subsidy/util/MyStringUtils.class create mode 100644 target/classes/com/subsidy/util/OSSUtils.class create mode 100644 target/classes/com/subsidy/util/PDFUtil.class create mode 100644 target/classes/com/subsidy/util/PageHelper.class create mode 100644 target/classes/com/subsidy/util/PolyvUtils.class create mode 100644 target/classes/com/subsidy/util/RandomUtil.class create mode 100644 target/classes/com/subsidy/util/RedisUtil.class create mode 100644 target/classes/com/subsidy/util/RenSheJuConstant.class create mode 100644 target/classes/com/subsidy/util/ResultMode.class create mode 100644 target/classes/com/subsidy/util/SMSUtils.class create mode 100644 target/classes/com/subsidy/util/SecretUtils.class create mode 100644 target/classes/com/subsidy/util/ShehuihuaConstant.class create mode 100644 target/classes/com/subsidy/util/Signature.class create mode 100644 target/classes/com/subsidy/util/TestMain.class create mode 100644 target/classes/com/subsidy/util/VodUtil.class create mode 100644 target/classes/com/subsidy/util/excel/ExcelColumn.class create mode 100644 target/classes/com/subsidy/util/excel/ExcelColumnUtil.class create mode 100644 target/classes/com/subsidy/util/excel/ExcelUtil.class create mode 100644 target/classes/com/subsidy/util/tree/Node.class create mode 100644 target/classes/com/subsidy/util/tree/NumberTree.class create mode 100644 target/classes/com/subsidy/util/tree/SerialNumber.class create mode 100644 target/classes/ehcache.xml create mode 100644 target/classes/logback-spring.xml create mode 100644 target/classes/mapper/AdministerMapper.xml create mode 100644 target/classes/mybatis-plus.properties create mode 100644 target/classes/mybatis.xml create mode 100644 target/classes/templates/controller.java.ftl create mode 100644 target/classes/templates/entity.java.ftl create mode 100644 target/classes/templates/mapper.java.ftl create mode 100644 target/classes/templates/mapper.xml.ftl create mode 100644 target/classes/templates/service.java.ftl create mode 100644 target/classes/templates/serviceImpl.java.ftl create mode 100644 target/ecnutracks.jar create mode 100644 target/ecnutracks.jar.original create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..43b7309 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..803f754 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml new file mode 100644 index 0000000..e2fb2e1 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml new file mode 100644 index 0000000..a7b6930 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_2.xml b/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_2.xml new file mode 100644 index 0000000..ce22152 --- /dev/null +++ b/.idea/libraries/Maven__cn_hutool_hutool_all_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_alibaba_druid_1_1_22.xml b/.idea/libraries/Maven__com_alibaba_druid_1_1_22.xml new file mode 100644 index 0000000..4b49ca8 --- /dev/null +++ b/.idea/libraries/Maven__com_alibaba_druid_1_1_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml b/.idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml new file mode 100644 index 0000000..014cd85 --- /dev/null +++ b/.idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml new file mode 100644 index 0000000..4c5b70b --- /dev/null +++ b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_6.xml b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_6.xml new file mode 100644 index 0000000..f0c57bc --- /dev/null +++ b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_dysmsapi_1_1_0.xml b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_dysmsapi_1_1_0.xml new file mode 100644 index 0000000..56d4212 --- /dev/null +++ b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_dysmsapi_1_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_kms_2_11_0.xml b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_kms_2_11_0.xml new file mode 100644 index 0000000..fa4f3d2 --- /dev/null +++ b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_kms_2_11_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_ram_3_1_0.xml b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_ram_3_1_0.xml new file mode 100644 index 0000000..c64ec20 --- /dev/null +++ b/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_ram_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_3_15_0.xml b/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_3_15_0.xml new file mode 100644 index 0000000..e8e3807 --- /dev/null +++ b/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_3_15_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_auth0_java_jwt_3_10_3.xml b/.idea/libraries/Maven__com_auth0_java_jwt_3_10_3.xml new file mode 100644 index 0000000..1cda498 --- /dev/null +++ b/.idea/libraries/Maven__com_auth0_java_jwt_3_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_0.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_0.xml new file mode 100644 index 0000000..0f6bccd --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml new file mode 100644 index 0000000..963e09f --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_0.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_0.xml new file mode 100644 index 0000000..f3c8ba9 --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml new file mode 100644 index 0000000..ef966cc --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml new file mode 100644 index 0000000..b1c37a1 --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_3_2.xml b/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_3_2.xml new file mode 100644 index 0000000..9ce3685 --- /dev/null +++ b/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_belerweb_pinyin4j_2_5_1.xml b/.idea/libraries/Maven__com_belerweb_pinyin4j_2_5_1.xml new file mode 100644 index 0000000..620aade --- /dev/null +++ b/.idea/libraries/Maven__com_belerweb_pinyin4j_2_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml new file mode 100644 index 0000000..7a2837b --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml new file mode 100644 index 0000000..06e66b4 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_9.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_9.xml new file mode 100644 index 0000000..075c590 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_9.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_9.xml new file mode 100644 index 0000000..393e395 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_9.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_9.xml new file mode 100644 index 0000000..503e2bb --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_9.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_9.xml new file mode 100644 index 0000000..9cead13 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_9.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_9.xml new file mode 100644 index 0000000..6de24de --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml b/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml new file mode 100644 index 0000000..877d237 --- /dev/null +++ b/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml new file mode 100644 index 0000000..34dcded --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_guava_guava_20_0.xml b/.idea/libraries/Maven__com_google_guava_guava_20_0.xml new file mode 100644 index 0000000..52520f6 --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_itextpdf_itext_asian_5_2_0.xml b/.idea/libraries/Maven__com_itextpdf_itext_asian_5_2_0.xml new file mode 100644 index 0000000..c630c04 --- /dev/null +++ b/.idea/libraries/Maven__com_itextpdf_itext_asian_5_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_itextpdf_itextpdf_5_4_1.xml b/.idea/libraries/Maven__com_itextpdf_itextpdf_5_4_1.xml new file mode 100644 index 0000000..c363e74 --- /dev/null +++ b/.idea/libraries/Maven__com_itextpdf_itextpdf_5_4_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml b/.idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml new file mode 100644 index 0000000..6539059 --- /dev/null +++ b/.idea/libraries/Maven__com_mchange_mchange_commons_java_0_2_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_qcloud_cos_api_5_6_8.xml b/.idea/libraries/Maven__com_qcloud_cos_api_5_6_8.xml new file mode 100644 index 0000000..a2d4963 --- /dev/null +++ b/.idea/libraries/Maven__com_qcloud_cos_api_5_6_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_qcloud_vod_api_2_1_2.xml b/.idea/libraries/Maven__com_qcloud_vod_api_2_1_2.xml new file mode 100644 index 0000000..1659d25 --- /dev/null +++ b/.idea/libraries/Maven__com_qcloud_vod_api_2_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_10_0.xml b/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_10_0.xml new file mode 100644 index 0000000..0932313 --- /dev/null +++ b/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_10_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_squareup_okhttp_logging_interceptor_2_7_5.xml b/.idea/libraries/Maven__com_squareup_okhttp_logging_interceptor_2_7_5.xml new file mode 100644 index 0000000..d4577dd --- /dev/null +++ b/.idea/libraries/Maven__com_squareup_okhttp_logging_interceptor_2_7_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_squareup_okhttp_okhttp_2_7_5.xml b/.idea/libraries/Maven__com_squareup_okhttp_okhttp_2_7_5.xml new file mode 100644 index 0000000..75ec209 --- /dev/null +++ b/.idea/libraries/Maven__com_squareup_okhttp_okhttp_2_7_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml b/.idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml new file mode 100644 index 0000000..199dabd --- /dev/null +++ b/.idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_1_322.xml b/.idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_1_322.xml new file mode 100644 index 0000000..09b109e --- /dev/null +++ b/.idea/libraries/Maven__com_tencentcloudapi_tencentcloud_sdk_java_3_1_322.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml b/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml new file mode 100644 index 0000000..e8a9be1 --- /dev/null +++ b/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml b/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml new file mode 100644 index 0000000..3357d6a --- /dev/null +++ b/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml new file mode 100644 index 0000000..3cb0a36 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml new file mode 100644 index 0000000..64f73dc --- /dev/null +++ b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_lang_commons_lang_2_5.xml b/.idea/libraries/Maven__commons_lang_commons_lang_2_5.xml new file mode 100644 index 0000000..1002acb --- /dev/null +++ b/.idea/libraries/Maven__commons_lang_commons_lang_2_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml b/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml new file mode 100644 index 0000000..0929902 --- /dev/null +++ b/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml b/.idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml new file mode 100644 index 0000000..26c1088 --- /dev/null +++ b/.idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_buffer_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_buffer_4_1_38_Final.xml new file mode 100644 index 0000000..5356446 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_buffer_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_codec_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_codec_4_1_38_Final.xml new file mode 100644 index 0000000..e357394 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_codec_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_common_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_common_4_1_38_Final.xml new file mode 100644 index 0000000..a903ece --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_common_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_handler_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_handler_4_1_38_Final.xml new file mode 100644 index 0000000..2aaaa87 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_handler_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_resolver_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_resolver_4_1_38_Final.xml new file mode 100644 index 0000000..dba0fa3 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_resolver_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_transport_4_1_38_Final.xml b/.idea/libraries/Maven__io_netty_netty_transport_4_1_38_Final.xml new file mode 100644 index 0000000..924b063 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_transport_4_1_38_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_projectreactor_reactor_core_3_2_11_RELEASE.xml b/.idea/libraries/Maven__io_projectreactor_reactor_core_3_2_11_RELEASE.xml new file mode 100644 index 0000000..a6ba31f --- /dev/null +++ b/.idea/libraries/Maven__io_projectreactor_reactor_core_3_2_11_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml new file mode 100644 index 0000000..658bf32 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml new file mode 100644 index 0000000..8606bf0 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml new file mode 100644 index 0000000..3224df9 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml new file mode 100644 index 0000000..e23c377 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml new file mode 100644 index 0000000..c50f57b --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml new file mode 100644 index 0000000..e086275 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml b/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml new file mode 100644 index 0000000..7778d50 --- /dev/null +++ b/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml b/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml new file mode 100644 index 0000000..aca27ad --- /dev/null +++ b/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml b/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml new file mode 100644 index 0000000..262b7e8 --- /dev/null +++ b/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml b/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml new file mode 100644 index 0000000..3ce7aba --- /dev/null +++ b/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml new file mode 100644 index 0000000..27c8aa2 --- /dev/null +++ b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml new file mode 100644 index 0000000..cd43841 --- /dev/null +++ b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml b/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml new file mode 100644 index 0000000..0ef5e7f --- /dev/null +++ b/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__joda_time_joda_time_2_10_3.xml b/.idea/libraries/Maven__joda_time_joda_time_2_10_3.xml new file mode 100644 index 0000000..f75d9a2 --- /dev/null +++ b/.idea/libraries/Maven__joda_time_joda_time_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__log4j_log4j_1_2_17.xml b/.idea/libraries/Maven__log4j_log4j_1_2_17.xml new file mode 100644 index 0000000..a2ac83c --- /dev/null +++ b/.idea/libraries/Maven__log4j_log4j_1_2_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_17.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_17.xml new file mode 100644 index 0000000..2a2d0ed --- /dev/null +++ b/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml new file mode 100644 index 0000000..b8609d6 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_polyv_polyv_java_live_sdk_2_0_4.xml b/.idea/libraries/Maven__net_polyv_polyv_java_live_sdk_2_0_4.xml new file mode 100644 index 0000000..3ae5c87 --- /dev/null +++ b/.idea/libraries/Maven__net_polyv_polyv_java_live_sdk_2_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_polyv_polyv_java_sdk_common_2_0_4.xml b/.idea/libraries/Maven__net_polyv_polyv_java_sdk_common_2_0_4.xml new file mode 100644 index 0000000..aac6341 --- /dev/null +++ b/.idea/libraries/Maven__net_polyv_polyv_java_sdk_common_2_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_ehcache_ehcache_2_10_6.xml b/.idea/libraries/Maven__net_sf_ehcache_ehcache_2_10_6.xml new file mode 100644 index 0000000..43ea1a7 --- /dev/null +++ b/.idea/libraries/Maven__net_sf_ehcache_ehcache_2_10_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml b/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml new file mode 100644 index 0000000..4a36b82 --- /dev/null +++ b/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml b/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml new file mode 100644 index 0000000..83e0901 --- /dev/null +++ b/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml new file mode 100644 index 0000000..3a66eab --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_6_2.xml b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_6_2.xml new file mode 100644 index 0000000..ae34d9c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_6_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_9.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_9.xml new file mode 100644 index 0000000..97d6507 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml new file mode 100644 index 0000000..b677e1b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_9.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_9.xml new file mode 100644 index 0000000..f7dc3e6 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml new file mode 100644 index 0000000..afa2897 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml new file mode 100644 index 0000000..9816042 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_3_13.xml b/.idea/libraries/Maven__org_apache_poi_poi_3_13.xml new file mode 100644 index 0000000..b4af2e7 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_3_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml new file mode 100644 index 0000000..c851591 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml new file mode 100644 index 0000000..14dab26 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_22.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_22.xml new file mode 100644 index 0000000..550eb7c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_22.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_22.xml new file mode 100644 index 0000000..2173e47 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_22.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_22.xml new file mode 100644 index 0000000..da14d52 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml b/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml new file mode 100644 index 0000000..bf409a3 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_4.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_4.xml new file mode 100644 index 0000000..e900b1f --- /dev/null +++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml b/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml new file mode 100644 index 0000000..eac201b --- /dev/null +++ b/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml b/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml new file mode 100644 index 0000000..88d3a41 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_freemarker_freemarker_2_3_28.xml b/.idea/libraries/Maven__org_freemarker_freemarker_2_3_28.xml new file mode 100644 index 0000000..26a75dd --- /dev/null +++ b/.idea/libraries/Maven__org_freemarker_freemarker_2_3_28.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_17_Final.xml b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_17_Final.xml new file mode 100644 index 0000000..49a283c --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_17_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml b/.idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml new file mode 100644 index 0000000..a4ba2f2 --- /dev/null +++ b/.idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml b/.idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml new file mode 100644 index 0000000..422ff48 --- /dev/null +++ b/.idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_java_websocket_Java_WebSocket_1_5_1.xml b/.idea/libraries/Maven__org_java_websocket_Java_WebSocket_1_5_1.xml new file mode 100644 index 0000000..d812108 --- /dev/null +++ b/.idea/libraries/Maven__org_java_websocket_Java_WebSocket_1_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml new file mode 100644 index 0000000..2d087e3 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml b/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml new file mode 100644 index 0000000..f5e4e98 --- /dev/null +++ b/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml new file mode 100644 index 0000000..fc94963 --- /dev/null +++ b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_3_5_4.xml b/.idea/libraries/Maven__org_mybatis_mybatis_3_5_4.xml new file mode 100644 index 0000000..21e17da --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_3_5_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_4.xml b/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_4.xml new file mode 100644 index 0000000..9af031a --- /dev/null +++ b/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml new file mode 100644 index 0000000..2c8fba7 --- /dev/null +++ b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_1.xml b/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_1.xml new file mode 100644 index 0000000..3c457b4 --- /dev/null +++ b/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml b/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml new file mode 100644 index 0000000..7a2bdc7 --- /dev/null +++ b/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scilab_forge_jlatexmath_1_0_7.xml b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_1_0_7.xml new file mode 100644 index 0000000..dbd221d --- /dev/null +++ b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_1_0_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_cyrillic_1_0_7.xml b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_cyrillic_1_0_7.xml new file mode 100644 index 0000000..0c554cb --- /dev/null +++ b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_cyrillic_1_0_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_greek_1_0_7.xml b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_greek_1_0_7.xml new file mode 100644 index 0000000..e5b1b77 --- /dev/null +++ b/.idea/libraries/Maven__org_scilab_forge_jlatexmath_font_greek_1_0_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml new file mode 100644 index 0000000..cf14cc8 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml new file mode 100644 index 0000000..6592fa9 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_26.xml new file mode 100644 index 0000000..bff1fed --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_log4j12_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_simple_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_slf4j_simple_1_7_26.xml new file mode 100644 index 0000000..32d114d --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_simple_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_7_RELEASE.xml new file mode 100644 index 0000000..fa227e8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_7_RELEASE.xml new file mode 100644 index 0000000..101742b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_7_RELEASE.xml new file mode 100644 index 0000000..132c032 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_7_RELEASE.xml new file mode 100644 index 0000000..c3cfd18 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_7_RELEASE.xml new file mode 100644 index 0000000..b887228 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_1_7_RELEASE.xml new file mode 100644 index 0000000..99419db --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_7_RELEASE.xml new file mode 100644 index 0000000..bc6dd9b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_7_RELEASE.xml new file mode 100644 index 0000000..75eedb4 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_7_RELEASE.xml new file mode 100644 index 0000000..a384a99 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_7_RELEASE.xml new file mode 100644 index 0000000..b5945e8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_1_7_RELEASE.xml new file mode 100644 index 0000000..a67fc6e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_quartz_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_7_RELEASE.xml new file mode 100644 index 0000000..99a5123 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_7_RELEASE.xml new file mode 100644 index 0000000..5d5a8e6 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_7_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_7_RELEASE.xml new file mode 100644 index 0000000..e9660a7 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_websocket_2_1_7_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_10_RELEASE.xml new file mode 100644 index 0000000..b7e76f1 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_10_RELEASE.xml new file mode 100644 index 0000000..77b564d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_10_RELEASE.xml new file mode 100644 index 0000000..bc84e6c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml new file mode 100644 index 0000000..eaadde0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml new file mode 100644 index 0000000..cea9ad8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_9_RELEASE.xml new file mode 100644 index 0000000..49a9149 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_9_RELEASE.xml new file mode 100644 index 0000000..5c4237a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_1_9_RELEASE.xml new file mode 100644 index 0000000..c9a20f5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_support_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_support_5_1_9_RELEASE.xml new file mode 100644 index 0000000..32684f2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_support_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_1_9_RELEASE.xml new file mode 100644 index 0000000..b8fab43 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_9_RELEASE.xml new file mode 100644 index 0000000..032e86c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_9_RELEASE.xml new file mode 100644 index 0000000..4db229f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_9_RELEASE.xml new file mode 100644 index 0000000..33163e1 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_messaging_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_messaging_5_1_9_RELEASE.xml new file mode 100644 index 0000000..8c8482b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_messaging_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_oxm_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_oxm_5_1_9_RELEASE.xml new file mode 100644 index 0000000..718d633 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_oxm_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_tx_5_1_9_RELEASE.xml new file mode 100644 index 0000000..dcc9b5a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_tx_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_1_9_RELEASE.xml new file mode 100644 index 0000000..b97c937 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_9_RELEASE.xml new file mode 100644 index 0000000..7725432 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_websocket_5_1_9_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_websocket_5_1_9_RELEASE.xml new file mode 100644 index 0000000..bfaccef --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_websocket_5_1_9_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml new file mode 100644 index 0000000..f5d4555 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__redis_clients_jedis_3_3_0.xml b/.idea/libraries/Maven__redis_clients_jedis_3_3_0.xml new file mode 100644 index 0000000..bd521cc --- /dev/null +++ b/.idea/libraries/Maven__redis_clients_jedis_3_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__stax_stax_api_1_0_1.xml b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml new file mode 100644 index 0000000..d74ab77 --- /dev/null +++ b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/jre1_8.xml b/.idea/libraries/jre1_8.xml new file mode 100644 index 0000000..a35c2bd --- /dev/null +++ b/.idea/libraries/jre1_8.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..602a0dd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..86043fa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/logs/springboot-logback-error.log b/logs/springboot-logback-error.log new file mode 100644 index 0000000..eb2f046 --- /dev/null +++ b/logs/springboot-logback-error.log @@ -0,0 +1,65 @@ +2025-11-25 11:02:10,187 [main] ERROR org.springframework.boot.SpringApplication:822 - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) + at com.subsidy.MeishuApplication.main(MeishuApplication.java:22) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) + ... 19 common frames omitted +Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:593) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:429) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:626) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:214) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.CGLIB$sqlSessionFactory$0() + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41$$FastClassBySpringCGLIB$$bf8a77ff.invoke() + at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) + at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.sqlSessionFactory() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) + ... 20 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:122) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:94) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:591) + ... 33 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:118) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:262) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:253) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:245) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118) + ... 35 common frames omitted +Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) + at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149) + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116) + ... 39 common frames omitted +Caused by: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) + at org.apache.ibatis.io.Resources.classForName(Resources.java:261) + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) + ... 41 common frames omitted diff --git a/logs/springboot-logback-info.log b/logs/springboot-logback-info.log new file mode 100644 index 0000000..a69d5bf --- /dev/null +++ b/logs/springboot-logback-info.log @@ -0,0 +1,93 @@ +2025-11-25 11:02:05,245 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode! +2025-11-25 11:02:05,253 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode. +2025-11-25 11:02:05,285 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 20ms. Found 0 repository interfaces. +2025-11-25 11:02:05,382 [main] WARN org.mybatis.spring.mapper.ClassPathMapperScanner:44 - No MyBatis mapper was found in '[com.subsidy.mapper]' package. Please check your configuration. +2025-11-25 11:02:05,599 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$23749ea7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2025-11-25 11:02:05,693 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.subsidy.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$233ca9ae] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2025-11-25 11:02:06,011 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23504 (http) +2025-11-25 11:02:06,022 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23504"] +2025-11-25 11:02:06,029 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat] +2025-11-25 11:02:06,029 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22] +2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4]. +2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. +2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] +2025-11-25 11:02:06,037 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023] +2025-11-25 11:02:06,173 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext +2025-11-25 11:02:06,174 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 1695 ms +2025-11-25 11:02:07,686 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] +2025-11-25 11:02:07,854 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor' +2025-11-25 11:02:08,016 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource +2025-11-25 11:02:10,005 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited +2025-11-25 11:02:10,147 [main] WARN org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext:557 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO +2025-11-25 11:02:10,147 [main] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ... +2025-11-25 11:02:10,150 [main] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed +2025-11-25 11:02:10,151 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor' +2025-11-25 11:02:10,169 [main] INFO org.apache.catalina.core.StandardService:173 - Stopping service [Tomcat] +2025-11-25 11:02:10,178 [main] INFO org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener:136 - + +Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. +2025-11-25 11:02:10,187 [main] ERROR org.springframework.boot.SpringApplication:822 - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) + at com.subsidy.MeishuApplication.main(MeishuApplication.java:22) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) + ... 19 common frames omitted +Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:593) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:429) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:626) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:214) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.CGLIB$sqlSessionFactory$0() + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41$$FastClassBySpringCGLIB$$bf8a77ff.invoke() + at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) + at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.sqlSessionFactory() + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) + ... 20 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:122) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:94) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:591) + ... 33 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:118) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:262) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:253) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:245) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118) + ... 35 common frames omitted +Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) + at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149) + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116) + ... 39 common frames omitted +Caused by: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) + at org.apache.ibatis.io.Resources.classForName(Resources.java:261) + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) + ... 41 common frames omitted diff --git a/logs/springboot-logback/error/2023-05-08-0.log.gz b/logs/springboot-logback/error/2023-05-08-0.log.gz new file mode 100644 index 0000000..25b6794 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-08-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-05-09-0.log.gz b/logs/springboot-logback/error/2023-05-09-0.log.gz new file mode 100644 index 0000000..68fc4a1 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-09-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-05-10-0.log.gz b/logs/springboot-logback/error/2023-05-10-0.log.gz new file mode 100644 index 0000000..426b7c3 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-10-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-05-11-0.log.gz b/logs/springboot-logback/error/2023-05-11-0.log.gz new file mode 100644 index 0000000..2345ed3 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-11-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-05-19-0.log.gz b/logs/springboot-logback/error/2023-05-19-0.log.gz new file mode 100644 index 0000000..5482935 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-19-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-05-23-0.log.gz b/logs/springboot-logback/error/2023-05-23-0.log.gz new file mode 100644 index 0000000..396eea2 Binary files /dev/null and b/logs/springboot-logback/error/2023-05-23-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-06-06-0.log.gz b/logs/springboot-logback/error/2023-06-06-0.log.gz new file mode 100644 index 0000000..bb7a467 Binary files /dev/null and b/logs/springboot-logback/error/2023-06-06-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-09-13-0.log.gz b/logs/springboot-logback/error/2023-09-13-0.log.gz new file mode 100644 index 0000000..06eee89 Binary files /dev/null and b/logs/springboot-logback/error/2023-09-13-0.log.gz differ diff --git a/logs/springboot-logback/error/2023-11-02-0.log.gz b/logs/springboot-logback/error/2023-11-02-0.log.gz new file mode 100644 index 0000000..7c52400 Binary files /dev/null and b/logs/springboot-logback/error/2023-11-02-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-03-01-0.log.gz b/logs/springboot-logback/error/2024-03-01-0.log.gz new file mode 100644 index 0000000..fd134e6 Binary files /dev/null and b/logs/springboot-logback/error/2024-03-01-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-03-04-0.log.gz b/logs/springboot-logback/error/2024-03-04-0.log.gz new file mode 100644 index 0000000..82c84e0 Binary files /dev/null and b/logs/springboot-logback/error/2024-03-04-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-04-23-0.log.gz b/logs/springboot-logback/error/2024-04-23-0.log.gz new file mode 100644 index 0000000..1b2b300 Binary files /dev/null and b/logs/springboot-logback/error/2024-04-23-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-04-28-0.log.gz b/logs/springboot-logback/error/2024-04-28-0.log.gz new file mode 100644 index 0000000..7157670 Binary files /dev/null and b/logs/springboot-logback/error/2024-04-28-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-08-16-0.log.gz b/logs/springboot-logback/error/2024-08-16-0.log.gz new file mode 100644 index 0000000..23d6e35 Binary files /dev/null and b/logs/springboot-logback/error/2024-08-16-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-08-20-0.log3632128746896100.tmp b/logs/springboot-logback/error/2024-08-20-0.log3632128746896100.tmp new file mode 100644 index 0000000..8e61424 --- /dev/null +++ b/logs/springboot-logback/error/2024-08-20-0.log3632128746896100.tmp @@ -0,0 +1,150 @@ +2024-08-20 14:38:06,286 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job CourseNotificationJob.qweqwe2024-08-wechat-2024-08-20 14:38:00 threw an unhandled Exception: +org.springframework.jdbc.BadSqlGrammarException: +### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' +### The error may exist in file [D:\code\subsidy-ts\target\classes\mapper\MemberMapper.xml] +### The error may involve defaultParameterMap +### The error occurred while setting parameters +### SQL: SELECT t2.* FROM project_salary_history t LEFT JOIN member t2 ON t.member_id = t2.id LEFT JOIN project_member_mapping t3 ON t.project_mapping_id = t3.id WHERE t.delete_date IS NULL AND t2.delete_date IS NULL and t3.status = 1 AND t.project_id = ? AND t.salary_month = ? AND t.commit_status = 1 +### Cause: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' +; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' + at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234) + at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) + at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) + at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) + at com.sun.proxy.$Proxy100.selectList(Unknown Source) + at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) + at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:177) + at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:78) + at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:96) + at com.sun.proxy.$Proxy123.getMemberList(Unknown Source) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) + at com.sun.proxy.$Proxy124.getMemberList(Unknown Source) + at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71) + at org.quartz.core.JobRunShell.run(JobRunShell.java:202) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) +Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' + at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) + at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) + at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) + at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) + at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370) + at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) + at com.sun.proxy.$Proxy185.execute(Unknown Source) + at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64) + at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) + at com.sun.proxy.$Proxy183.query(Unknown Source) + at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:67) + at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) + at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) + at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:163) + at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:90) + at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) + at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) + ... 20 common frames omitted +2024-08-20 14:38:06,289 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.ErrorLogger:2407 - Job (CourseNotificationJob.qweqwe2024-08-wechat-2024-08-20 14:38:00 threw an exception. +org.quartz.SchedulerException: Job threw an unhandled exception. + at org.quartz.core.JobRunShell.run(JobRunShell.java:213) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) +Caused by: org.springframework.jdbc.BadSqlGrammarException: +### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' +### The error may exist in file [D:\code\subsidy-ts\target\classes\mapper\MemberMapper.xml] +### The error may involve defaultParameterMap +### The error occurred while setting parameters +### SQL: SELECT t2.* FROM project_salary_history t LEFT JOIN member t2 ON t.member_id = t2.id LEFT JOIN project_member_mapping t3 ON t.project_mapping_id = t3.id WHERE t.delete_date IS NULL AND t2.delete_date IS NULL and t3.status = 1 AND t.project_id = ? AND t.salary_month = ? AND t.commit_status = 1 +### Cause: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' +; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' + at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234) + at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) + at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) + at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) + at com.sun.proxy.$Proxy100.selectList(Unknown Source) + at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) + at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:177) + at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:78) + at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:96) + at com.sun.proxy.$Proxy123.getMemberList(Unknown Source) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) + at com.sun.proxy.$Proxy124.getMemberList(Unknown Source) + at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71) + at org.quartz.core.JobRunShell.run(JobRunShell.java:202) + ... 1 common frames omitted +Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' + at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) + at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) + at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) + at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) + at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370) + at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) + at com.sun.proxy.$Proxy185.execute(Unknown Source) + at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64) + at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) + at com.sun.proxy.$Proxy183.query(Unknown Source) + at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:67) + at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) + at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) + at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:163) + at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:90) + at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) + at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) + ... 20 common frames omitted +2024-08-20 14:40:05,530 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an unhandled Exception: +java.lang.NullPointerException: null + at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88) + at org.quartz.core.JobRunShell.run(JobRunShell.java:202) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) +2024-08-20 14:40:05,531 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.ErrorLogger:2407 - Job (CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an exception. +org.quartz.SchedulerException: Job threw an unhandled exception. + at org.quartz.core.JobRunShell.run(JobRunShell.java:213) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) +Caused by: java.lang.NullPointerException: null + at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88) + at org.quartz.core.JobRunShell.run(JobRunShell.java:202) + ... 1 common frames omitted diff --git a/logs/springboot-logback/error/2024-08-22-0.log.gz b/logs/springboot-logback/error/2024-08-22-0.log.gz new file mode 100644 index 0000000..26158d2 Binary files /dev/null and b/logs/springboot-logback/error/2024-08-22-0.log.gz differ diff --git a/logs/springboot-logback/error/2024-08-26-0.log.gz b/logs/springboot-logback/error/2024-08-26-0.log.gz new file mode 100644 index 0000000..4bfc382 Binary files /dev/null and b/logs/springboot-logback/error/2024-08-26-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-01-07-0.log.gz b/logs/springboot-logback/error/2025-01-07-0.log.gz new file mode 100644 index 0000000..9b84e38 Binary files /dev/null and b/logs/springboot-logback/error/2025-01-07-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-01-08-0.log.gz b/logs/springboot-logback/error/2025-01-08-0.log.gz new file mode 100644 index 0000000..96550b6 Binary files /dev/null and b/logs/springboot-logback/error/2025-01-08-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-01-13-0.log.gz b/logs/springboot-logback/error/2025-01-13-0.log.gz new file mode 100644 index 0000000..79d697d Binary files /dev/null and b/logs/springboot-logback/error/2025-01-13-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-01-14-0.log.gz b/logs/springboot-logback/error/2025-01-14-0.log.gz new file mode 100644 index 0000000..4e1f5f5 Binary files /dev/null and b/logs/springboot-logback/error/2025-01-14-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-10-23-0.log.gz b/logs/springboot-logback/error/2025-10-23-0.log.gz new file mode 100644 index 0000000..9303af3 Binary files /dev/null and b/logs/springboot-logback/error/2025-10-23-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-10-30-0.log.gz b/logs/springboot-logback/error/2025-10-30-0.log.gz new file mode 100644 index 0000000..c9022d5 Binary files /dev/null and b/logs/springboot-logback/error/2025-10-30-0.log.gz differ diff --git a/logs/springboot-logback/error/2025-11-17-0.log.gz b/logs/springboot-logback/error/2025-11-17-0.log.gz new file mode 100644 index 0000000..c896d10 Binary files /dev/null and b/logs/springboot-logback/error/2025-11-17-0.log.gz differ diff --git a/logs/springboot-logback/info/2024-08-26-0.log.gz b/logs/springboot-logback/info/2024-08-26-0.log.gz new file mode 100644 index 0000000..01ee9a2 Binary files /dev/null and b/logs/springboot-logback/info/2024-08-26-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-04-08-0.log.gz b/logs/springboot-logback/info/2025-04-08-0.log.gz new file mode 100644 index 0000000..e2a548e Binary files /dev/null and b/logs/springboot-logback/info/2025-04-08-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-04-09-0.log.gz b/logs/springboot-logback/info/2025-04-09-0.log.gz new file mode 100644 index 0000000..d0c0be1 Binary files /dev/null and b/logs/springboot-logback/info/2025-04-09-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-06-25-0.log.gz b/logs/springboot-logback/info/2025-06-25-0.log.gz new file mode 100644 index 0000000..b8691d4 Binary files /dev/null and b/logs/springboot-logback/info/2025-06-25-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-10-28-0.log.gz b/logs/springboot-logback/info/2025-10-28-0.log.gz new file mode 100644 index 0000000..3bc0198 Binary files /dev/null and b/logs/springboot-logback/info/2025-10-28-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-10-29-0.log.gz b/logs/springboot-logback/info/2025-10-29-0.log.gz new file mode 100644 index 0000000..bc6ccae Binary files /dev/null and b/logs/springboot-logback/info/2025-10-29-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-10-30-0.log.gz b/logs/springboot-logback/info/2025-10-30-0.log.gz new file mode 100644 index 0000000..6e2916b Binary files /dev/null and b/logs/springboot-logback/info/2025-10-30-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-10-31-0.log.gz b/logs/springboot-logback/info/2025-10-31-0.log.gz new file mode 100644 index 0000000..b466a0a Binary files /dev/null and b/logs/springboot-logback/info/2025-10-31-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-11-03-0.log.gz b/logs/springboot-logback/info/2025-11-03-0.log.gz new file mode 100644 index 0000000..0378164 Binary files /dev/null and b/logs/springboot-logback/info/2025-11-03-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-11-04-0.log.gz b/logs/springboot-logback/info/2025-11-04-0.log.gz new file mode 100644 index 0000000..bb316c6 Binary files /dev/null and b/logs/springboot-logback/info/2025-11-04-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-11-05-0.log.gz b/logs/springboot-logback/info/2025-11-05-0.log.gz new file mode 100644 index 0000000..6a12bff Binary files /dev/null and b/logs/springboot-logback/info/2025-11-05-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-11-06-0.log.gz b/logs/springboot-logback/info/2025-11-06-0.log.gz new file mode 100644 index 0000000..453f43f Binary files /dev/null and b/logs/springboot-logback/info/2025-11-06-0.log.gz differ diff --git a/logs/springboot-logback/info/2025-11-17-0.log.gz b/logs/springboot-logback/info/2025-11-17-0.log.gz new file mode 100644 index 0000000..6bff845 Binary files /dev/null and b/logs/springboot-logback/info/2025-11-17-0.log.gz differ diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..a16b543 --- /dev/null +++ b/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..ae7935c --- /dev/null +++ b/pom.xml @@ -0,0 +1,296 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.7.RELEASE + + + com.subsidy + subsidy + 0.0.1 + subsidy + Demo project for Spring Boot + + + UTF-8 + UTF-8 + 1.8 + 3.3.0 + 3.3.2 + 2.9.2 + 1.2.58 + 2.0.0 + 3.13 + 1.1.0 + 4.4.6 + 3.9 + 1.1.22 + 5.2.0 + 5.4.1 + 3.10.3 + 3.3.0 + 3.2.2 + + + + + org.springframework.boot + spring-boot-starter + + + + org.freemarker + freemarker + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + + com.belerweb + pinyin4j + 2.5.1 + + + + + com.tencentcloudapi + tencentcloud-sdk-java + 3.1.322 + + + + com.qcloud + vod_api + 2.1.2 + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + mysql + mysql-connector-java + runtime + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.projectlombok + lombok + + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + com.baomidou + mybatis-plus-generator + ${generator.version} + + + + com.alibaba + fastjson + ${fastjson.version} + + + + io.springfox + springfox-swagger2 + ${swagger2.version} + + + + io.springfox + springfox-swagger-ui + ${swagger2.version} + + + + + + + + + + org.apache.poi + poi-ooxml + ${poi-ooxml.version} + + + + com.aliyun + aliyun-java-sdk-dysmsapi + ${dysmsapi.version} + + + com.aliyun + aliyun-java-sdk-core + ${sdk-core.version} + + + org.apache.commons + commons-lang3 + ${lang3.version} + + + + com.itextpdf + itext-asian + ${itext-asian.version} + + + + com.itextpdf + itextpdf + ${itextpdf.version} + + + + com.auth0 + java-jwt + ${java-jwt.version} + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + org.scilab.forge + jlatexmath + 1.0.7 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-quartz + + + + redis.clients + jedis + ${jedis.version} + + + + commons-collections + commons-collections + ${collections.version} + + + + + org.springframework.boot + spring-boot-starter-websocket + + + + org.java-websocket + Java-WebSocket + 1.5.1 + + + + cn.hutool + hutool-all + 5.5.2 + + + + org.springframework.boot + spring-boot-starter-cache + + + + net.sf.ehcache + ehcache + + + + net.polyv + polyv-java-live-sdk + 2.0.4 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.15.0 + + + + com.squareup.okhttp3 + okhttp + 3.10.0 + + + com.squareup.okio + okio + 1.13.0 + + + + com.google.code.gson + gson + 2.8.6 + + + + + ecnutracks + + + org.springframework.boot + spring-boot-maven-plugin + 2.2.6.RELEASE + + + + org.projectlombok + lombok + + + + + + + + diff --git a/show.iml b/show.iml new file mode 100644 index 0000000..243c20a --- /dev/null +++ b/show.iml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/subsidy/MeishuApplication.java b/src/main/java/com/subsidy/MeishuApplication.java new file mode 100644 index 0000000..b984c32 --- /dev/null +++ b/src/main/java/com/subsidy/MeishuApplication.java @@ -0,0 +1,40 @@ +package com.subsidy; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@SpringBootApplication +@MapperScan(basePackages = {"com.subsidy.mapper"}) +@EnableScheduling +//@EnableCaching +@EnableAsync +@EnableTransactionManagement +public class MeishuApplication { + + public static void main(String[] args) { + SpringApplication.run(MeishuApplication.class, args); + } + + //@Bean + //public ServletRegistrationBean druidStatViewServlet() { + // //先配置管理后台的servLet,访问的入口为/druid/ + // ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean( + // new StatViewServlet(), "/druid/*"); + // // IP白名单 (没有配置或者为空,则允许所有访问) + // servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); + // // IP黑名单 (存在共同时,deny优先于allow) + // servletRegistrationBean.addInitParameter("deny", ""); + // servletRegistrationBean.addInitParameter("loginUsername", "admin"); + // servletRegistrationBean.addInitParameter("loginPassword", "yhkl1234"); + // servletRegistrationBean.addInitParameter("resetEnable", "false"); + // return servletRegistrationBean; + //} + +} diff --git a/src/main/java/com/subsidy/common/ResponseData.java b/src/main/java/com/subsidy/common/ResponseData.java new file mode 100644 index 0000000..fd45218 --- /dev/null +++ b/src/main/java/com/subsidy/common/ResponseData.java @@ -0,0 +1,54 @@ +package com.subsidy.common; + +import com.subsidy.common.configure.RemoteProperties; +import lombok.Data; +import org.springframework.boot.context.properties.EnableConfigurationProperties; + +/** + * 返回数据 + * + * @author DengMin + * @date 2019/08/27 13:57 + **/ +@Data +@EnableConfigurationProperties(RemoteProperties.class) +public class ResponseData { + + public static ResponseVO generateCreatedResponse(int code) { + return (ResponseVO) ResponseVO.builder() + .code(code) + .message(RemoteProperties.getMessage(code)) + .build(); + } + + public static ResponseVO generateCreatedResponse(int code, String message) { + return (ResponseVO) ResponseVO.builder() + .code(code) + .message(message) + .build(); + } + + public static ResponseVO generateCreatedResponse(int code, T data) { + return (ResponseVO) ResponseVO.builder() + .code(code) + .message(RemoteProperties.getMessage(code)) + .data(data) + .build(); + } + + public static ResponseVO generateCreatedResponse(int code, String message, T data) { + return (ResponseVO) ResponseVO.builder() + .code(code) + .message(message) + .data(data) + .build(); + } + + public static ResponseVO generateCreatedResponse(int code, String message, String path) { + return (ResponseVO) ResponseVO.builder() + .code(code) + .message(message) + .path(path) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/ResponseVO.java b/src/main/java/com/subsidy/common/ResponseVO.java new file mode 100644 index 0000000..afaa676 --- /dev/null +++ b/src/main/java/com/subsidy/common/ResponseVO.java @@ -0,0 +1,21 @@ +package com.subsidy.common; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ResponseVO { + + private Integer code; + + private String message; + + private T data; + + private String path; +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/configure/AliyunSmsProperties.java b/src/main/java/com/subsidy/common/configure/AliyunSmsProperties.java new file mode 100644 index 0000000..6e26e1e --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/AliyunSmsProperties.java @@ -0,0 +1,28 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "sms") +public class AliyunSmsProperties { + + private String product; + + private String domain; + + private String accessKeyId; + + private String accessKeySecret; + + private String cpcode; + + private String excode; + + private String key; + + private String rcsapi; + +} diff --git a/src/main/java/com/subsidy/common/configure/MyTomcat.java b/src/main/java/com/subsidy/common/configure/MyTomcat.java new file mode 100644 index 0000000..52d1ac7 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/MyTomcat.java @@ -0,0 +1,89 @@ +package com.subsidy.common.configure; + +import org.apache.catalina.connector.Connector; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.servlet.MultipartConfigFactory; +import org.springframework.boot.web.servlet.server.ServletWebServerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.servlet.MultipartConfigElement; + +@Configuration +public class MyTomcat { + + + @Value("${spring.server.port}") + private String port; + @Value("${spring.server.acceptorThreadCount}") + private String acceptorThreadCount; + @Value("${spring.server.minSpareThreads}") + private String minSpareThreads; + @Value("${spring.server.maxSpareThreads}") + private String maxSpareThreads; + @Value("${spring.server.maxThreads}") + private String maxThreads; + @Value("${spring.server.maxConnections}") + private String maxConnections; + @Value("${spring.server.protocol}") + private String protocol; + @Value("${spring.server.redirectPort}") + private String redirectPort; + @Value("${spring.server.compression}") + private String compression; + @Value("${spring.server.connectionTimeout}") + private String connectionTimeout; + + @Value("${spring.server.MaxFileSize}") + private String MaxFileSize; + @Value("${spring.server.MaxRequestSize}") + private String MaxRequestSize; + + @Bean + public ServletWebServerFactory servletContainer() { + TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); + tomcat.addConnectorCustomizers(new GwsTomcatConnectionCustomizer()); + return tomcat; + } + + @Bean + public MultipartConfigElement multipartConfigElement() { + MultipartConfigFactory factory = new MultipartConfigFactory(); + // 单个数据大小 + factory.setMaxFileSize(MaxFileSize); // KB,MB + /// 总上传数据大小 + factory.setMaxRequestSize(MaxRequestSize); + return factory.createMultipartConfig(); + } + + /** + * + * 默认http连接 + * + * @version + * @author liuyi 2016年7月20日 下午7:59:41 + * + */ + public class GwsTomcatConnectionCustomizer implements TomcatConnectorCustomizer { + + public GwsTomcatConnectionCustomizer() { + } + + @Override + public void customize(Connector connector) { + connector.setPort(Integer.valueOf(port)); + connector.setAttribute("connectionTimeout", connectionTimeout); + connector.setAttribute("acceptorThreadCount", acceptorThreadCount); + connector.setAttribute("minSpareThreads", minSpareThreads); + connector.setAttribute("maxSpareThreads", maxSpareThreads); + connector.setAttribute("maxThreads", maxThreads); + connector.setAttribute("maxConnections", maxConnections); + connector.setAttribute("protocol", protocol); + connector.setAttribute("redirectPort", "redirectPort"); + connector.setAttribute("compression", "compression"); + } + } + +} diff --git a/src/main/java/com/subsidy/common/configure/MybatisPlusConfig.java b/src/main/java/com/subsidy/common/configure/MybatisPlusConfig.java new file mode 100644 index 0000000..c02a5b2 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/MybatisPlusConfig.java @@ -0,0 +1,54 @@ +package com.subsidy.common.configure; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.config.GlobalConfig; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import com.subsidy.common.handler.MetaHandler; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: tuyp + * @create: 2020-08-12 12:01 + */ +@Configuration +@ConditionalOnClass(value = {PaginationInterceptor.class}) +public class MybatisPlusConfig { + + /** + * 分页 + * @return + */ + @Bean + public PaginationInterceptor paginationInterceptor(){ + PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); + paginationInterceptor.setDialectType(DbType.MYSQL.getDb()); + return paginationInterceptor; + } +// +// /** +// * 打印 sql +// */ +// @Bean +// public PerformanceInterceptor performanceInterceptor() { +// PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); +// //格式化sql语句 +// Properties properties = new Properties(); +// properties.setProperty("format", "false"); +// performanceInterceptor.setProperties(properties); +// return performanceInterceptor; +// } + + /** + * 自动填充功能 + * @return + */ + @Bean + public GlobalConfig globalConfig() { + GlobalConfig globalConfig = new GlobalConfig(); + globalConfig.setMetaObjectHandler(new MetaHandler()); + return globalConfig; + } + +} diff --git a/src/main/java/com/subsidy/common/configure/PolyvConfig.java b/src/main/java/com/subsidy/common/configure/PolyvConfig.java new file mode 100644 index 0000000..8082d40 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/PolyvConfig.java @@ -0,0 +1,19 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@Data +@ConfigurationProperties(prefix = "polyv") +public class PolyvConfig { + + private String userId; + + private String appId; + + private String appSecret; + + private String secretKey; +} diff --git a/src/main/java/com/subsidy/common/configure/QXueYouConfig.java b/src/main/java/com/subsidy/common/configure/QXueYouConfig.java new file mode 100644 index 0000000..0bf6873 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/QXueYouConfig.java @@ -0,0 +1,18 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties(prefix = "qxueyou") +public class QXueYouConfig { + + private String appId; + + private String securityKey; + + private String url; + +} diff --git a/src/main/java/com/subsidy/common/configure/RedisConfig.java b/src/main/java/com/subsidy/common/configure/RedisConfig.java new file mode 100644 index 0000000..63cf2de --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/RedisConfig.java @@ -0,0 +1,122 @@ +package com.subsidy.common.configure; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.HashOperations; +import org.springframework.data.redis.core.ListOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.SetOperations; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.data.redis.core.ZSetOperations; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@EnableCaching + +/** + *

+ * Redis + *

+ * + * @author DengMin + * @since 2020/12/14 + */ +@Configuration +public class RedisConfig extends CachingConfigurerSupport { + + /** + * retemplate相关配置 + * @param factory + * @return + */ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory factory) { + + RedisTemplate template = new RedisTemplate<>(); + // 配置连接工厂 + template.setConnectionFactory(factory); + + //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式) + Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); + + ObjectMapper om = new ObjectMapper(); + // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jacksonSeial.setObjectMapper(om); + + // 值采用json序列化 + template.setValueSerializer(jacksonSeial); + //使用StringRedisSerializer来序列化和反序列化redis的key值 + template.setKeySerializer(new StringRedisSerializer()); + + // 设置hash key 和value序列化模式 + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(jacksonSeial); + template.afterPropertiesSet(); + + return template; + } + + /** + * 对hash类型的数据操作 + * + * @param redisTemplate + * @return + */ + @Bean + public HashOperations hashOperations(RedisTemplate redisTemplate) { + return redisTemplate.opsForHash(); + } + + /** + * 对redis字符串类型数据操作 + * + * @param redisTemplate + * @return + */ + @Bean + public ValueOperations valueOperations(RedisTemplate redisTemplate) { + return redisTemplate.opsForValue(); + } + + /** + * 对链表类型的数据操作 + * + * @param redisTemplate + * @return + */ + @Bean + public ListOperations listOperations(RedisTemplate redisTemplate) { + return redisTemplate.opsForList(); + } + + /** + * 对无序集合类型的数据操作 + * + * @param redisTemplate + * @return + */ + @Bean + public SetOperations setOperations(RedisTemplate redisTemplate) { + return redisTemplate.opsForSet(); + } + + /** + * 对有序集合类型的数据操作 + * + * @param redisTemplate + * @return + */ + @Bean + public ZSetOperations zSetOperations(RedisTemplate redisTemplate) { + return redisTemplate.opsForZSet(); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/configure/RemoteProperties.java b/src/main/java/com/subsidy/common/configure/RemoteProperties.java new file mode 100644 index 0000000..23a42de --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/RemoteProperties.java @@ -0,0 +1,36 @@ +package com.subsidy.common.configure; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * 读取状态码 + *

+ * + * @author DengMin + * @date Created in 2020/08/24 + */ +@Component +@ConfigurationProperties(prefix = "meishu") +@PropertySource(value = "classpath:code.properties", encoding = "UTF-8") +public class RemoteProperties { + + private static Map codeMessage = new HashMap<>(); + + public static String getMessage(Integer code) { + return codeMessage.get(code); + } + + public Map getCodeMessage() { + return codeMessage; + } + + public void setCodeMessage(Map codeMessage) { + RemoteProperties.codeMessage = codeMessage; + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/configure/RenSheConfig.java b/src/main/java/com/subsidy/common/configure/RenSheConfig.java new file mode 100644 index 0000000..65e7680 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/RenSheConfig.java @@ -0,0 +1,20 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@Data +@ConfigurationProperties(prefix = "renshe") +public class RenSheConfig { + + //接口地址 + private String url; + + //私钥 + private String secretKey; + + //普陀 正式接口 + private String putuo; +} diff --git a/src/main/java/com/subsidy/common/configure/RestTemplateConfig.java b/src/main/java/com/subsidy/common/configure/RestTemplateConfig.java new file mode 100644 index 0000000..c4f692f --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/RestTemplateConfig.java @@ -0,0 +1,31 @@ +package com.subsidy.common.configure; + +import org.springframework.context.annotation.Bean; +import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter()); + return restTemplate; + } + + public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { + public WxMappingJackson2HttpMessageConverter(){ + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.TEXT_PLAIN); + mediaTypes.add(MediaType.TEXT_HTML); + setSupportedMediaTypes(mediaTypes); + } + } + +} diff --git a/src/main/java/com/subsidy/common/configure/SubsidyConfig.java b/src/main/java/com/subsidy/common/configure/SubsidyConfig.java new file mode 100644 index 0000000..18d8cbf --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/SubsidyConfig.java @@ -0,0 +1,18 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties(prefix = "subsidy") +public class SubsidyConfig { + + private String appId; + + private String securityKey; + + private String url; + +} diff --git a/src/main/java/com/subsidy/common/configure/SwaggerConfig.java b/src/main/java/com/subsidy/common/configure/SwaggerConfig.java new file mode 100644 index 0000000..fd0d2e0 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/SwaggerConfig.java @@ -0,0 +1,43 @@ +package com.subsidy.common.configure; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Value("${spring.profiles.active:}") + private String activeProfile; + + + @Bean + public Docket createRestApi() { + + // 判断是否为生产环境 + boolean isProd = "prod".equals(activeProfile); + + return new Docket(DocumentationType.SWAGGER_2) + .enable(!isProd) + .pathMapping("/") + .select() + .apis(RequestHandlerSelectors.basePackage("com.subsidy")) + .paths(PathSelectors.any()) + .build().apiInfo(new ApiInfoBuilder() + .title("ecnu") + .description("接口文档规范") + .version("1.0") +// .contact(new Contact("啊啊啊啊","www.youkehulian.com","tcp@meishu.com")) +// .license("The Apache License") +// .licenseUrl("http://www.baidu.com") + .build()); + } +} diff --git a/src/main/java/com/subsidy/common/configure/VODConfig.java b/src/main/java/com/subsidy/common/configure/VODConfig.java new file mode 100644 index 0000000..b27c94c --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/VODConfig.java @@ -0,0 +1,27 @@ +package com.subsidy.common.configure; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author: tuyp + * @create: 2020-06-01 16:46 + */ +@Component +@Data +@ConfigurationProperties(prefix = "vod") +public class VODConfig { + + private String appId; + + private String secretId; + + private String secretKey; + + private String api; + + private String region; + + private Integer classId; +} diff --git a/src/main/java/com/subsidy/common/configure/WebConfig.java b/src/main/java/com/subsidy/common/configure/WebConfig.java new file mode 100644 index 0000000..07c78cd --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/WebConfig.java @@ -0,0 +1,78 @@ +package com.subsidy.common.configure; + + +import com.subsidy.common.interceptor.AuthenticationInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author DengMin + * @date 2020/07/06 + **/ +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Autowired + private AuthenticationInterceptor authenticationInterceptor; + + /** + * 跨域支持 + * + * @param registry + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") +// .allowCredentials(true) + .allowedOrigins("*") + .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .maxAge(3600); + } + + /** + * Swagger + * + * @param registry + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); + registry.addResourceHandler("swagger-ui.html") + .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + + /** + * 鉴权 + * + * @param registry + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(authenticationInterceptor) + .excludePathPatterns("/static/*") + .addPathPatterns("/**"); + } + + @Bean + public CorsFilter corsFilter() { + CorsConfiguration config = new CorsConfiguration(); + config.setMaxAge(3600L); + config.addAllowedOrigin("*"); + config.addAllowedMethod("*"); + config.addAllowedHeader("*"); + UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource(); + configSource.registerCorsConfiguration("/**", config); + return new CorsFilter(configSource); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/configure/WebLogAspect.java b/src/main/java/com/subsidy/common/configure/WebLogAspect.java new file mode 100644 index 0000000..ebfe688 --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/WebLogAspect.java @@ -0,0 +1,58 @@ +package com.subsidy.common.configure; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +@Aspect +@Component +@Order(1) +public class WebLogAspect { + + private final Logger logger = LoggerFactory.getLogger(WebLogAspect.class); + + @Pointcut("execution(public * com.subsidy.controller.*.*(..))")//切入点描述 这个是controller包的切入点 + public void controllerLog(){}//签名,可以理解成这个切入点的一个名称 + + @Pointcut("execution(public * com.subsidy.controller.*.*(..))") + public void serviceImplLog(){} + + @Before("controllerLog()") //在切入点的方法run之前要干的 + public void logBeforeController(JoinPoint joinPoint) { + + +// RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + //这个RequestContextHolder是Springmvc提供来获得请求的东西 +// HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest(); + + // 记录下请求内容 +// logger.info("####requestUrl : " + request.getRequestURL().toString()); +// logger.info("####requestParam : " + Arrays.toString(joinPoint.getArgs())); + + } + +// @Around("serviceImplLog()") +// public Object afterController(ProceedingJoinPoint proceedingJoinPoint) { +// +// Object result = null; +// +// try{ +// result = proceedingJoinPoint.proceed(); +// logger.info("====reulst"+result); +// }catch (Throwable e){ +// MyException myException =(MyException)e; +// throw myException; +// } +// return result; +// } + +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/configure/WechatConfig.java b/src/main/java/com/subsidy/common/configure/WechatConfig.java new file mode 100644 index 0000000..bb18e0b --- /dev/null +++ b/src/main/java/com/subsidy/common/configure/WechatConfig.java @@ -0,0 +1,24 @@ +package com.subsidy.common.configure; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties(prefix = "wechat") +public class WechatConfig { + + private String appId; + + private String appSecret; + + private String msgUrl; + // + private String templateId; + // + //private String agentId; + + +} diff --git a/src/main/java/com/subsidy/common/constant/AttendanceConstant.java b/src/main/java/com/subsidy/common/constant/AttendanceConstant.java new file mode 100644 index 0000000..1305fc9 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/AttendanceConstant.java @@ -0,0 +1,29 @@ +package com.subsidy.common.constant; + +public class AttendanceConstant { + + /** + * 创建预约api + */ + public static final String CREATE_TOPIC_URL = "https://open.api.roomis.com.cn/api/my/booking/spaces/{spaceId}/events"; + + /** + * 考勤api + */ + public static final String GET_ATTENDANCE_URL = "https://open.api.roomis.com.cn/api/attendance/{id}"; + + /** + * 创建人ID + */ + public static Long organizerId = 200000222L; + + /** + * 开始时间 + */ + public static String startTime = "07:00:00"; + + /** + * 结束时间 + */ + public static String endTime = "21:00:00"; +} diff --git a/src/main/java/com/subsidy/common/constant/Code.java b/src/main/java/com/subsidy/common/constant/Code.java new file mode 100644 index 0000000..fbe57a0 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/Code.java @@ -0,0 +1,33 @@ +package com.subsidy.common.constant; + +import lombok.Getter; + +@Getter +public enum Code { + + USERNAMENOTFOUND(1001, "用户不存在"), + BADCREDENTIALS(1002,"账户或者密码错误"), + ACCOUNTEXPIRED(1003,"账户过期"), + LOCKEDEXCEPTION(1004, "账户已锁定"), + DISABLEDEXCEPTION(1005,"账户已禁用"), + ACCESSDENIED(1006,"无权限访问"), + AUTHENTICATION(1007,"身份验证异常"), + NOHANDLERFOUND(1008,"找不到相应的视图处理器"), + PARAM_INVALID(1009, "参数不合法"), + TOKEN_EXCEPTION(1010, "无效的令牌"), + TOKEN_EXPIRED(1011, "当前账户已在其他设备登录"), + TOKEN_VERIFICATION_FAILED(1013, "令牌验证失败"), + OSS_ERROR(1012, "OSS文件上传异常"), + Network_ERROR(9000, "网络请求失败"), + SERVER_INTERNAL_ERROR(99999, "服务器内部错误"), + ; + + private Integer code; + + private String message; + + Code(Integer code, String message) { + this.code = code; + this.message = message; + } +} diff --git a/src/main/java/com/subsidy/common/constant/CourseNotification.java b/src/main/java/com/subsidy/common/constant/CourseNotification.java new file mode 100644 index 0000000..0111f35 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/CourseNotification.java @@ -0,0 +1,8 @@ +package com.subsidy.common.constant; + +public class CourseNotification { + + public static final String UNSENT = "待发送"; + + public static final String SENT = "已发送"; +} diff --git a/src/main/java/com/subsidy/common/constant/MemberType.java b/src/main/java/com/subsidy/common/constant/MemberType.java new file mode 100644 index 0000000..c6031a8 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/MemberType.java @@ -0,0 +1,11 @@ +package com.subsidy.common.constant; + +public class MemberType { + + public static final String PRINCIPAL = "团队负责人"; + + public static final String TEAM_MEMBER = "团队成员"; + + public static final String MENTOR = "指导教师"; + +} diff --git a/src/main/java/com/subsidy/common/constant/Platform.java b/src/main/java/com/subsidy/common/constant/Platform.java new file mode 100644 index 0000000..b1c9117 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/Platform.java @@ -0,0 +1,27 @@ +package com.subsidy.common.constant; + +import lombok.Data; + +@Data +public class Platform { + + /* + 学生端 + */ + public static final String student = "student"; + + /* + 院校端 + */ + public static final String school = "school"; + + /* + 中心端 + */ + public static final String center = "center"; + + /* + 评审端 + */ + public static final String review = "review"; +} diff --git a/src/main/java/com/subsidy/common/constant/ProjectReview.java b/src/main/java/com/subsidy/common/constant/ProjectReview.java new file mode 100644 index 0000000..f45323b --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/ProjectReview.java @@ -0,0 +1,29 @@ +package com.subsidy.common.constant; + +import lombok.Data; + +@Data +public class ProjectReview { + + /** + * 评分状态(对于评分) + */ + public static final String SUBMITTED = "已评审"; + + public static final String TO_SCORE = "待评审"; + + /** + * 评审状态(对于项目) + */ +// public static final String INNER_TO_REVIEWED = "待评审"; + + public static final String TO_REVIEWED = "待评审"; + + + public static final String ASSIGNED = "已分配"; + + public static final String UNASSIGNED = "未分配"; + + public static final String REVIEW = "已评审"; + +} diff --git a/src/main/java/com/subsidy/common/constant/ProjectSchedule.java b/src/main/java/com/subsidy/common/constant/ProjectSchedule.java new file mode 100644 index 0000000..3ad657c --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/ProjectSchedule.java @@ -0,0 +1,15 @@ +package com.subsidy.common.constant; + +import lombok.Data; + +@Data +public class ProjectSchedule { + + //报名阶段 + public static final String REGISTER = "校内报名"; + + public static final String SEMI_FINAL_REVIEW = "市级复赛"; + + public static final String FINAL_REVIEW = "市级决赛"; + +} diff --git a/src/main/java/com/subsidy/common/constant/ProjectStatus.java b/src/main/java/com/subsidy/common/constant/ProjectStatus.java new file mode 100644 index 0000000..8f7b6d9 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/ProjectStatus.java @@ -0,0 +1,32 @@ +package com.subsidy.common.constant; + +import lombok.Data; + +@Data +public class ProjectStatus { + + public static final String UN_SUBMITTED = "填写中"; + + public static final String TO_REVIEW = "待评审"; + + public static final String WITHDRAWN = "已撤回"; + + public static final String FIRST_NOT_PASSED = "校内初审未通过"; + + public static final String SECOND_NOT_PASSED = "复赛审核未通过"; + + public static final String FIRST_REVIEW = "等待校内初审"; + + public static final String SECOND_REVIEW = "等待复赛审核"; + + public static final String THIRD_REVIEW = "等待决赛结果"; + + public static final String REMATCH_WINNING_AWARD = "优秀奖"; + + public static final String REMATCH_SILVER_AWARD = "银奖"; + + public static final String REMATCH_BRONZE_AWARD = "铜奖"; + + public static final String REMATCH_FINALS_GOLD_AWARD = "金奖"; + +} diff --git a/src/main/java/com/subsidy/common/constant/ProjectTrack.java b/src/main/java/com/subsidy/common/constant/ProjectTrack.java new file mode 100644 index 0000000..839cc6a --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/ProjectTrack.java @@ -0,0 +1,14 @@ +package com.subsidy.common.constant; + +import lombok.Data; + +@Data +public class ProjectTrack { + + public static final String COURSE_TRACK = "课程风采展示"; + + public static final String TEACH_TRACK = "教学技能赛道"; + + public static final String CONSULT_TRACK = "咨询辅导赛道"; + +} diff --git a/src/main/java/com/subsidy/common/constant/ProjectType.java b/src/main/java/com/subsidy/common/constant/ProjectType.java new file mode 100644 index 0000000..5a66a56 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/ProjectType.java @@ -0,0 +1,32 @@ +package com.subsidy.common.constant; + +/** + *

+ * 项目组别 + *

+ * + * @author DengMin + * @since 2021/6/9 + */ +public class ProjectType { + + /** + * 赛道 + */ + public static final String MAIN_TRACK = "主赛道"; + + public static final String SEED_TRACK = "种子赛道"; + + public static final String VOCATIONAL = "职教赛道"; + + /** + * 组别 + */ + public static final String TECHNOLOGY_INNOVATION_GROUP = "科技创新"; + + public static final String CULTURAL_CREATIVE_GROUP = "文化创意"; + + public static final String VOCATIONAL_GROUP = "高职"; + + public static final String SECONDARY_GROUP = "中职"; +} diff --git a/src/main/java/com/subsidy/common/constant/Role.java b/src/main/java/com/subsidy/common/constant/Role.java new file mode 100644 index 0000000..80bdc5d --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/Role.java @@ -0,0 +1,10 @@ +package com.subsidy.common.constant; + +public class Role { + + public static final String LEADER = "参赛教师"; + + public static final String MEMBER = "课程团队"; + + +} diff --git a/src/main/java/com/subsidy/common/constant/SMSTemplate.java b/src/main/java/com/subsidy/common/constant/SMSTemplate.java new file mode 100644 index 0000000..572f7f1 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/SMSTemplate.java @@ -0,0 +1,31 @@ +package com.subsidy.common.constant; + +public class SMSTemplate { + + /* + 项目进度通知 + */ + public static final String PROJECT_PROGRESS = "2760175"; + + /* + 项目提交通知 + */ + public static final String PROJECT_SUBMIT = "270159"; + + /* + 评审邀请通知 old + */ + public static final String REVIEW_INVITATION_OLD = "2765806"; + + /** + * + */ + public static final String REVIEW_INVITATION_NEW = "2939771"; + + /* + 撤销评审项目通知 + */ + public static final String CANCEL_REVIEW = "229303"; + + +} diff --git a/src/main/java/com/subsidy/common/constant/SmsCode.java b/src/main/java/com/subsidy/common/constant/SmsCode.java new file mode 100644 index 0000000..23a8179 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/SmsCode.java @@ -0,0 +1,24 @@ +package com.subsidy.common.constant; + +import lombok.Getter; + +public class SmsCode { + + /** + * 平台:student(学生端)、school(院校端)、center(中心端)、review(评审端) + */ + public static final String student = "student"; + + public static final String school = "school"; + + public static final String center = "center"; + + public static final String review = "review"; + + /** + * 行为标识:register(注册标识)、login(登录标识) + */ + public static final String register = "register"; + + public static final String login = "login"; +} diff --git a/src/main/java/com/subsidy/common/constant/VodConstant.java b/src/main/java/com/subsidy/common/constant/VodConstant.java new file mode 100644 index 0000000..12fe119 --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/VodConstant.java @@ -0,0 +1,31 @@ +package com.subsidy.common.constant; + +import lombok.Getter; + +@Getter +public class VodConstant { + + /* 流量 */ + public final static String FLUX = "Flux"; + + /* 带宽 */ + public final static String BANDWIDTH = "Bandwidth"; + + /* 请求数 */ + public final static String REQUESTS = "Requests"; + + /* 请求命中率 */ + public final static String HITRATE = "Hitrate"; + + /* IP访问次数 */ + public final static String IP_VISITS = "Ip_visits"; + + /* 带宽缓存key */ + public final static String BANDWIDTH_CACHE_KEY = "CDNStatBandwidthCache"; + + /* 流量缓存key */ + public final static String FLUX_CACHE_KEY = "CDNStatFluxCache"; + + /* 自定义缓存名称(ehcache.xml中的自定义规则名称) */ + public final static String CDN_STAT_DETAILS_CACHE_NAME = "CDNStatDetails"; +} diff --git a/src/main/java/com/subsidy/common/constant/WxConstant.java b/src/main/java/com/subsidy/common/constant/WxConstant.java new file mode 100644 index 0000000..41ed23a --- /dev/null +++ b/src/main/java/com/subsidy/common/constant/WxConstant.java @@ -0,0 +1,35 @@ +package com.subsidy.common.constant; + +public class WxConstant { + + /** + * app id + */ + public static final String APPID = "wx75ec06e9ce50ef73"; + + /** + * 秘钥 + */ + public static final String SECRENT = "c039d32804278503474dfcf7cb3944b9"; + + /** + * 获取访问用户身份 + */ + public static final String GETUSERINFO = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={access_token}&code={code}"; + + /** + * 读取成员 + */ + public static final String GET = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={access_token}&userid={userid}"; + + /** + * 获取access_token + */ + public static final String GET_SUITE_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"; + + + /** + * 扫码登陆回调地址 + */ + public static final String QR_REDIRECT_URL = "http://massadmin.youkehulian.com"; +} diff --git a/src/main/java/com/subsidy/common/exception/GlobalExceptionHandler.java b/src/main/java/com/subsidy/common/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..2e535e9 --- /dev/null +++ b/src/main/java/com/subsidy/common/exception/GlobalExceptionHandler.java @@ -0,0 +1,119 @@ +package com.subsidy.common.exception; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.subsidy.common.ResponseData; +import com.subsidy.common.ResponseVO; +import com.subsidy.common.configure.RemoteProperties; +import com.subsidy.common.constant.Code; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.validation.BindException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.NoHandlerFoundException; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * 异常处理 + * @author DengMin + * @date 2020/07/14 + **/ +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { + + /** + * 自定义异常 + * @param e + * @return + */ + @ExceptionHandler(value = HttpException.class) + public ResponseVO handlerException(HttpServletRequest request, HttpException e) { + String message = RemoteProperties.getMessage(e.getCode()); + if(StringUtils.isBlank(message)) { + message = e.getMessage(); + } + String url = request.getRequestURI(); + return ResponseData.generateCreatedResponse(e.getCode(), message, url); + } + + /** + * 404 + * @param request + * @return + */ + @ExceptionHandler(value = NoHandlerFoundException.class) + public ResponseVO NoHandlerFoundException(HttpServletRequest request) { + String url = request.getRequestURI(); + return ResponseData.generateCreatedResponse(Code.NOHANDLERFOUND.getCode(), Code.NOHANDLERFOUND.getMessage(), url); + } + + /** + * 请求方式错误 + * @param request + * @return + */ + @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class) + public ResponseVO HttpRequestMethodNotSupportedException(HttpServletRequest request) { + String url = request.getRequestURI(); + return ResponseData.generateCreatedResponse(Code.NOHANDLERFOUND.getCode(), Code.NOHANDLERFOUND.getMessage(), url); + } + + /** + * 参数不合法 + * @param e + * @return + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseVO validateException(MethodArgumentNotValidException e){ + final List errList = new ArrayList<>(); + e.getBindingResult().getAllErrors().stream().forEach(x -> { + errList.add(x.getDefaultMessage()); + }); + return ResponseData.generateCreatedResponse(Code.PARAM_INVALID.getCode(), Code.PARAM_INVALID.getMessage(), errList.toString()); + } + + /** + * JSON 序列化异常 + * @param e + * @return + */ + @ExceptionHandler(HttpMessageNotReadableException.class) + public ResponseVO exceptionHandler(HttpMessageNotReadableException e) { + log.error(e.getMessage()); + return ResponseData.generateCreatedResponse(Code.PARAM_INVALID.getCode(), Code.PARAM_INVALID.getMessage()+":{"+e.getMessage()+"}"); + } + + /** + * 校验异常 + * @param e + * @return + */ + @ExceptionHandler(BindException.class) + public ResponseVO BindException(BindException e){ + final List errList = new ArrayList<>(); + e.getBindingResult().getAllErrors().stream().forEach(x -> { + errList.add(x.getDefaultMessage()); + }); + return ResponseData.generateCreatedResponse(Code.PARAM_INVALID.getCode(), Code.PARAM_INVALID.getMessage(), errList.toString()); + } + + /** + * 服务器内部错误 + * @return + */ + @ExceptionHandler(value = Exception.class) + public ResponseVO serverInternalError(Exception e, HttpServletRequest request) { + String url = request.getRequestURI(); +// log.error("path:"+url); +// log.error("---- error message: ---"+e.toString()); + e.printStackTrace(); + return ResponseData.generateCreatedResponse(Code.SERVER_INTERNAL_ERROR.getCode(), Code.SERVER_INTERNAL_ERROR.getMessage(), url); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/exception/HttpException.java b/src/main/java/com/subsidy/common/exception/HttpException.java new file mode 100644 index 0000000..291188b --- /dev/null +++ b/src/main/java/com/subsidy/common/exception/HttpException.java @@ -0,0 +1,45 @@ +package com.subsidy.common.exception; + + +import com.subsidy.common.configure.RemoteProperties; + +/** + * 异常处理 + * @author DengMin + * @date 2020/08/12 + **/ +public class HttpException extends RuntimeException{ + + private Integer code; + + private String message; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + @Override + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public HttpException(Integer code) { + super(RemoteProperties.getMessage(code)); + String message = RemoteProperties.getMessage(code); + this.message = message; + this.code = code; + } + + public HttpException(Integer code, String message) { + this.message = message; + this.code = code; + } +} diff --git a/src/main/java/com/subsidy/common/handler/MetaHandler.java b/src/main/java/com/subsidy/common/handler/MetaHandler.java new file mode 100644 index 0000000..9e83fcd --- /dev/null +++ b/src/main/java/com/subsidy/common/handler/MetaHandler.java @@ -0,0 +1,26 @@ +package com.subsidy.common.handler; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * 填充配置 + * @author DengMin + * @date 2020/07/21 + **/ +@Component +public class MetaHandler implements MetaObjectHandler { + + @Override + public void insertFill(MetaObject metaObject) { + this.setFieldValByName("createDate", LocalDateTime.now(), metaObject); + } + + @Override + public void updateFill(MetaObject metaObject) { + this.setFieldValByName("updateDate", LocalDateTime.now(), metaObject); + } +} diff --git a/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java new file mode 100644 index 0000000..5e37f15 --- /dev/null +++ b/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java @@ -0,0 +1,107 @@ +package com.subsidy.common.interceptor; + +import com.auth0.jwt.interfaces.Claim; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.subsidy.common.exception.HttpException; +import com.subsidy.mapper.AdministerMapper; +import com.subsidy.model.AdministerDO; +import com.subsidy.util.ConstantUtils; +import com.subsidy.util.JwtUtil; +import com.subsidy.util.Localstorage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; +import java.util.Calendar; +import java.util.Map; + +/** + *

+ * 鉴权拦截器 + *

+ * + * @author DengMin + * @since 2021/4/14 + */ +@Component +public class AuthenticationInterceptor implements HandlerInterceptor { + + @Autowired + private AdministerMapper administerMapper; + + @Override + @CrossOrigin() + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + // 不需要进行拦截 + if (!(handler instanceof HandlerMethod)) { + return true; + } + + HandlerMethod handlerMethod = (HandlerMethod) handler; + Method method = handlerMethod.getMethod(); + + TimeRequired timeRequired = method.getAnnotation(TimeRequired.class); + if (timeRequired != null) { + Calendar calendar = Calendar.getInstance(); + + int hour = calendar.get(Calendar.HOUR_OF_DAY); + if (hour < 6 || hour >= 23 ) { + throw new HttpException(17001); + } + } + + LoginRequired methodAnnotation = method.getAnnotation(LoginRequired.class); + if (methodAnnotation != null) { + String authorization = request.getHeader("Authorization"); + if (!StringUtils.isBlank(authorization)) { + String token = authorization; + if (authorization.startsWith("Bearer")) { + token = authorization.replace("Bearer ", ""); + } + /*Token不存在*/ + if (token == null || !JwtUtil.verifyToken(token)) { + throw new HttpException(1010); + } + + Map claimMap = JwtUtil.getClaims(token); + if (claimMap != null) { + //String[] role = methodAnnotation.value(); + String type = claimMap.get("type").asString(); + if (ConstantUtils.ADMINISTER_TERMINATE.equals(type)) { + AdministerDO administerDO = administerMapper.selectById(claimMap.get("id").asLong()); + if (null != administerDO) { + Localstorage.setUser(administerDO,type); + return true; + } + } else if (ConstantUtils.MOBILE_TERMINATE.equals(type)) { + + + /** + * 学生端设置单设备登录 + */ + /* String tk = (String) redisUtil.get(ConstantUtils.MOBILE_TERMINATE+"_"+claimMap.get("id").asLong()); + if(StringUtils.isNotBlank(tk)) { + if(tk.equals(token)) { + return true; + } + + throw new HttpException(1011); + } else { + throw new HttpException(1010); + }*/ + } else { + throw new HttpException(1010); + } + } + } + throw new HttpException(1010); + } + return true; + } + +} diff --git a/src/main/java/com/subsidy/common/interceptor/LoginRequired.java b/src/main/java/com/subsidy/common/interceptor/LoginRequired.java new file mode 100644 index 0000000..19e2615 --- /dev/null +++ b/src/main/java/com/subsidy/common/interceptor/LoginRequired.java @@ -0,0 +1,20 @@ +package com.subsidy.common.interceptor; + +import java.lang.annotation.*; + +/** + *

+ * 自定义验证登陆注解 + *

+ * + * @author DengMin + * @since 2020/12/18 + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface LoginRequired { + + String[] value(); +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/common/interceptor/TimeRequired.java b/src/main/java/com/subsidy/common/interceptor/TimeRequired.java new file mode 100644 index 0000000..d720289 --- /dev/null +++ b/src/main/java/com/subsidy/common/interceptor/TimeRequired.java @@ -0,0 +1,10 @@ +package com.subsidy.common.interceptor; + +import java.lang.annotation.*; + +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface TimeRequired { +} diff --git a/src/main/java/com/subsidy/controller/AdministerController.java b/src/main/java/com/subsidy/controller/AdministerController.java new file mode 100644 index 0000000..8634945 --- /dev/null +++ b/src/main/java/com/subsidy/controller/AdministerController.java @@ -0,0 +1,22 @@ +package com.subsidy.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.Api; + +/** + *

+ * 管理平台用户 前端控制器 + *

+ * + * @author Tuyp + * @since 2025-11-25 + */ +@RestController +@Api(tags = "管理平台用户") +@RequestMapping("/administer-do") +public class AdministerController { + +} diff --git a/src/main/java/com/subsidy/mapper/AdministerMapper.java b/src/main/java/com/subsidy/mapper/AdministerMapper.java new file mode 100644 index 0000000..6d561fb --- /dev/null +++ b/src/main/java/com/subsidy/mapper/AdministerMapper.java @@ -0,0 +1,18 @@ +package com.subsidy.mapper; + +import com.subsidy.model.AdministerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * 管理平台用户 Mapper 接口 + *

+ * + * @author Tuyp + * @since 2025-11-25 + */ + @Repository +public interface AdministerMapper extends BaseMapper { + +} diff --git a/src/main/java/com/subsidy/model/AdministerDO.java b/src/main/java/com/subsidy/model/AdministerDO.java new file mode 100644 index 0000000..ab8aefd --- /dev/null +++ b/src/main/java/com/subsidy/model/AdministerDO.java @@ -0,0 +1,106 @@ +package com.subsidy.model; + +import com.subsidy.util.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 管理平台用户 + *

+ * + * @author Tuyp + * @since 2025-11-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("administer") +public class AdministerDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 手机号 + */ + private String telephone; + + /** + * 账号 + */ + private String accountName; + + /** + * 密码 + */ + private String password; + + /** + * 公司id + */ + private Long companyId; + + /** + * 劳务id + */ + private Long laborId; + + /** + * 院校id + */ + private Long academyId; + + /** + * 学院id + */ + private Long collegeId; + + /** + * 成员名称 + */ + private String userName; + + /** + * 头像 + */ + private String img; + + /** + * 1:启用 0:禁用 + */ + private String status; + + /** + * 角色 0:应用 1:企业关联客户 2:中心 3:企业唯一账号,4:院校唯一账号 5:院校关联账号 8辅导员 9学院管理员 10 专业老师 11 指导教师 + */ + private Integer role; + + /** + * 上一次登录使用的角色 + */ + private Integer lastRole; + + /** + * 备注 + */ + private String remark; + + /** + * 微信openid + */ + private String openid; + + private String workNo; + + private String firstLogin; + + +} diff --git a/src/main/java/com/subsidy/service/AdministerService.java b/src/main/java/com/subsidy/service/AdministerService.java new file mode 100644 index 0000000..c1c1942 --- /dev/null +++ b/src/main/java/com/subsidy/service/AdministerService.java @@ -0,0 +1,16 @@ +package com.subsidy.service; + +import com.subsidy.model.AdministerDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 管理平台用户 服务类 + *

+ * + * @author Tuyp + * @since 2025-11-25 + */ +public interface AdministerService extends IService { + +} diff --git a/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java new file mode 100644 index 0000000..ff3c5fc --- /dev/null +++ b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java @@ -0,0 +1,20 @@ +package com.subsidy.service.impl; + +import com.subsidy.model.AdministerDO; +import com.subsidy.mapper.AdministerMapper; +import com.subsidy.service.AdministerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 管理平台用户 服务实现类 + *

+ * + * @author Tuyp + * @since 2025-11-25 + */ +@Service +public class AdministerServiceImpl extends ServiceImpl implements AdministerService { + +} diff --git a/src/main/java/com/subsidy/util/ActivityDetectionUtils.java b/src/main/java/com/subsidy/util/ActivityDetectionUtils.java new file mode 100644 index 0000000..0f09334 --- /dev/null +++ b/src/main/java/com/subsidy/util/ActivityDetectionUtils.java @@ -0,0 +1,52 @@ +package com.subsidy.util; + +import com.tencentcloudapi.captcha.v20190722.CaptchaClient; +import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultRequest; +import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultResponse; +import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.profile.ClientProfile; +import com.tencentcloudapi.common.profile.HttpProfile; + +import javax.servlet.http.HttpServletRequest; + +public class ActivityDetectionUtils { + + /** + * 活跃度检测工具类 + * + * @throws Exception + */ + + public static DescribeCaptchaResultResponse activityDetection(HttpServletRequest request, String ticket, String randstr) { + + try { + // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密 + // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取 + Credential cred = new Credential(ConstantUtils.SECRET_ID, ConstantUtils.SECRET_KEY); + // 实例化一个http选项,可选的,没有特殊需求可以跳过 + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint("captcha.tencentcloudapi.com"); + // 实例化一个client选项,可选的,没有特殊需求可以跳过 + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + // 实例化要请求产品的client对象,clientProfile是可选的 + CaptchaClient client = new CaptchaClient(cred, "", clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + DescribeCaptchaResultRequest req = new DescribeCaptchaResultRequest(); + req.setCaptchaType(9L); + String ip = IpAddressUtil.getIpAddress(request); + req.setUserIp(ip); + req.setRandstr(randstr); + req.setCaptchaAppId(ConstantUtils.CAPTCHAAPP_ID); + req.setAppSecretKey(ConstantUtils.APP_SECRET_KEY); + req.setBusinessId(ConstantUtils.BUSINESS_ID); + req.setTicket(ticket); + // 返回的resp是一个DescribeCaptchaResultResponse的实例,与请求对象对应 + return client.DescribeCaptchaResult(req); + } catch (Exception e) { + + } + return null; + } + +} diff --git a/src/main/java/com/subsidy/util/AliyunSmsUtil.java b/src/main/java/com/subsidy/util/AliyunSmsUtil.java new file mode 100644 index 0000000..9aa1deb --- /dev/null +++ b/src/main/java/com/subsidy/util/AliyunSmsUtil.java @@ -0,0 +1,211 @@ +package com.subsidy.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.subsidy.common.configure.AliyunSmsProperties; +import com.subsidy.common.exception.HttpException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * 阿里云短信 + *

+ * + * @author DengMin + * @since 2021/1/27 + */ + +@Slf4j +@Component +public class AliyunSmsUtil { + + @Autowired + private AliyunSmsProperties aliyunSmsProperties; + + /** + * 阿里云短信 -- 验证码 + * @param phone + * @param code + * @return + */ + public SendSmsResponse send(String phone, int code) { + try { + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + + //初始化acsClient,暂不支持region化 + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunSmsProperties.getAccessKeyId(), aliyunSmsProperties.getAccessKeySecret()); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", aliyunSmsProperties.getProduct(), aliyunSmsProperties.getDomain()); + IAcsClient acsClient = new DefaultAcsClient(profile); + + //组装请求对象-具体描述见控制台-文档部分内容 + SendSmsRequest request = new SendSmsRequest(); + //必填:待发送手机号 + request.setPhoneNumbers(phone); + //必填:短信签名-可在短信控制台中找到 + request.setSignName("有课互联"); + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode("SMS_190945393"); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + request.setTemplateParam("{\"code\":\"" + code + "\"}"); + + //hint 此处可能会抛出异常,注意catch + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + if (sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + return sendSmsResponse; + } + + throw new Exception(sendSmsResponse.getMessage()); + } catch (Exception e) { + log.error("---短信发送失败:" + e); + throw new HttpException(10011); + } + } + + public static void main(String[] args) { +// AliyunSmsUtil.sendNew("15201936167",000123); + } + + + /** + * 三网平台短信 + * @param msg + * @param phone + * @param templateId + */ + public void sendTemplateMsg(String msg, String phone, String templateId) { + Map map = new HashMap<>(); + try { + map.put("cpcode", aliyunSmsProperties.getCpcode()); + map.put("msg", msg); + map.put("mobiles", phone); + map.put("excode", aliyunSmsProperties.getExcode()); + map.put("templetid", templateId); + String md5source = aliyunSmsProperties.getCpcode() + msg + phone + aliyunSmsProperties.getExcode() + templateId + aliyunSmsProperties.getKey(); + map.put("sign", makeMD5(new String(md5source.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)).toLowerCase()); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity responseEntity = restTemplate.postForEntity(aliyunSmsProperties.getRcsapi(), map, String.class); + String body = responseEntity.getBody(); + JSONObject object = JSON.parseObject(body); + if (Integer.valueOf(object.get("resultcode").toString()) != 0) { + log.error(object.get("resultmsg").toString()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +// /** +// * 三网平台短信 新版本 https://flaginfo-cloud.yuque.com/staff-rozzgq/ofcpak +// * @param msg +// * @param phone +// * @param templateId +// */ +// public static void sendTemplateMsgNew(String msg, String phone, String templateId) { +// String info = null; +// try{ +// HttpClient httpclient = new HttpClient(); +// PostMethod post = new PostMethod("https://opassapi.infocloud.cc/sms/Api/SendGBK.do");// +// post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gb2312"); +// post.addParameter("SpCode", templateId); +// post.addParameter("LoginName", "7db124d0baf189d1e485350xxx"); +// post.addParameter("Password", "3df50b24fb8288b9da99d16bf527e9dbf13659748534dca6e0820xxx"); +// post.addParameter("MessageContent", msg); +// post.addParameter("UserNumber", phone); +// post.addParameter("SerialNumber", ""); +// post.addParameter("f", "1"); +// httpclient.executeMethod(post); +// info = new String(post.getResponseBody(),"gbk"); +// System.out.println(info); +// }catch (Exception e) { +// e.printStackTrace(); +// } +// } + + + public void sendTemplateMsgP(String msg, String phone, String templateId) { + Map map = new HashMap<>(); + try { + map.put("cpcode", aliyunSmsProperties.getCpcode()); + map.put("msg", msg); + map.put("mobiles", phone); + map.put("excode", aliyunSmsProperties.getExcode()); + map.put("templetid", templateId); + String md5source = aliyunSmsProperties.getCpcode() + msg + phone + aliyunSmsProperties.getExcode() + templateId + aliyunSmsProperties.getKey(); + map.put("sign", makeMD5(new String(md5source.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)).toLowerCase()); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity responseEntity = restTemplate.postForEntity(aliyunSmsProperties.getRcsapi(), map, String.class); + String body = responseEntity.getBody(); + JSONObject object = JSON.parseObject(body); + if (Integer.valueOf(object.get("resultcode").toString()) != 0) { + log.error(object.get("resultmsg").toString()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String makeMD5(String plainText) { + String re_md5 = ""; + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(plainText.getBytes(StandardCharsets.UTF_8)); + byte[] b = md.digest(); + int i; + StringBuffer buf = new StringBuffer(); + for (int offset = 0; offset < b.length; offset++) { + i = b[offset]; + if (i < 0) { + i += 256; + } + + if (i < 16) { + buf.append("0"); + } + buf.append(Integer.toHexString(i)); + } + re_md5 = buf.toString().toLowerCase(); + } catch (Exception e) { + e.printStackTrace(); + } + return re_md5; + } + + +// public static String getByteString( byte[] buff_out ) +// { +// StringBuffer strBuf = new StringBuffer(buff_out.length * 3); +// strBuf.append("Length["); +// strBuf.append(buff_out.length); +// strBuf.append("];Content["); +// for ( int i = 0 ; i < buff_out.length ; ++i ) { +// int l = buff_out[i] & 0x0F; +// int h = (buff_out[i] & 0xF0) >> 4; +// +// char ll = (char) (l > 9 ? 'a' + l - 10 : '0' + l); +// char hh = (char) (h > 9 ? 'a' + h - 10 : '0' + h); +// +// strBuf.append(hh); +// strBuf.append(ll); +// strBuf.append(" "); +// } +// strBuf.append("]"); +// return strBuf.toString().toUpperCase(); +// } + +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/util/Base64Util.java b/src/main/java/com/subsidy/util/Base64Util.java new file mode 100644 index 0000000..cabdb91 --- /dev/null +++ b/src/main/java/com/subsidy/util/Base64Util.java @@ -0,0 +1,87 @@ +package com.subsidy.util; + +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +import javax.imageio.stream.FileImageInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +class Base64Util { + /** + * 字符串转图片 + * @param base64Str + * @return + */ + public static byte[] decode(String base64Str){ + byte[] b = null; + BASE64Decoder decoder = new BASE64Decoder(); + try { + b = decoder.decodeBuffer(replaceEnter(base64Str)); + } catch (IOException e) { + e.printStackTrace(); + } + return b; + } + + /** + * 图片转字符串 + * @param image + * @return + */ + public static String encode(byte[] image){ + BASE64Encoder decoder = new BASE64Encoder(); + return replaceEnter(decoder.encode(image)); + } + + public static void main(String[] args) { + System.out.println(encode("http://ykhl-bigger.oss-cn-beijing.aliyuncs.com/2023-02-1618cb936b-4825-429c-9fdd-dd9d0de97ed7.jpg?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg")); + } + + public static String encode(String uri){ + BASE64Encoder encoder = new BASE64Encoder(); + return replaceEnter(encoder.encode(uri.getBytes())); + } + + /** + * + * @path 图片路径 + * @return + */ + + public static byte[] imageTobyte(String path){ + byte[] data = null; + FileImageInputStream input = null; + try { + input = new FileImageInputStream(new File(path)); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + int numBytesRead = 0; + while((numBytesRead = input.read(buf)) != -1){ + output.write(buf, 0, numBytesRead); + } + data = output.toByteArray(); + output.close(); + input.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return data; + } + + + + public static String replaceEnter(String str){ + String reg ="[\n-\r]"; + Pattern p = Pattern.compile(reg); + Matcher m = p.matcher(str); + return m.replaceAll(""); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/util/BaseModel.java b/src/main/java/com/subsidy/util/BaseModel.java new file mode 100644 index 0000000..f53a427 --- /dev/null +++ b/src/main/java/com/subsidy/util/BaseModel.java @@ -0,0 +1,34 @@ +package com.subsidy.util; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public abstract class BaseModel { + + /** + * 创建时间 + */ + @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER, value = "create_date", fill = FieldFill.INSERT) + private LocalDateTime createDate; + + /** + * 更新时间 + */ + @JsonIgnore + @TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER, value = "update_date", fill = FieldFill.UPDATE) + private LocalDateTime updateDate; + + /** + * 删除时间 + */ + @JsonIgnore + @TableLogic + private LocalDateTime deleteDate; +} diff --git a/src/main/java/com/subsidy/util/CodeGenerator.java b/src/main/java/com/subsidy/util/CodeGenerator.java new file mode 100644 index 0000000..7b488bc --- /dev/null +++ b/src/main/java/com/subsidy/util/CodeGenerator.java @@ -0,0 +1,129 @@ +package com.subsidy.util; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.FileOutConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.TemplateConfig; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; + +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; +import java.util.Scanner; + +/** + * Mybatis-Plus CodeGenerator + * + * @author DengMin + * @date 2020/07/02 + **/ +public class CodeGenerator { + + public static String scanner(String tip) { + StringBuilder help = new StringBuilder(); + help.append("1.生成全部表 2.输入需要生成表名"); + System.out.println(help.toString()); + Scanner scanner = new Scanner(System.in); + Integer ipt = Integer.valueOf(scanner.next()); + if(ipt == 1) { + return ""; + } else if(ipt == 2) { + StringBuilder help1 = new StringBuilder(); + help1.append("请输入" + tip + ":"); + System.out.println(help1.toString()); + Scanner scanner1 = new Scanner(System.in); + if (scanner1.hasNext()) { + String name = scanner1.next(); + if (StringUtils.isNotEmpty(name)) { + return name; + } + } + throw new MybatisPlusException("请输入正确的" + tip + "!"); + } + return scanner(tip); + } + + public static void main(String[] args) { + final ResourceBundle rb = ResourceBundle.getBundle("mybatis-plus"); + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(System.getProperty("user.dir") + rb.getString("outputDir")); + gc.setOpen(false); + gc.setBaseResultMap(true); + gc.setBaseColumnList(true); + gc.setAuthor(rb.getString("author")); + gc.setMapperName("%sMapper"); + gc.setEntityName("%sDO"); + gc.setServiceName("%sService"); + gc.setServiceImplName("%sServiceImpl"); + gc.setControllerName("%sController"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setDbType(DbType.MYSQL); + dsc.setUrl(rb.getString("url")); + dsc.setDriverName(rb.getString("driverName")); + dsc.setUsername(rb.getString("userName")); + dsc.setPassword(rb.getString("password")); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setParent(rb.getString("setParent")); + pc.setController("controller"); + pc.setService("service"); + pc.setServiceImpl("service.impl"); + pc.setEntity("model"); + pc.setMapper("mapper"); + mpg.setPackageInfo(pc); + + // 自定义配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + // to do nothing + } + }; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig("/templates/mapper.xml.ftl") { + @Override + public String outputFile(TableInfo tableInfo) { + // 自定义输入文件名称 + return System.getProperty("user.dir")+ rb.getString("mapperPath") + tableInfo.getMapperName() + StringPool.DOT_XML; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + mpg.setTemplate(new TemplateConfig().setXml(null)); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setSuperEntityClass(BaseModel.class); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + String [] tables = scanner("表名,多个英文逗号分割").split(","); + if(StringUtils.isNotBlank(tables[0])) { + strategy.setInclude(tables); + } + strategy.setControllerMappingHyphenStyle(true); + mpg.setStrategy(strategy); + mpg.setTemplateEngine(new FreemarkerTemplateEngine()); + mpg.execute(); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/util/ConstantUtils.java b/src/main/java/com/subsidy/util/ConstantUtils.java new file mode 100644 index 0000000..1d96498 --- /dev/null +++ b/src/main/java/com/subsidy/util/ConstantUtils.java @@ -0,0 +1,120 @@ +package com.subsidy.util; + + +/** + * 枚举类 + */ +public class ConstantUtils { + + public static final String DELETE_SUCCESS = "删除成功"; + + public static final String DOWNLAOD_SUCCESS = "下载成功"; + + public static final String UPLOAD_FAIL = "上传失败"; + + public static final String ADD_SUCCESS = "新增成功"; + + public static final String REGISTER_SUCCESS = "注册成功"; + + public static final String COMMIT_SUCCESS = "提交成功"; + + public static final String SUCCESS_SEND_OUT = "发送成功"; + + public static final String FAIL_SEND_OUT = "发送失败"; + + public static final String SAVE_SUCCESS = "保存成功"; + + public static final String SHARE_SUCCESS = "共享成功"; + + public static final String SUBMIT_SUCCESS = "提交成功"; + + public static final String SUCCESS_UPDATE = "更新成功"; + + public static final String FAIL_UPDATE = "更新失败"; + + public static final String SET_SUCCESS = "设置成功"; + + public static final String SUCCESS_VERIFY = "验证成功"; + + public static final String FAIL_VERIFY = "验证失败"; + + public static final String COMPANY_NAME = "TeachAI"; + + public static final String ALREADY_DONE = "已完成"; + + public static final String ALREADY_RECOMMEND = "已推荐"; + + public static final String VERIFY_NAME = "有课互联"; + + public static final String NOTICE_NAME = "有课进度通知"; + + public static final String TECH_NAME = "有课互联学习平台"; + + public static final String PUBLISH_SUCCESS = "发布成功"; + + public static final String COMPRESS_SUCCESS = "压缩成功"; + + public static final String CHECK_STATUS = "审核通过"; + + /** + * 短信模板---验证模板 + */ + public static final String TEMPLATE_CODE = "SMS_190945393"; + + /** + * 短信 地域ID + */ + public static final String REGION_ID = "cn-hangzhou"; + + /** + * 短信 RAM账号AccessKey ID + */ + public static final String ACCESS_KEY_ID = "LTAI5tLUBG4B6QxhHrhddc7p"; + + /** + * 短信 RAM账号AccessKey Secret + */ + public static final String SECRET = "eber38QGHZixTQ6bFfrd80kbg67jIP"; + + /** + * 腾讯云点播视频转码模板 + */ + public static final Long TEMPLATE_VOD = 100840L; + + /** + * 手机端token + */ + public static final String MOBILE_TERMINATE = "mobile"; + + public static final String ADMINISTER_TERMINATE = "administer"; + + + /** + * API密钥--微信参数 + */ + public static final String SECRET_ID = "AKIDOcePHvZ2C5VeYHQGSO5aqtlNxJQLqfz2"; + + public static final String SECRET_KEY = "vjHYRmrfDbw0rWxA7oFcj7F8lDPKCm8E"; + + /** + * 图形验证码 + */ + public static final Long CAPTCHAAPP_ID = 2013197365L; + + public static final String APP_SECRET_KEY = "04ABoF0ZVuMje8NP84DE5Sg**"; + + public static final Long BUSINESS_ID = 1L; + + public static final String UTF8 = "UTF-8"; + + /** + * 保利威视 + */ + public static final String POLYV_VIEWLOG_2 = "http://api.polyv.net/live/v1/statistics/{channelId}/viewlog"; + + /** + * 推送人社局图片格式 + */ + public static final String IMAGE_FORMAT = "?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg"; + +} diff --git a/src/main/java/com/subsidy/util/DateFormatUtil.java b/src/main/java/com/subsidy/util/DateFormatUtil.java new file mode 100644 index 0000000..f39120e --- /dev/null +++ b/src/main/java/com/subsidy/util/DateFormatUtil.java @@ -0,0 +1,120 @@ +package com.subsidy.util; + +import java.awt.SystemTray; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.util.Date; + +/** + * 处理时间工具 + * + * @author DengMin + * @date 2019/08/27 13:56 + **/ +public class DateFormatUtil { + + public final static String YEAR = "yyyy"; + public final static String FMT_sdf14_L = "yyyy-MM-dd HH:mm:ss"; + public final static String FMT_sdf_yMd = "yyyy-MM-dd"; + public final static String FMT_sdf_yM = "yyyy-M"; + public final static String FMT_sdf_yMM = "yyyy-MM"; + public final static String FMT_sdf_Hm = "H:mm"; + public final static String FMT_sdf_HHmm = "HH:mm"; + public final static String cron = "s m H d M ? yyyy"; + + /** + * Date转String,自定义格式 + * @param date + * @param pattern + * @return + */ + public static String format(Date date, String pattern) { + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(date); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * LocalDateTime转String,自定义格式 + * @param localDateTime + * @param pattern + * @return + */ + public static String format(LocalDateTime localDateTime, String pattern) { + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(localDateTime); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * String转Date,自定义格式 + * @param date + * @param pattern + * @return + */ + public static Date parse(String date, String pattern) { + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.parse(date); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 比较两个时间 + * .after 大于 + * .before 小于 + * @param d1 + * @param d2 + * @return + */ + public static boolean compare(Date d1, Date d2 ) { + return !d1.after(d2); + } + + /** + * Data转Cron + * @param date + * @return + */ + public static String getCron(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("s m H d M ? yyyy"); + return sdf.format(date); + } + + public static Date localDateTimeToDate(LocalDateTime dateTime) { + if(dateTime == null) { + return null; + } + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = dateTime.atZone(zoneId); + return Date.from(zdt.toInstant()); + } + + public static LocalDateTime secondToLocalDateTime(Long second) { + if(second != null) { + return LocalDateTime.ofEpochSecond(second, 0, ZoneOffset.ofHours(8)); + } + return LocalDateTime.now(); + } + + public static Long LocalDateTimeToSecond(LocalDateTime localDateTime) { + if(localDateTime != null) { + return localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant().toEpochMilli(); + } + return System.currentTimeMillis(); + } +} diff --git a/src/main/java/com/subsidy/util/DudaoConstant.java b/src/main/java/com/subsidy/util/DudaoConstant.java new file mode 100644 index 0000000..22b77e2 --- /dev/null +++ b/src/main/java/com/subsidy/util/DudaoConstant.java @@ -0,0 +1,49 @@ +package com.subsidy.util; + +public class DudaoConstant { + + /** + * POST-1:班级基本信息信息采集接口 + */ + public static final String POST_1 = "DUDAO_POST_1_insertClassBasicInformation"; + + /** + * POST-2:学时信息采集接口 + */ + public static final String POST_2 = "DUDAO_POST_2_insertLearnDuration"; + + /** + * POST-3:考试信息采集接口 + */ + public static final String POST_3 = "DUDAO_POST_3_insertExamInformation"; + + /** + * POST-4:答疑辅导采集接口 + */ + public static final String POST_4 = "DUDAO_POST_4_insertAnswerTutor"; + + /** + * POST-5 上下游班级数据绑定接口 + */ + public static final String POST_5 = "DUDAO_POST_5_insertBindClass"; + + /** + * 调取失败 + */ + public static final String API_ERROR = "调取失败"; + + /** + * 当天没数据 + */ + public static final String NO_DATA = "NO_DATA"; + + /** + * 推送失败 + */ + public static final String PUSH_FAIL = "推送失败"; + + /** + * 推送成功 + */ + public static final String PUSH_SUCCESS = "推送成功"; +} diff --git a/src/main/java/com/subsidy/util/EhCacheUtil.java b/src/main/java/com/subsidy/util/EhCacheUtil.java new file mode 100644 index 0000000..45dba17 --- /dev/null +++ b/src/main/java/com/subsidy/util/EhCacheUtil.java @@ -0,0 +1,53 @@ +package com.subsidy.util; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheManager; +import net.sf.ehcache.Element; +import org.springframework.util.ClassUtils; + +/** + *

+ * Ehcache + *

+ * + * @author DengMin + * @since 2022/8/1 + */ +public class EhCacheUtil { + + static CacheManager cacheManager = CacheManager.newInstance(ClassUtils.getDefaultClassLoader().getResource("").getPath()+"ehcache.xml"); + + /** + * 添加缓存 + * @param cacheName + * @param key + * @param value + */ + public static void putEhCache(String cacheName, String key, Object value) { + Cache cache = cacheManager.getCache(cacheName); + Element element = new Element(key, value); + cache.put(element); + } + + /** + * 获取缓存数据 + * @param cacheName + * @param key + * @return + */ + public static Object getEhCache(String cacheName, String key) { + Cache cache = cacheManager.getCache(cacheName); + Element element = cache.get(key); + return element == null ? null : element.getObjectValue(); + } + + /** + * 删除缓存 + * @param cacheName + * @param key + */ + public static void deleteEhCache(String cacheName, String key) { + Cache cache = cacheManager.getCache(cacheName); + cache.remove(key); + } +} diff --git a/src/main/java/com/subsidy/util/EncryptString.java b/src/main/java/com/subsidy/util/EncryptString.java new file mode 100644 index 0000000..79ca6ff --- /dev/null +++ b/src/main/java/com/subsidy/util/EncryptString.java @@ -0,0 +1,42 @@ +package com.subsidy.util; + +import lombok.extern.slf4j.Slf4j; +import org.bouncycastle.crypto.digests.SM3Digest; +import org.bouncycastle.util.encoders.Hex; + +import java.nio.charset.StandardCharsets; + +/** + * 密码加密 + * + * @author Date: 2019/08/28 20:59 + */ +@Slf4j +public class EncryptString { + + /** + * 对字符串进行SM3哈希计算 + * @param input 待加密的字符串 + * @return 哈希结果(十六进制字符串,64位) + */ + public static String encrypt(String input) { + // 1. 创建SM3摘要计算器 + SM3Digest digest = new SM3Digest(); + + // 2. 将输入字符串转为UTF-8字节数组,更新摘要 + byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8); + digest.update(inputBytes, 0, inputBytes.length); + + // 3. 计算哈希结果(32字节) + byte[] hashBytes = new byte[digest.getDigestSize()]; + digest.doFinal(hashBytes, 0); + + // 4. 将字节数组转为十六进制字符串 + return Hex.toHexString(hashBytes); + } + + + public static void main(String[] args) { + System.out.println(encrypt("catschina00002O9S8Z")); + } +} diff --git a/src/main/java/com/subsidy/util/EncryptUtil.java b/src/main/java/com/subsidy/util/EncryptUtil.java new file mode 100644 index 0000000..9db0ff2 --- /dev/null +++ b/src/main/java/com/subsidy/util/EncryptUtil.java @@ -0,0 +1,35 @@ +//package com.subsidy.util; +// +//import com.amdelamar.jhash.Hash; +//import com.amdelamar.jhash.algorithms.Type; +//import com.amdelamar.jhash.exception.InvalidHashException; +// +//public class EncryptUtil { +// +// /** +// * 设置密文密码 +// * +// * @param password 原始密码 +// * @return 加密密码 +// */ +// public static String encrypt(String password) { +// char[] chars = password.toCharArray(); +// return Hash.password(chars).algorithm(Type.PBKDF2_SHA256).create(); +// } +// +// /** +// * 验证加密密码 +// * +// * @param encryptedPassword 密文密码 +// * @param plainPassword 明文密码 +// * @return 验证是否成功 +// */ +// public static boolean verify(String encryptedPassword, String plainPassword) { +// char[] chars = plainPassword.toCharArray(); +// try { +// return Hash.password(chars).algorithm(Type.PBKDF2_SHA256).verify(encryptedPassword); +// } catch (InvalidHashException e) { +// return false; +// } +// } +//} diff --git a/src/main/java/com/subsidy/util/ExcelFormatUtils.java b/src/main/java/com/subsidy/util/ExcelFormatUtils.java new file mode 100644 index 0000000..c0330e2 --- /dev/null +++ b/src/main/java/com/subsidy/util/ExcelFormatUtils.java @@ -0,0 +1,19 @@ +package com.subsidy.util; + +import java.util.Arrays; +import java.util.List; + +public class ExcelFormatUtils { + + + public static final List memberList = Arrays.asList("序号", "成员名称","身份证号码", "性别", "账号", "联系方式", "签到次数", "课程进度", "学习时长(小时)","学习时长(分钟)","累计有效学习时长", "答疑数", "测试成绩", "总评价"); + + public static final List signList = Arrays.asList("序号", "成员名称", "身份证号", "联系方式", "签到次数", "签到时间","最近签到ip地址","最近签到设备型号"); + + public static final List scoreList = Arrays.asList("序号", "成员名称", "身份证号码", "联系方式", "测试成绩", "测试次数","开始时间","结束时间","测评时间", "总评价"); + + public static final List answersList = Arrays.asList("序号", "提问", "答疑", "提问时间", "提问成员", "答疑时间"); + + public static final List studyLogList = Arrays.asList("开始时间","结束时间","课程","类型","学习时长","累计有效时长"); + +} diff --git a/src/main/java/com/subsidy/util/HttpUtil.java b/src/main/java/com/subsidy/util/HttpUtil.java new file mode 100644 index 0000000..64125fd --- /dev/null +++ b/src/main/java/com/subsidy/util/HttpUtil.java @@ -0,0 +1,461 @@ +package com.subsidy.util; + + +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +//import org.apache.http.entity.mime.MultipartEntityBuilder; +//import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.URLEncoder; +import java.util.*; + +/** + * @author: sadboy + **/ + +public class HttpUtil { + private static final Logger log = LoggerFactory.getLogger(HttpUtil.class); + private static final String UTF8 = "UTF-8"; + private static final String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded; charset=UTF-8"; + private static final String APPLICATION_JSON = "application/json; charset=UTF-8"; + private static final String TEXT_PLAIN = "text/plain; charset=UTF-8"; + private static final String TEXT_HTML = "text/html; charset=UTF-8"; + private static final String APPLICATION_XML = "application/xml; charset=UTF-8"; + + private HttpUtil() { + } + + /** + * 向url发送get请求,当无参数时,paramMap为NULL + * @param url 请求url + * @param paramMap 需要拼接的参数 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + public static String get(String url, Map paramMap) throws IOException { + return get(url, paramMap, UTF8); + } + + /** + * 向url发送get请求 + * @param url 请求url + * @param paramMap 需要拼接的参数 + * @param encoding 编码 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + public static String get(String url, Map paramMap, String encoding) throws IOException { + encoding = encoding == null ? UTF8 : encoding; + url = appendUrl(url, paramMap); + return get(url, encoding, new DataParse() { + @Override + public String parseData(HttpEntity httpEntity, String encoding) throws IOException { + return EntityUtils.toString(httpEntity, encoding); + } + }); + } + + /** + * 向url发送get请求 + * @param url 请求url + * @param paramMap 需要拼接的参数 + * @param encoding 编码 + * @return 请求返回的字节数组,一般用于文件下载 + * @throws IOException 读写异常 + */ + public static byte[] getBinary(String url, Map paramMap, String encoding) throws IOException { + encoding = encoding == null ? UTF8 : encoding; + url = appendUrl(url, paramMap); + return get(url, encoding, new DataParse() { + @Override + public byte[] parseData(HttpEntity httpEntity, String encoding) throws IOException { + return EntityUtils.toByteArray(httpEntity); + } + }); + } + + + /** + * HTTP GET 内部公共请求处理逻辑 + * @param url 请求地址 + * @param encoding 编码字符集, 默认为 utf-8 + * @param dataParse 返回数据反序列化逻辑实现类 + * @return HTTP 返回的内容 + * @throws IOException 客户端和服务器读写通讯异常 + */ + private static T get(String url, String encoding, DataParse dataParse) throws IOException { + log.debug("http 请求 url: {}", url); + T result = null; + // 创建httpclient对象 + CloseableHttpClient httpClient = HttpClientBuilder.create().build(); + // 创建get方式请求对象 + HttpGet httpGet = new HttpGet(url); + httpGet.addHeader("Content-type", APPLICATION_JSON); + // 通过请求对象获取响应对象 + CloseableHttpResponse response = sendRequestAndGetResult(url, httpClient, httpGet); + // 获取结果实体 + if (null != response) { + result = dataParse.parseData(response.getEntity(), encoding); + if (!(result instanceof byte[])) { + log.debug("http 请求结果: {}", result); + } else { + Header[] headers = response.getHeaders("Content-Type"); + for (Header responseHead : headers) { + String headStr = responseHead.getValue(); + if (headStr.startsWith("application/json")) { + String json = new String((byte[]) result); + response.close(); + throw new RuntimeException(json); + } + } + } + } + try { + if (null != response) { + response.close(); + } + } catch (IOException ex) { + log.error(ex.getMessage(), ex); + } + return result; + } + + + /** + * 向url发送post请求 + * @param url 请求url + * @param paramMap 需要拼接的参数 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + public static String postFormBody(String url, Map paramMap) throws IOException { + return postFormBody(url, paramMap, null); + } + + /** + * 向url发送post请求 + * @param url 请求url + * @param paramMap 需要拼接的参数 + * @param encoding 编码 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + public static String postFormBody(String url, Map paramMap, String encoding) throws IOException { + return post(url, paramMap, encoding); + } + + + /** + * 向url发送post请求表单提交数据 + * @param url 请求url + * @param paramMap 表单数据 + * @param encoding 编码 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + private static String post(String url, Map paramMap, String encoding) throws IOException { + log.debug("http 请求 url: {} , 请求参数: {}", url, appendUrl("", paramMap).replace("?", "")); + encoding = encoding == null ? UTF8 : encoding; + // 创建post方式请求对象 + HttpPost httpPost = new HttpPost(url); + // 装填参数 + List nameValuePairs = new ArrayList(); + if (paramMap != null) { + for (Map.Entry entry : paramMap.entrySet()) { + String value = entry.getValue(); + //去掉如下判断会造成String类型的value为null时 + if (value != null) { + nameValuePairs.add(new BasicNameValuePair(entry.getKey(), value)); + } + } + } + // 设置参数到请求对象中 + httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, encoding)); + // 设置header信息 + // 指定报文头【Content-type】、【User-Agent】 + httpPost.setHeader("Content-type", APPLICATION_FORM_URLENCODED); + return post(url, httpPost, encoding, new DataParse() { + @Override + public String parseData(HttpEntity httpEntity, String encoding) throws IOException { + return EntityUtils.toString(httpEntity, encoding); + } + }); + } + + /** + * 向url发送post请求发送json + * @param url 请求url + * @param json json字符串 + * @param encoding 编码 + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + public static String postJsonBody(String url, String json, String encoding) throws IOException { + log.debug("http 请求 url: {} , 请求参数: {}", url, json); + encoding = encoding == null ? UTF8 : encoding; + // 创建post方式请求对象 + HttpPost httpPost = new HttpPost(url); + // 设置参数到请求对象中 + StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON); + // Constant.UTF8 + stringEntity.setContentEncoding(encoding); + httpPost.setEntity(stringEntity); + String result = post(url, httpPost, encoding, new DataParse() { + @Override + public String parseData(HttpEntity httpEntity, String encoding) throws IOException { + return EntityUtils.toString(httpEntity, encoding); + } + }); + return result; + } + + /** + * 向url发送post请求 + * @param url 请求url + * @param httpPost httpClient + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + private static T post(String url, HttpPost httpPost, String encoding, DataParse dataParse) + throws IOException { + T result = null; + CloseableHttpResponse response = null; + // 创建httpclient对象 + CloseableHttpClient httpClient = HttpClientBuilder.create().build(); + + // 执行请求操作,并拿到结果(同步阻塞) + response = sendRequestAndGetResult(url, httpClient, httpPost); + // 获取结果实体 + // 判断网络连接状态码是否正常(0--200都数正常) + if (null != response) { + result = dataParse.parseData(response.getEntity(), encoding); + log.debug("http 请求结果: {}", result); + } + try { + if (null != response) { + response.close(); + } + } catch (IOException ex) { + log.error(ex.getMessage(), ex); + } + return result; + } + + /** + * 设置http头,发送http请求,打印请求耗时 + * @param url 请求url + * @param httpClient httpClient + * @param httpUriRequest httpUriRequest + * @return 请求返回的数据 + * @throws IOException 读写异常 + */ + private static CloseableHttpResponse sendRequestAndGetResult(String url, CloseableHttpClient httpClient, + HttpUriRequest httpUriRequest) throws IOException { + long startTime = System.currentTimeMillis(); + CloseableHttpResponse response = httpClient.execute(httpUriRequest); + long endTime = System.currentTimeMillis(); + collectAPISpendTime(url, startTime, endTime); + return response; + } + + /** + * 打印请求信息 + * @param url 请求url + * @param startTime 请求开始时间 + * @param endTime 请求结束时间 + */ + private static void collectAPISpendTime(String url, long startTime, long endTime) { + log.debug("HTTP请求耗时分析,请求URL: {} , 耗时: {} ms", url, endTime - startTime); + } + +// /** +// * 向url发送post请求上传单文件 +// * @param url 请求url +// * @param paramMap 需要表单提交的参数 +// * @param fileMap 需要上传的文件 +// * @param encoding 编码 +// * @return 请求返回的数据 +// * @throws IOException 读写异常 +// */ +// public static String postFile(String url, Map paramMap, Map fileMap, String encoding) +// throws IOException { +// if (fileMap != null) { +// Map> fileListMap = new HashMap>(); +// for (Map.Entry entry : fileMap.entrySet()) { +// File file = entry.getValue(); +// List fileList = new ArrayList(); +// fileList.add(file); +// fileListMap.put(entry.getKey(), fileList); +// } +// return postMultipleFile(url, paramMap, fileListMap, encoding); +// } +// return postMultipleFile(url, paramMap, null, encoding); +// } + +// /** +// * 向url发送post请求上传多文件 +// * 向url发送post请求上传单文件 +// * @param url 请求url +// * @param paramMap 需要表单提交的参数 +// * @param fileListMap 需要上传的文件 +// * @param encoding 编码 +// * @return 请求返回的数据 +// * @throws IOException 读写异常 +// */ +// public static String postMultipleFile(String url, Map paramMap, Map> fileListMap, +// String encoding) throws IOException { +// return postFileBody(url, paramMap, fileListMap, encoding, new DataParse() { +// @Override +// public String parseData(HttpEntity httpEntity, String encoding) throws IOException { +// return EntityUtils.toString(httpEntity, encoding); +// } +// }); +// } + +// /** +// * 向url发送post请求上传多文件 +// * 向url发送post请求上传单文件 +// * @param url 请求url +// * @param paramMap 需要表单提交的参数 +// * @param fileListMap 需要上传的文件 +// * @param encoding 编码 +// * @return 请求返回的数据 +// * @throws IOException 读写异常 +// */ +// private static T postFileBody(String url, Map paramMap, Map> fileListMap, +// String encoding, DataParse dataParse) throws IOException { +// log.debug("http 请求 url: {} , 请求参数: {}", url, appendUrl("", paramMap).replace("?", "")); +// encoding = encoding == null ? UTF8 : encoding; +// T result = null; +// CloseableHttpClient httpClient = HttpClientBuilder.create().build(); +// HttpPost httpPost = new HttpPost(url); +// MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); +// +// ContentType contentType = ContentType.create("text/plain", Charset.forName(encoding)); +// if (null != paramMap) { +// for (Map.Entry entry : paramMap.entrySet()) { +// entityBuilder.addTextBody(entry.getKey(), entry.getValue(), contentType); +// } +// } +// +// if (null != fileListMap) { +// for (Map.Entry> entry : fileListMap.entrySet()) { +// String key = entry.getKey(); +// List fileList = entry.getValue(); +// for (File file : fileList) { +// FileBody fileBody = new FileBody(file); +// entityBuilder.addPart(key, fileBody); +// } +// } +// } +// +// HttpEntity entity = entityBuilder.build(); +// httpPost.setEntity(entity); +// CloseableHttpResponse response = sendRequestAndGetResult(url, httpClient, httpPost); +// if (null != response) { +// result = dataParse.parseData(response.getEntity(), encoding); +// log.debug("http 请求结果: {}", result); +// } +// try { +// if (null != response) { +// response.close(); +// } +// } catch (IOException ex) { +// log.error(ex.getMessage(), ex); +// } +// return result; +// } + + + /** + * 公共数据解析接口 + * @param + */ + private interface DataParse { + /** + * 解析返回数据 + * @param httpEntity 返回实体 + * @param encoding 编码 + * @return 实际解析返回内容 + * @throws IOException io异常 + */ + T parseData(HttpEntity httpEntity, String encoding) throws IOException; + + } + + /** + * 将url与map拼接成HTTP查询字符串 + * @param url 请求url + * @param paramMap 需要拼装的map + * @return 拼装好的url + */ + public static String appendUrl(String url, Map paramMap) throws UnsupportedEncodingException { + if (paramMap == null) { + return url; + } + StringBuffer paramStringBuffer = new StringBuffer(); + Iterator> mapIterator = paramMap.entrySet().iterator(); + while (mapIterator.hasNext()) { + Map.Entry next = mapIterator.next(); + paramStringBuffer.append(next.getKey()).append("=").append(URLEncoder.encode(next.getValue(), ConstantUtils.UTF8)).append("&"); + } + String paramStr = paramStringBuffer.toString(); +// String paramStr = mapJoinNotEncode(paramMap); + if (paramStr != null && !"".equals(paramStr)) { + if (url.indexOf("?") > 0) { + if (url.endsWith("&")) { + url += paramStr.substring(0, paramStr.length() - 1); + } else { + url += "&" + paramStr.substring(0, paramStr.length() - 1); + } + } else { + url += "?" + paramStr.substring(0, paramStr.length() - 1); + } + } + return url; + } + + /** + * 把二进制写入文件 + * @param bytes + * @param path + * @throws IOException + */ + public static void writeFile(byte[] bytes, String path) throws IOException { + OutputStream os = null; + try { + // 根据绝对路径初始化文件 + File localFile = new File(path); + if (!localFile.exists()) { + boolean newFile = localFile.createNewFile(); + if (!newFile) { + throw new RuntimeException("创建文件异常,路径:" + path); + } + } + // 输出流 + os = new FileOutputStream(localFile); + os.write(bytes); + } finally { + if (os != null) { + os.close(); + } + } + } + +} + diff --git a/src/main/java/com/subsidy/util/IpAddressUtil.java b/src/main/java/com/subsidy/util/IpAddressUtil.java new file mode 100644 index 0000000..b81d8b2 --- /dev/null +++ b/src/main/java/com/subsidy/util/IpAddressUtil.java @@ -0,0 +1,92 @@ +package com.subsidy.util; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; + +public class IpAddressUtil { + + /** + * 返回客户端ip + */ + public static String getIpAddress(HttpServletRequest request) { + String ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) { + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + } + if (ipAddress != null && ipAddress.length() > 15) { + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + return ipAddress; + } + + /** + * @Description:获取客户端外网ip + * @Author:zrt + * @Date:2019/6/13 11:23 + **/ + public static String getPublicIp() { + try { + String path = "http://subsidy.youkehulian.cn/";// 要获得html页面内容的地址 + + URL url = new URL(path);// 创建url对象 + + HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 打开连接 + + conn.setRequestProperty("contentType", "GBK"); // 设置url中文参数编码 + + conn.setConnectTimeout(5 * 1000);// 请求的时间 + + conn.setRequestMethod("GET");// 请求方式 + + InputStream inStream = conn.getInputStream(); + // readLesoSysXML(inStream); + + BufferedReader in = new BufferedReader(new InputStreamReader( + inStream, "GBK")); + StringBuffer buffer = new StringBuffer(); + String line = ""; + // 读取获取到内容的最后一行,写入 + while ((line = in.readLine()) != null) { + buffer.append(line); + } + String str = buffer.toString(); + String ipString1 = str.substring(str.indexOf("[")); + // 获取你的IP是中间的[182.149.82.50]内容 + String ipsString2 = ipString1.substring(ipString1.indexOf("[") + 1, + ipString1.lastIndexOf("]")); + //获取当前IP地址所在地址 + /* String ipsString3=ipString1.substring(ipString1.indexOf(": "),ipString1.lastIndexOf("")); + System.err.println(ipsString3);*/ + + // 返回公网IP值 + return ipsString2; + + } catch (Exception e) { + System.out.println("获取公网IP连接超时"); + return "连接超时"; + } + } +} diff --git a/src/main/java/com/subsidy/util/JwtUtil.java b/src/main/java/com/subsidy/util/JwtUtil.java new file mode 100644 index 0000000..972185b --- /dev/null +++ b/src/main/java/com/subsidy/util/JwtUtil.java @@ -0,0 +1,96 @@ +package com.subsidy.util; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.Claim; + +import java.util.Date; +import java.util.Map; + +/** + *

+ * Token工具 + *

+ * + * @author DengMin + * @since 2021/4/14 + */ +public class JwtUtil { + + private static Long EXPIRE_TIME = 24 * 60 * 60 * 1000L; + + private static String SECRET = "PBKDF2SHA256:64000:18:24:N:GFHZ6Y0PTEUDYCJI3K6SOOXWYEKPOZED:WBWFJMX5DF252E0HR3BF3P/D"; + + /** + * 生成Token + * @param id + * @return + */ + public static String generateToken(Long id, String type) { + Date expireDate = new Date(System.currentTimeMillis() + EXPIRE_TIME); + return JWT.create() + .withClaim("id", id) + .withClaim("type", type) + .withAudience() + .withExpiresAt(expireDate) + .withIssuedAt(new Date()) + .sign(Algorithm.HMAC256(SECRET)); + } + + /** + * 检验token是否正确 + * @param token + * @return + */ + public static boolean verifyToken(String token) { + try { + Algorithm algorithm = Algorithm.HMAC256(SECRET); + JWTVerifier verifier = JWT.require(algorithm).build(); + verifier.verify(token); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * 获取用户自定义Claim集合 + * @param token + * @return + */ + public static Map getClaims(String token) { + Algorithm algorithm = Algorithm.HMAC256(SECRET); + JWTVerifier verifier = JWT.require(algorithm).build(); + Map claims = verifier.verify(token).getClaims(); + return claims; + } + + /** + * 获取过期时间 + * @param token + * @return + */ + public static Date getExpiresAt(String token) { + Algorithm algorithm = Algorithm.HMAC256(SECRET); + return JWT + .require(algorithm) + .build() + .verify(token) + .getExpiresAt(); + } + + /** + * 验证token是否失效 + * @param token + * @return true: 过期, false: 没过期 + */ + public static boolean isExpired(String token) { + try { + final Date expiration = getExpiresAt(token); + return expiration.before(new Date()); + } catch (Exception e) { + return true; + } + } +} diff --git a/src/main/java/com/subsidy/util/Localstorage.java b/src/main/java/com/subsidy/util/Localstorage.java new file mode 100644 index 0000000..44beba2 --- /dev/null +++ b/src/main/java/com/subsidy/util/Localstorage.java @@ -0,0 +1,31 @@ +package com.subsidy.util; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@RestController +public class Localstorage { + private static final ThreadLocal local = ThreadLocal.withInitial(() -> null); + private static ConcurrentHashMap map = new ConcurrentHashMap<>(); + public static void setUser(Object obj, String type) { +// Map map = new HashMap<>(); + map.put("user", obj); + map.put("type", type); + Localstorage.local.set(map); + } + + public static Map getMap() { + return (Map) Localstorage.local.get(); + } + + public static Object getUser() { +// Map map = (Map) Localstorage.local.get(); + return map.get("user"); + } + + public static void remove() { + Localstorage.local.remove(); + } +} diff --git a/src/main/java/com/subsidy/util/MathUtil.java b/src/main/java/com/subsidy/util/MathUtil.java new file mode 100644 index 0000000..79275a8 --- /dev/null +++ b/src/main/java/com/subsidy/util/MathUtil.java @@ -0,0 +1,174 @@ +package com.subsidy.util; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Random; + +public class MathUtil { + + public static String getRandomCode(int randomLength) { + StringBuilder str = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < randomLength; i++) { + str.append(random.nextInt(10)); + } + return str.toString(); + } + + public static String getRandomString(int length) { + StringBuilder val = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < length; ++i) { + String charOrNum = random.nextInt(3) % 3 == 0 ? "num" : "char"; + if ("char".equalsIgnoreCase(charOrNum)) { + int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; + val.append((char) (random.nextInt(26) + temp)); + } else { + val.append(random.nextInt(10)); + } + } + return val.toString(); + } + + //习题/视频 ==> 秒钟向上取整 + public static String ceilSecond(int length) { + return String.valueOf((int) Math.ceil((double) length / 60)); + } + + //习题/视频 ==> 秒钟向下取整 + public static String floorSecond(int length) { + return String.valueOf((int) Math.floor((double) length / 60)); + } + + //视频秒数处理 + public static String vodLength(int i) { + if (i > 60) { + if (i % 60 >= 10) { + return i / 60 + ":" + i % 60; + } else { + return i / 60 + ":0" + i % 60; + } + } else { + if (i % 60 >= 10) { + return "00:" + i; + } else { + return "00:0" + i; + } + } + } + + //文件大小处理 + public static String fileUnit(int i) { + if (i / 1024 > 1024) { + return String.format("%.2f", (double) i / 1024 / 1024) + "M"; + } else { + return String.format("%.2f", (double) i / 1024) + "K"; + } + } + + //单个题目秒数处理 + public static String exerciseLength(int i) { + if (i >= 60 * 60) { + return i / 60 / 60 + "时" + (i - 60 * 60) / 60 + "分" + i % 60 + "秒"; + } else if (i >= 60) { + return i / 60 + "分" + i % 60 + "秒"; + } else { + return i % 60 + "秒"; + } + } + + // 除法取整 + public static String getAvgIndex(BigDecimal counts, BigDecimal total) { + if (BigDecimal.ZERO.equals(total)) { + return "0"; + } else { + return counts.divide(total, RoundingMode.CEILING).stripTrailingZeros().toPlainString(); + } + } + + //百分比 取整 返回字符串 + public static String getPercentAvgIndex(BigDecimal counts, BigDecimal total) { + if (BigDecimal.ZERO.equals(total) || BigDecimal.ZERO.equals(counts)) { + return "0%"; + } else { + return counts.multiply(new BigDecimal(100)).divide(total, RoundingMode.CEILING).stripTrailingZeros().toPlainString() + "%"; + } + } + + //百分比 不带%输出 + public static String getPercentAvgIndexWithPercent(BigDecimal counts, BigDecimal total) { + if (BigDecimal.ZERO.equals(total) || BigDecimal.ZERO.equals(counts)) { + return "0"; + } else { + return counts.multiply(new BigDecimal(100)).divide(total, 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); + } + } + + //百分比 不带%输出 + public static String getPercentAvgIndexCeil(BigDecimal counts, BigDecimal total) { + if (BigDecimal.ZERO.equals(total) || BigDecimal.ZERO.equals(counts)) { + return "0"; + } else { + return counts.multiply(new BigDecimal(100)).divide(total, 2, BigDecimal.ROUND_CEILING).stripTrailingZeros().toPlainString(); + } + } + + + //习题序号生成规则 sid 从数据取出某科目某知识点的最大的序号 + public static String getExeCode(String sid) { + Integer integer = Integer.valueOf(sid.substring(9)); + return sid.substring(0, 9) + (++integer); + } + + // 整型a 整型b a/b 向上取整 + public static Integer intDivCeil(long a, int b) { + return (int) Math.ceil((double) a / b); + } + + // 整型a 整型b a/b 向下取整 + public static Integer intDivFloorPercent(long a, int b) { + return (int) Math.floor((double) a * 100 / b); + } + + public static Integer getRandomNum(Integer i) { + Random random = new Random(); + return random.nextInt(i); + } + +// public static void main(String[] args) { +// for (int i= 1;i<100;i++){ +// System.out.println(getRandomNum(2)); +// } +// } + + public static String secToTime(int time) { + String timeStr ; + int hour; + int minute; + int second; + if (time <= 0) { + return "00:00:00"; + } else { + minute = time / 60; + if (minute < 60) { + second = time % 60; + timeStr = "00:"+unitFormat(minute) + ":" + unitFormat(second); + } else { + hour = minute / 60; + minute = minute % 60; + second = time - hour * 3600 - minute * 60; + timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second); + } + } + return timeStr; + } + public static String unitFormat(int i) { + String retStr = null; + if (i >= 0 && i < 10) { + retStr = "0" + i; + } else { + retStr = "" + i; + } + return retStr; + } +} diff --git a/src/main/java/com/subsidy/util/MongoUtil.java b/src/main/java/com/subsidy/util/MongoUtil.java new file mode 100644 index 0000000..6c53fbc --- /dev/null +++ b/src/main/java/com/subsidy/util/MongoUtil.java @@ -0,0 +1,52 @@ +//package com.subsidy.util; +// +//import lombok.Data; +//import org.springframework.stereotype.Component; +// +//import java.util.List; +//import java.util.regex.Pattern; +// +//@Data +//@Component +//public class MongoUtil { +// public Integer pageSize; +// private Integer currentPage; +// +// +// public void start(Integer currentPage, Integer pageSize, Query query) { +// pageSize = pageSize == 0 ? 10 : pageSize; +// query.limit(pageSize); +// query.skip((currentPage - 1) * pageSize); +// this.pageSize = pageSize; +// this.currentPage = currentPage; +// } +// +// public PageHelper pageHelper(long total, List list) { +// return new PageHelper(this.currentPage, total, this.pageSize, list); +// } +// +// public PageHelper pageHelper(List list) { +// return new PageHelper(this.currentPage, this.pageSize, list); +// } +// +// public PageHelper pageHelper(long currentPage, long total, long pageSize, List list) { +// return new PageHelper(currentPage, total, pageSize, list); +// } +// +// public PageHelper pageHelper(long currentPage, long pageSize, List list) { +// return new PageHelper(currentPage, pageSize, list); +// } +// +// +// /** +// * 用于模糊查询忽略大小写 +// * +// * @param string +// * @return +// */ +// public Pattern getPattern(String string) { +// Pattern pattern = Pattern.compile("^.*" + string + ".*$", Pattern.CASE_INSENSITIVE); +// return pattern; +// } +// +//} diff --git a/src/main/java/com/subsidy/util/MyBeanUtils.java b/src/main/java/com/subsidy/util/MyBeanUtils.java new file mode 100644 index 0000000..919f1fd --- /dev/null +++ b/src/main/java/com/subsidy/util/MyBeanUtils.java @@ -0,0 +1,29 @@ +package com.subsidy.util; + +import org.springframework.beans.BeanWrapper; +import org.springframework.beans.BeanWrapperImpl; + +import java.beans.PropertyDescriptor; +import java.util.HashSet; +import java.util.Set; + +public class MyBeanUtils { + + public static String[] getNullPropertyNames (Object source) { + final BeanWrapper src = new BeanWrapperImpl(source); + PropertyDescriptor[] pds = src.getPropertyDescriptors(); + + Set emptyNames = new HashSet<>(); + for(PropertyDescriptor pd : pds) { + Object srcValue = src.getPropertyValue(pd.getName()); + // 此处判断可根据需求修改 + if (srcValue == null) { + emptyNames.add(pd.getName()); + } + } + String[] result = new String[emptyNames.size()]; + return emptyNames.toArray(result); + } + + +} diff --git a/src/main/java/com/subsidy/util/MyStringUtils.java b/src/main/java/com/subsidy/util/MyStringUtils.java new file mode 100644 index 0000000..4cbbc16 --- /dev/null +++ b/src/main/java/com/subsidy/util/MyStringUtils.java @@ -0,0 +1,30 @@ +package com.subsidy.util; + +import java.util.List; + +public class MyStringUtils { + + + /** + * 把集合改成字符串 去掉逗号 + */ + public static String changeListToString(List list) { + + StringBuffer buffer = new StringBuffer(); + if (list.size() > 0) { + int i= 0 ; + for (String s : list) { + buffer.append(s); + if (i != list.size()-1){ + buffer.append(","); + } + } + } + return buffer.toString(); + } + + + + + +} diff --git a/src/main/java/com/subsidy/util/OSSUtils.java b/src/main/java/com/subsidy/util/OSSUtils.java new file mode 100644 index 0000000..e328952 --- /dev/null +++ b/src/main/java/com/subsidy/util/OSSUtils.java @@ -0,0 +1,121 @@ +package com.subsidy.util; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.date.DateTime; +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.UUID; + +public class OSSUtils { + + // @Value("${aliyun.oss.accessKeyId}") + private static String accessKeyId = "LTAI5tLUBG4B6QxhHrhddc7p"; + + // @Value("${aliyun.oss.accessKeySecret}") + private static String secretAccessKey = "eber38QGHZixTQ6bFfrd80kbg67jIP"; + + // @Value("${aliyun.oss.endpoint}") + private static String endPoint = "oss-cn-beijing.aliyuncs.com"; + + // @Value("${aliyun.oss.bucketName}") +// private static String bucketName = "shixischool"; + private static String bucketName = "ykhl-bigger"; + + public static String uploadOneFile(String file) throws IOException { + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey); + + // 设置文件名 + String fileName = new DateTime().toString("yyyy-MM-dd") + + UUID.randomUUID().toString() + ".jpg"; + + // 获取文件后缀名 +// int originalFilenameStartIndex = file.indexOf('/'); +// int originalFilenameEndIndex = file.indexOf(';'); +// String originalFilename = file.substring(originalFilenameStartIndex+1,originalFilenameEndIndex); + + // 获取base64的文件 +// file = file.split(",")[1]; + + byte[] bytesFile = Base64.decode(file); + try { + // 创建PutObject请求。 + InputStream inputStream = new ByteArrayInputStream(bytesFile); + ossClient.putObject(bucketName, fileName, inputStream); + + String url = "http://" + bucketName + "." + endPoint + "/" + fileName+"?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg"; + // System.out.println(url); + return url; + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + } + + + public static String image2Base64(String imgUrl) { + URL url = null; + InputStream is = null; + ByteArrayOutputStream outStream = null; + HttpURLConnection httpUrl = null; + + try { + url = new URL(imgUrl); + httpUrl = (HttpURLConnection) url.openConnection(); + httpUrl.connect(); + httpUrl.getInputStream(); + is = httpUrl.getInputStream(); + outStream = new ByteArrayOutputStream(); + // 创建一个Buffer字符串 + byte[] buffer = new byte[1024]; + // 每次读取的字符串长度,如果为-1,代表全部读取完毕 + int len = 0; + // 使用一个输入流从buffer里把数据读取出来 + while ((len = is.read(buffer)) != -1) { + // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 + outStream.write(buffer, 0, len); + } + // 对字节数组Base64编码 + return Base64Util.encode(outStream.toByteArray()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outStream != null) { + try { + outStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (httpUrl != null) { + httpUrl.disconnect(); + } + } + return imgUrl; + } + + public static void main(String[] args) { +// System.out.println(image2Base64("https://shixischool.oss-cn-beijing.aliyuncs.com/2022-12-219df5b721-99b7-48c4-916e-e474a4eca946.jpg?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg")); + System.out.println(image2Base64("http://ykhl-bigger.oss-cn-beijing.aliyuncs.com/2023-02-1618cb936b-4825-429c-9fdd-dd9d0de97ed7.jpg?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg")); + } +} diff --git a/src/main/java/com/subsidy/util/PDFUtil.java b/src/main/java/com/subsidy/util/PDFUtil.java new file mode 100644 index 0000000..0f9db34 --- /dev/null +++ b/src/main/java/com/subsidy/util/PDFUtil.java @@ -0,0 +1,169 @@ +package com.subsidy.util; + +import com.itextpdf.text.*; +import com.itextpdf.text.pdf.BaseFont; +import com.itextpdf.text.pdf.PdfPTable; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Date; + +@Slf4j +@Component +public class PDFUtil { + + static BaseFont baseFont; + + { + try { + baseFont = BaseFont.createFont("https://zhongzhi-cms.oss-cn-shanghai.aliyuncs.com/STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void tableStyle(PdfPTable table, int[] cellsWidth) throws DocumentException { + table.setWidths(cellsWidth); + table.setWidthPercentage(100); + table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); + table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); + table.getDefaultCell().setFixedHeight(30); + table.getDefaultCell().setBackgroundColor(BaseColor.BLUE); + table.getDefaultCell().setPadding(0); + table.getDefaultCell().setBorderWidth(0); + } + + /** + * 流化下载 + * + * @param bytes + * @param filename + */ + public static void renderPdf(final byte[] bytes, final String filename, String type) { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletResponse response = servletRequestAttributes.getResponse(); + initResponseHeader(response, "application/" + type); + setFileDownloadHeader(response, filename, "." + type); + if (null != bytes) { + try { + response.getOutputStream().write(bytes); + response.getOutputStream().flush(); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } + } + } + + /** + * 分析并设置contentType与headers. + */ + private static HttpServletResponse initResponseHeader(HttpServletResponse response, final String contentType, final String... headers) { + // 分析headers参数 + String encoding = "utf-8"; + boolean noCache = true; + for (String header : headers) { + String headerName = StringUtils.substringBefore(header, ":"); + String headerValue = StringUtils.substringAfter(header, ":"); + if (StringUtils.equalsIgnoreCase(headerName, "utf-8")) { + encoding = headerValue; + } else if (StringUtils.equalsIgnoreCase(headerName, "no-cache")) { + noCache = Boolean.parseBoolean(headerValue); + } else { + throw new IllegalArgumentException(headerName + "不是一个合法的header类型"); + } + } + // 设置headers参数 + String fullContentType = contentType + ";charset=" + encoding; + response.setContentType(fullContentType); + if (noCache) { + // Http 1.0 header + response.setDateHeader("Expires", 0); + response.addHeader("Pragma", "no-cache"); + // Http 1.1 header + response.setHeader("Cache-Control", "no-cache"); + } + return response; + } + + /** + * 设置让浏览器弹出下载对话框的Header. + * + * @param + */ + public static void setFileDownloadHeader(HttpServletResponse response, String fileName, String fileType) { + try { + // 中文文件名支持 + String encodedfileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + fileType + "\""); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + public static String idCard2Gender(String idCard) { + int genderDigit = Integer.parseInt(idCard.substring(16, 17)); + return (genderDigit % 2 == 0) ? "女" : "男"; + } + + public static Integer birthDate2Age(String birthDateStr){ + if (birthDateStr == null || birthDateStr.trim().isEmpty()) { + return -1; + } + + try { + // 定义日期格式(yyyy/MM/dd) + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + // 解析出生日期 + LocalDate birthDate = LocalDate.parse(birthDateStr, formatter); + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + + // 计算基础年龄 + int age = currentDate.getYear() - birthDate.getYear(); + + // 校验月份和日期,调整年龄 + if (currentDate.getMonthValue() < birthDate.getMonthValue()) { + age--; + } else if (currentDate.getMonthValue() == birthDate.getMonthValue()) { + if (currentDate.getDayOfMonth() < birthDate.getDayOfMonth()) { + age--; + } + } + + // 防止出生日期异常(如未来日期) + return age < 0 ? -1 : age; + } catch (DateTimeParseException e) { + // 日期格式错误(如 "2001/13/03" 或 "2001-01-03") + return -1; + } + } + + public static String idCard2BirthDate(String idCard) { + if (idCard == null || idCard.length() != 18) { + throw new IllegalArgumentException("身份证号码不合法"); + } + + String birthDateStr = idCard.substring(6, 14); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try { + Date birthDate = sdf.parse(birthDateStr); + SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy/MM/dd"); + return outputFormat.format(birthDate); + } catch (Exception e) { + throw new IllegalArgumentException("身份证号码中的出生日期不合法"); + } + } + + +} diff --git a/src/main/java/com/subsidy/util/PageHelper.java b/src/main/java/com/subsidy/util/PageHelper.java new file mode 100644 index 0000000..bf37716 --- /dev/null +++ b/src/main/java/com/subsidy/util/PageHelper.java @@ -0,0 +1,30 @@ +package com.subsidy.util; + +import lombok.Data; +import org.apache.poi.ss.formula.functions.T; + +import java.util.List; + +@Data +public class PageHelper { + + private long currentPage; + private long total; + private long pageSize; + private List list; + + public PageHelper(long pageNum, long total, long pageSize, List list) { + this.currentPage = pageNum; + this.total = total; + this.pageSize = pageSize; + this.list = list; + } + + public PageHelper(long pageNum, long pageSize, List list) { + this.currentPage = pageNum; + this.pageSize = pageSize; + this.list = list; + } + + +} diff --git a/src/main/java/com/subsidy/util/PolyvUtils.java b/src/main/java/com/subsidy/util/PolyvUtils.java new file mode 100644 index 0000000..111a943 --- /dev/null +++ b/src/main/java/com/subsidy/util/PolyvUtils.java @@ -0,0 +1,31 @@ +package com.subsidy.util; + +import net.polyv.live.v1.util.LiveSignUtil; + +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; + +public class PolyvUtils { + + /** + * 学生端--生成保利威视直播观看地址 + */ + public static String liveSign(String userId, String channelId){ + + //根据实际情况设置userid + String ts = String.valueOf(System.currentTimeMillis()); + String url = "https://live.polyv.cn/watch/"+channelId; + String signText = "03sqxr97fo"+ userId +"03sqxr97fo"+ts; + try { + String sign = LiveSignUtil.md5Hex(signText); + url += "?userid="+userId+"&ts="+ts+"&sign="+sign; + return url; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/subsidy/util/RandomUtil.java b/src/main/java/com/subsidy/util/RandomUtil.java new file mode 100644 index 0000000..50d4a3e --- /dev/null +++ b/src/main/java/com/subsidy/util/RandomUtil.java @@ -0,0 +1,83 @@ +package com.subsidy.util; + +import cn.hutool.core.lang.UUID; + +import java.util.Date; +import java.util.Random; + +public class RandomUtil { + + public static int getCode() { + return (int)((Math.random() * 9 + 1) * 100000); + } + + public static String randomPass(Integer count) { + StringBuffer stringBuffer = new StringBuffer(); + Random random = new Random(new Date().getTime()); + String flag = type[random.nextInt(type.length)]; + int length = count; + for (int i = 0; i < length; i++) { + switch (flag) { + case "word": + stringBuffer.append(word[random.nextInt(word.length)]); + break; + case "num": + stringBuffer.append(num[random.nextInt(num.length)]); + break; + case "symbol": + stringBuffer.append(symbol[random.nextInt(symbol.length)]); + break; + default: + break; + } + flag = type[random.nextInt(type.length)]; + } + return stringBuffer.toString(); + } + + + public static String getRandomCode(int randomLength) { + StringBuilder str = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < randomLength; i++) { + str.append(random.nextInt(10)); + } + return str.toString(); + } + + + /** + * 随机生成订单号 + */ + public static String randomOrderNumber(){ + return UUID.fastUUID().toString().replace("-","").substring(0,29); + } + + public static void main(String[] args) { + System.out.println(randomOrderNumber()); + } + + + public final static String[] type = { + "word", "num", "symbol" + }; + + public final static String[] word = { + "a", "b", "c", "d", "e", "f", "g", + "h", "j", "k", "m", "n", + "p", "q", "r", "s", "t", + "u", "v", "w", "x", "y", "z", + "A", "B", "C", "D", "E", "F", "G", + "H", "J", "K", "M", "N", + "P", "Q", "R", "S", "T", + "U", "V", "W", "X", "Y", "Z" + }; + + public final static String[] num = { + "1", "2", "3", "4", "5", "6", "7", "8", "9" + }; + + public final static String[] symbol = { + "!", "@", "#", "$", "%", "&" + }; +} diff --git a/src/main/java/com/subsidy/util/RedisUtil.java b/src/main/java/com/subsidy/util/RedisUtil.java new file mode 100644 index 0000000..0b7e9dc --- /dev/null +++ b/src/main/java/com/subsidy/util/RedisUtil.java @@ -0,0 +1,620 @@ +package com.subsidy.util; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.BoundListOperations; +import org.springframework.data.redis.core.Cursor; +import org.springframework.data.redis.core.RedisCallback; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ScanOptions; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + *

+ * redisTemplate封装 + *

+ * + * @author DengMin + * @since 2020/12/17 + */ + +@Component +public class RedisUtil { + + @Autowired + private RedisTemplate redisTemplate; + + public RedisUtil(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key,long time){ + try { + if(time>0){ + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key){ + return redisTemplate.getExpire(key,TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key){ + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String ... key){ + if(key!=null&&key.length>0){ + if(key.length==1){ + redisTemplate.delete(key[0]); + }else{ + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + + /** + * 删除缓存 + * @param key 集合数据 + */ + public void del(Set key) { + if (key != null && key.size() > 0) { + redisTemplate.delete(key); + } + } + + //============================String============================= + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key){ + return key==null?null:redisTemplate.opsForValue().get(key); + } + + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key,Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key,Object value,long time){ + try { + if(time>0){ + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + }else{ + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return + */ + public long incr(String key, long delta){ + if(delta<0){ + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * @param key 键 + * @param delta 要减少几(小于0) + * @return + */ + public long decr(String key, long delta){ + if(delta<0){ + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + //================================Map================================= + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key,String item){ + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key){ + return redisTemplate.opsForHash().entries(key); + } + + /** + * HashSet + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map){ + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time){ + try { + redisTemplate.opsForHash().putAll(key, map); + if(time>0){ + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key,String item,Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key,String item,Object value,long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if(time>0){ + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item){ + redisTemplate.opsForHash().delete(key,item); + } + + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item){ + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item,double by){ + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item,double by){ + return redisTemplate.opsForHash().increment(key, item,-by); + } + + //============================set============================= + /** + * 根据key获取Set中的所有值 + * @param key 键 + * @return + */ + public Set sGet(String key){ + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key,Object value){ + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object...values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 将set数据放入缓存 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key,long time,Object...values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if(time>0) { + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 获取set缓存的长度 + * @param key 键 + * @return + */ + public long sGetSetSize(String key){ + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object ...values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + //===============================list================================= + + /** + * 获取list缓存的内容 + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List lGet(String key, long start, long end){ + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 获取list缓存的长度 + * @param key 键 + * @return + */ + public long lGetListSize(String key){ + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key,long index){ + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index,Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key,long count,Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + ///** + // * 模糊查询获取key值 + // * @param pattern + // * @return + // */ + public Set keys(String pattern){ + return redisTemplate.keys(pattern); + } + + /** + * 模糊查询 + * @param pattern + * @return + */ + public Set scan(String pattern) { + return redisTemplate.execute((RedisCallback>) redisConnection -> { + Set keys = new HashSet<>(); + Cursor cursor = redisConnection.scan(new ScanOptions.ScanOptionsBuilder().match(pattern).count(Integer.MAX_VALUE).build()); + while (cursor.hasNext()) { + keys.add(new String(cursor.next())); + } + return keys; + }); + } + + /** + * 使用Redis的消息队列 + * @param channel + * @param message 消息内容 + */ + public void convertAndSend(String channel, Object message){ + redisTemplate.convertAndSend(channel,message); + } + + + //=========BoundListOperations 用法 start============ + + + /** + * 根据起始结束序号遍历Redis中的list + * @param listKey + * @param start 起始序号 + * @param end 结束序号 + * @return + */ + public List rangeList(String listKey, long start, long end) { + //绑定操作 + BoundListOperations boundValueOperations = redisTemplate.boundListOps(listKey); + //查询数据 + return boundValueOperations.range(start, end); + } + /** + * 弹出右边的值 --- 并且移除这个值 + * @param listKey + */ + public Object rifhtPop(String listKey){ + //绑定操作 + BoundListOperations boundValueOperations = redisTemplate.boundListOps(listKey); + return boundValueOperations.rightPop(); + } + + //=========BoundListOperations 用法 End============ + +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/util/RenSheJuConstant.java b/src/main/java/com/subsidy/util/RenSheJuConstant.java new file mode 100644 index 0000000..8e16e6d --- /dev/null +++ b/src/main/java/com/subsidy/util/RenSheJuConstant.java @@ -0,0 +1,69 @@ +package com.subsidy.util; + +public class RenSheJuConstant { + + /** + * POST-2:班级基本信息信息采集接口 + */ + public static final String POST_3 = "POST3_班级基本信息"; + + /** + * POST-3:学时信息采集接口 + */ + public static final String POST_4 = "POST4_学时信息"; + + /** + * POST-4:考试信息采集接口 + */ + public static final String POST_5 = "POST5_考试信息"; + + /** + * POST-5:答疑辅导采集接口 + */ + public static final String POST_6 = "POST6_答疑辅导"; + + /** + * POST-6 班级活跃度/实名认证照片信息采集接口 + */ + public static final String POST_7 = "POST7_实名认证/活跃度"; + + /** + * POST-7 获取培训待绑定的(班级编号,项目编号)列表 + */ +// public static final String POST_7 = "POST_7_getClassCodeByPrivateKey"; + + /** + * POST-8 上下游班级数据绑定接口 + */ + public static final String POST_8 = "POST8_待绑定的班级"; + + /** + * POST-9 获取推送失败班级列表 + */ + public static final String POST_9 = "POST_9_getErrorClass"; + + /** + * POST-10 清除推送失败班级缓存 + */ + public static final String POST_10 = "POST_10_clear"; + + /** + * 调取失败 + */ + public static final String API_ERROR = "调取失败"; + + /** + * 当天没数据 + */ + public static final String NO_DATA = "NO_DATA"; + + /** + * 推送失败 + */ + public static final String PUSH_FAIL = "推送失败"; + + /** + * 推送成功 + */ + public static final String PUSH_SUCCESS = "推送成功"; +} diff --git a/src/main/java/com/subsidy/util/ResultMode.java b/src/main/java/com/subsidy/util/ResultMode.java new file mode 100644 index 0000000..91c758b --- /dev/null +++ b/src/main/java/com/subsidy/util/ResultMode.java @@ -0,0 +1,56 @@ +package com.subsidy.util; + +public class ResultMode { + + /** + * 成功:true,失败:false + */ + private boolean success; + + /** + * 返回编码 + */ + private int resultCode; + + /** + * 返回消息 + */ + private String msg; + + /** + * 结果数据 + */ + private Object data; + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public int getResultCode() { + return resultCode; + } + + public void setResultCode(int resultCode) { + this.resultCode = resultCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/src/main/java/com/subsidy/util/SMSUtils.java b/src/main/java/com/subsidy/util/SMSUtils.java new file mode 100644 index 0000000..1097f6b --- /dev/null +++ b/src/main/java/com/subsidy/util/SMSUtils.java @@ -0,0 +1,201 @@ +package com.subsidy.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.CommonRequest; +import com.aliyuncs.CommonResponse; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.subsidy.common.configure.AliyunSmsProperties; +import com.subsidy.common.exception.HttpException; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 短信发送工具类 + */ + +@Component +public class SMSUtils { + + + + @Autowired + private AliyunSmsProperties aliyunSmsProperties; + + public SendSmsResponse send(String phone, String code) { + try { + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + + //初始化acsClient,暂不支持region化 + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunSmsProperties.getAccessKeyId(), aliyunSmsProperties.getAccessKeySecret()); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", aliyunSmsProperties.getProduct(), aliyunSmsProperties.getDomain()); + IAcsClient acsClient = new DefaultAcsClient(profile); + + //组装请求对象-具体描述见控制台-文档部分内容 + SendSmsRequest request = new SendSmsRequest(); + //必填:待发送手机号 + request.setPhoneNumbers(phone); + //必填:短信签名-可在短信控制台中找到 + request.setSignName("有课互联"); + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode("SMS_190945394"); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + request.setTemplateParam("{\"code\":\""+ code +"\"}"); + + //hint 此处可能会抛出异常,注意catch + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + if(sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + return sendSmsResponse; + } + + throw new Exception(sendSmsResponse.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + throw new HttpException(70011); + } + } + + + /** + * 发送验证码短信 + * + * @param templateId 短信模板id + * @param telephone 手机号 + * @return + */ + public static String sendVerifySMS(String templateId, String telephone, String param) { + DefaultProfile profile = DefaultProfile.getProfile(ConstantUtils.REGION_ID, ConstantUtils.ACCESS_KEY_ID, ConstantUtils.SECRET); + IAcsClient client = new DefaultAcsClient(profile); + + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId", ConstantUtils.REGION_ID); + request.putQueryParameter("PhoneNumbers", telephone); + request.putQueryParameter("SignName", ConstantUtils.VERIFY_NAME); + request.putQueryParameter("TemplateCode", templateId); +// if (StringUtils.isEmpty(param)){ +// request.putQueryParameter("TemplateParam","{ \"code\":\""+verifyCode +"\"}"); +// } + request.putQueryParameter("TemplateParam", param); + CommonResponse response = null; + try { + response = client.getCommonResponse(request); + return ConstantUtils.SUCCESS_SEND_OUT; + } catch (Exception e) { + e.printStackTrace(); + return ConstantUtils.FAIL_SEND_OUT; + } + } + + + public String sendWarning(String templateId,String telephone,String param){ + try { + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + + //初始化acsClient,暂不支持region化 + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunSmsProperties.getAccessKeyId(), aliyunSmsProperties.getAccessKeySecret()); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", aliyunSmsProperties.getProduct(), aliyunSmsProperties.getDomain()); + IAcsClient acsClient = new DefaultAcsClient(profile); + + //组装请求对象-具体描述见控制台-文档部分内容 + SendSmsRequest request = new SendSmsRequest(); + //必填:待发送手机号 + request.setPhoneNumbers(telephone); + //必填:短信签名-可在短信控制台中找到 + request.setSignName("有课互联科技"); + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode(templateId); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + request.setTemplateParam("{\"ids\":\""+ param +"\"}"); + + //hint 此处可能会抛出异常,注意catch + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + if(sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + return ConstantUtils.SUCCESS_SEND_OUT; + } + + throw new Exception(sendSmsResponse.getMessage()); + } catch(Exception e) { + e.printStackTrace(); + return ConstantUtils.FAIL_SEND_OUT; + } + } + + /** + * 发送通知短信 + * @param templateId 短信模板id + * @param telephone 手机号 + * @return + */ + public static String sendNoticeSMS(String templateId,String telephone,String param){ + DefaultProfile profile = DefaultProfile.getProfile(ConstantUtils.REGION_ID, ConstantUtils.ACCESS_KEY_ID, ConstantUtils.SECRET); + IAcsClient client = new DefaultAcsClient(profile); + + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId",ConstantUtils.REGION_ID); + request.putQueryParameter("PhoneNumbers",telephone); + request.putQueryParameter("SignName",ConstantUtils.TECH_NAME); + request.putQueryParameter("TemplateCode",templateId); +// if (StringUtils.isEmpty(param)){ +// request.putQueryParameter("TemplateParam","{ \"code\":\""+verifyCode +"\"}"); +// } + request.putQueryParameter("TemplateParam",param); + CommonResponse response = null; + try { + response = client.getCommonResponse(request); + if(response != null) { + JSONObject data = JSON.parseObject(response.getData()); + if(data.get("Code").equals("OK")) { + return ConstantUtils.SUCCESS_SEND_OUT; + } + throw new HttpException(1000, data.get("Message").toString()); + } + return ConstantUtils.FAIL_SEND_OUT; + } catch(Exception e) { + e.printStackTrace(); + return ConstantUtils.FAIL_SEND_OUT; + } + } + + //public static void main(String[] args) { + // String param = "{ \"course\":\""+"语文课"+ "\",\"time\":\""+"2020-01-02" +"\",\"address\":\""+"上海市" +"\"}"; + // sendNoticeSMS("SMS_215336604","15201936167,18201963812",param); + //} + + public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + //拼音小写 + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + //不带声调 + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + + //format.setVCharType(); + //要转换的中文,格式,转换之后的拼音的分隔符,遇到不能转换的是否保留 wo,shi,zhong,guo,ren,,hello + System.out.println(PinyinHelper.toHanYuPinyinString("我是中国人", format, "", false)); + } + + + +} diff --git a/src/main/java/com/subsidy/util/SecretUtils.java b/src/main/java/com/subsidy/util/SecretUtils.java new file mode 100644 index 0000000..46e3976 --- /dev/null +++ b/src/main/java/com/subsidy/util/SecretUtils.java @@ -0,0 +1,159 @@ +package com.subsidy.util; + +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.Arrays; +import java.util.Random; +import java.util.UUID; + +public class SecretUtils { + + /** + * 对用户登录密码进行MD5加密 + * + * @param str + * @return + */ + + public static String getMD5String(String str) { + try { + // 生成一个MD5加密计算摘要 + return DigestUtils.md5Hex(str).toUpperCase(); + // MessageDigest md = MessageDigest.getInstance("MD5"); + // 计算md5函数 +// md.update(str.getBytes("utf-8")); + // digest()最后确定返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 + // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 + //一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方) +// byte[] digest = md.digest(str.getBytes("utf-8")); +// return new BigInteger(1, digest).toString(16); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 对字符串进行SHA加密 + * + * @param + */ + public static String getSHAString(String str) { + try { + MessageDigest sha = MessageDigest.getInstance("SHA-1"); + + byte[] byteArray = str.getBytes(StandardCharsets.UTF_8); + byte[] md5Bytes = sha.digest(byteArray); + StringBuffer hexValue = new StringBuffer(); + for (int i = 0; i < md5Bytes.length; i++) { + int val = ((int) md5Bytes[i]) & 0xff; + if (val < 16) { + hexValue.append("0"); + } + hexValue.append(Integer.toHexString(val)); + } + + return hexValue.toString(); + } catch (Exception e) { + return null; + } + + } + + /** + * Q学友SHA加密 + * @param arr + * @return + */ + public static String gen(String... arr) { + if (StringUtils.isAnyEmpty(arr)) { + throw new IllegalArgumentException("非法请求参数,有部分参数为空 : " + Arrays.toString(arr)); + } else { + Arrays.sort(arr); + StringBuilder sb = new StringBuilder(); + String[] var2 = arr; + int var3 = arr.length; + + for (int var4 = 0; var4 < var3; ++var4) { + String a = var2[var4]; + sb.append(a); + } + + return DigestUtils.sha1Hex(sb.toString()); + } + } + + public static String getNonce(int length) { + String val = ""; + Random random = new Random(); + //参数length,表示生成几位随机数 + for (int i = 0; i < length; i++) { + val += String.valueOf(random.nextInt(10)); + } + return val; + } + + private static byte[] md5(String s) + { + MessageDigest algorithm; + try + { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(s.getBytes(StandardCharsets.UTF_8)); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } + catch (Exception e) + { + + } + return null; + } + + private static final String toHex(byte[] hash) + { + if (hash == null) + { + return null; + } + StringBuffer buf = new StringBuffer(hash.length * 2); + int i; + + for (i = 0; i < hash.length; i++) + { + if ((hash[i] & 0xff) < 0x10) + { + buf.append("0"); + } + buf.append(Long.toString(hash[i] & 0xff, 16)); + } + return buf.toString(); + } + + public static String hash(String s) + { + try + { + return new String(toHex(md5(s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + return s; + } + } + + + + + public static void main(String[] args) { + String uuid = UUID.randomUUID().toString(); + System.out.println(uuid.replace("-","")); +// System.out.println(hash(uuid+"ixihs")); +// System.out.println(System.currentTimeMillis()); + } +} \ No newline at end of file diff --git a/src/main/java/com/subsidy/util/ShehuihuaConstant.java b/src/main/java/com/subsidy/util/ShehuihuaConstant.java new file mode 100644 index 0000000..00797cb --- /dev/null +++ b/src/main/java/com/subsidy/util/ShehuihuaConstant.java @@ -0,0 +1,66 @@ +package com.subsidy.util; + +public class ShehuihuaConstant { + + + /** + * 获取培训正在进行中的(班级编号,项目编号)列表 + */ + public static final String POST_2 = "Shehuihua_2_getClassCodeByPrivateKey"; + + /** + * POST-3:班级基本信息信息采集接口 + */ + public static final String POST_3 = "Shehuihua_3_uploadClass"; + + /** + * POST-4:学时信息采集接口 + */ + public static final String POST_4 = "Shehuihua_4_classHourBehavior"; + + /** + * POST-5:考试信息采集接口 + */ + public static final String POST_5 = "Shehuihua_5_uploadChapterBehavior"; + + + /** + * POST-6:答疑辅导采集接口 + */ + public static final String POST_6 = "Shehuihua_6_uploadClassAnswerQuestionBehavior"; + + /** + * POST-7 班级活跃度/实名认证照片信息采集接口 + */ + public static final String POST_7 = "Shehuihua_7_import/downstream/social/uploadImage"; + + /** + * POST-8 获取推送失败班级列表 + */ + public static final String POST_8 = "Shehuihua_8_getErrorClass"; + + /** + * POST-9 清除推送失败班级缓存 + */ + public static final String POST_9 = "Shehuihua_9_clear"; + + /** + * 调取失败 + */ + public static final String API_ERROR = "调取失败"; + + /** + * 当天没数据 + */ + public static final String NO_DATA = "NO_DATA"; + + /** + * 推送失败 + */ + public static final String PUSH_FAIL = "推送失败"; + + /** + * 推送成功 + */ + public static final String PUSH_SUCCESS = "推送成功"; +} diff --git a/src/main/java/com/subsidy/util/Signature.java b/src/main/java/com/subsidy/util/Signature.java new file mode 100644 index 0000000..c96dbbc --- /dev/null +++ b/src/main/java/com/subsidy/util/Signature.java @@ -0,0 +1,85 @@ +package com.subsidy.util; + +import sun.misc.BASE64Encoder; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; + +/** + * @author: tuyp + * @create: 2020-07-29 12:42 + */ +public class Signature { + + private String secretId; + private String secretKey; + private long currentTime; + private int random; + private int signValidDuration; + private int classId; + + private static final String HMAC_ALGORITHM = "HmacSHA1"; + private static final String CONTENT_CHARSET = "UTF-8"; + + public static byte[] byteMerger(byte[] byte1, byte[] byte2) { + byte[] byte3 = new byte[byte1.length + byte2.length]; + System.arraycopy(byte1, 0, byte3, 0, byte1.length); + System.arraycopy(byte2, 0, byte3, byte1.length, byte2.length); + return byte3; + } + + public String getUploadSignature() throws Exception { + String strSign = ""; + String contextStr = ""; + + long endTime = (currentTime + signValidDuration); + contextStr += "secretId=" + java.net.URLEncoder.encode(secretId, "utf8"); + contextStr += "¤tTimeStamp=" + currentTime; + contextStr += "&expireTime=" + endTime; + contextStr += "&random=" + random; + contextStr += "&classId=" + classId; + + try { + Mac mac = Mac.getInstance(HMAC_ALGORITHM); + SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes(CONTENT_CHARSET), mac.getAlgorithm()); + mac.init(secretKey); + + byte[] hash = mac.doFinal(contextStr.getBytes(CONTENT_CHARSET)); + byte[] sigBuf = byteMerger(hash, contextStr.getBytes(StandardCharsets.UTF_8)); + strSign = base64Encode(sigBuf); + strSign = strSign.replace(" ", "").replace("\n", "").replace("\r", ""); + } catch (Exception e) { + throw e; + } + return strSign; + } + + private String base64Encode(byte[] buffer) { + BASE64Encoder encoder = new BASE64Encoder(); + return encoder.encode(buffer); + } + + public void setSecretId(String secretId) { + this.secretId = secretId; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + + public void setCurrentTime(long currentTime) { + this.currentTime = currentTime; + } + + public void setRandom(int random) { + this.random = random; + } + + public void setSignValidDuration(int signValidDuration) { + this.signValidDuration = signValidDuration; + } + + public void setClassId(int classId){this.classId = classId;} + +} diff --git a/src/main/java/com/subsidy/util/TestMain.java b/src/main/java/com/subsidy/util/TestMain.java new file mode 100644 index 0000000..50f955c --- /dev/null +++ b/src/main/java/com/subsidy/util/TestMain.java @@ -0,0 +1,124 @@ +package com.subsidy.util; + +import org.apache.commons.codec.binary.Base64; + +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.security.MessageDigest; +import java.util.Random; + +public class TestMain { + + + + /** + * 对字节数组字符串进行Base64解码并生成图片 + * @param imgStr 图片数据 + * @param imgFilePath 保存图片全路径地址 + * @return + */ + public static boolean generateImage(String imgStr,String imgFilePath){ + // + if (imgStr == null) //图像数据为空 + { + return false; + } + try + { + //Base64解码 + byte[] b = Base64.decodeBase64(imgStr); + for(int i=0;i { +// System.out.println("thread1"); +// }); +// Thread thread2 = new Thread(() -> { +// System.out.println("thread2"); +// }); +// Thread thread3 = new Thread(() -> { +// System.out.println("thread3"); +// }); +// thread1.start(); +// thread1.join(); +// thread2.start(); +// thread2.join(); +// thread3.start(); +// thread3.join(); + + } + + public static String encrypt(String string) { + + String encryptedString = string; + char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + try { + byte[] btInput = string.getBytes(); + MessageDigest mdInst = MessageDigest.getInstance("MD5"); + mdInst.update(btInput); + byte[] md = mdInst.digest(); + int j = md.length; + char[] str = new char[j * 2]; + int k = 0; + for (int i = 0; i < j; i++) { + byte byte0 = md[i]; + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; + str[k++] = hexDigits[byte0 & 0xf]; + } + encryptedString = new String(str); + return encryptedString; + } catch (Exception e) { + e.printStackTrace(); + return encryptedString; + } + } + + /** + * 获取随机字母数字组合 + * + * @param length + * 字符串长度 + * @return + */ + public static String getRandomCharAndNumr(Integer length) { + String str = ""; + Random random = new Random(); + for (int i = 0; i < length; i++) { + boolean b = random.nextBoolean(); + if (b) { // 字符串 + // int choice = random.nextBoolean() ? 65 : 97; 取得65大写字母还是97小写字母 + str += (char) (97 + random.nextInt(26));// 取得大写字母 + } else { // 数字 + str += String.valueOf(random.nextInt(10)); + } + } + return str; + } +} diff --git a/src/main/java/com/subsidy/util/VodUtil.java b/src/main/java/com/subsidy/util/VodUtil.java new file mode 100644 index 0000000..bae5a62 --- /dev/null +++ b/src/main/java/com/subsidy/util/VodUtil.java @@ -0,0 +1,124 @@ +package com.subsidy.util; + +import com.subsidy.common.configure.VODConfig; +import com.subsidy.common.exception.HttpException; +import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.exception.TencentCloudSDKException; +import com.tencentcloudapi.common.profile.ClientProfile; +import com.tencentcloudapi.common.profile.HttpProfile; +import com.tencentcloudapi.vod.v20180717.VodClient; +import com.tencentcloudapi.vod.v20180717.models.DeleteMediaRequest; +import com.tencentcloudapi.vod.v20180717.models.DescribeCDNUsageDataRequest; +import com.tencentcloudapi.vod.v20180717.models.DescribeCDNUsageDataResponse; +import com.tencentcloudapi.vod.v20180717.models.MediaProcessTaskInput; +import com.tencentcloudapi.vod.v20180717.models.ProcessMediaRequest; +import com.tencentcloudapi.vod.v20180717.models.ProcessMediaResponse; +import com.tencentcloudapi.vod.v20180717.models.StatDataItem; +import com.tencentcloudapi.vod.v20180717.models.TranscodeTaskInput; +import org.springframework.stereotype.Component; + +/** + *

+ * 腾讯云 - 云点播API + *

+ * + * @author DengMin + * @since 2022/8/1 + */ +@Component +public class VodUtil { + + private static String endpoint = "vod.tencentcloudapi.com"; + + /** + * 根据视频模版进行转码 + * @param vodCode + * @return + */ + public static ProcessMediaResponse processMedia(VODConfig vodConfig, String vodCode) { + try { + //上传后直接转码 + Credential cred = new Credential(vodConfig.getSecretId(), vodConfig.getSecretKey()); + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint(endpoint); + + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + + VodClient client = new VodClient(cred, "", clientProfile); + + ProcessMediaRequest processMediaRequest = new ProcessMediaRequest(); + MediaProcessTaskInput mediaProcessTaskInput1 = new MediaProcessTaskInput(); + TranscodeTaskInput[] transcodeTaskInputs1 = new TranscodeTaskInput[1]; + TranscodeTaskInput transcodeTaskInput1 = new TranscodeTaskInput(); + transcodeTaskInput1.setDefinition(ConstantUtils.TEMPLATE_VOD); + transcodeTaskInputs1[0] = transcodeTaskInput1; + mediaProcessTaskInput1.setTranscodeTaskSet(transcodeTaskInputs1); + processMediaRequest.setMediaProcessTask(mediaProcessTaskInput1); + processMediaRequest.setFileId(vodCode); + return client.ProcessMedia(processMediaRequest); + } catch (Exception ex) { + ex.printStackTrace(); + throw new HttpException(50001); + } + } + + /** + * 删除腾讯云上原视频 + * @param vodCode + */ + public static void deleteMedia(VODConfig vodConfig, String vodCode) { + try { + //删除原视频 + Credential cred = new Credential(vodConfig.getSecretId(), vodConfig.getSecretKey()); + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint(endpoint); + + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + + VodClient client = new VodClient(cred, "", clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + DeleteMediaRequest req = new DeleteMediaRequest(); + req.setFileId(vodCode); + // 返回的resp是一个DeleteMediaResponse的实例,与请求对象对应 + client.DeleteMedia(req); + } catch (TencentCloudSDKException e) { + throw new HttpException(99999, e.getMessage()); + } + } + + /** + * 云点播域名的CDN统计数据 + * @param vodConfig + * @param DataType + * @param startTime + * @param endTime + * @return + */ + public static StatDataItem[] DescribeCDNStatDetails(VODConfig vodConfig, String DataType, String startTime, String endTime) { + try { + Credential cred = new Credential(vodConfig.getSecretId(), vodConfig.getSecretKey()); + // 实例化一个http选项,可选的,没有特殊需求可以跳过 + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint(endpoint); + // 实例化一个client选项,可选的,没有特殊需求可以跳过 + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + // 实例化要请求产品的client对象,clientProfile是可选的 + VodClient client = new VodClient(cred, "", clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + DescribeCDNUsageDataRequest req = new DescribeCDNUsageDataRequest(); + req.setStartTime(startTime); + req.setEndTime(endTime); + req.setDataType(DataType); + // 返回的resp是一个DescribeCDNUsageDataResponse的实例,与请求对象对应 + DescribeCDNUsageDataResponse resp = client.DescribeCDNUsageData(req); + // 返回的resp是一个DescribeCDNStatDetailsResponse的实例,与请求对象对应 + return resp.getData(); + } catch (TencentCloudSDKException e) { + e.printStackTrace(); + throw new HttpException(99999, e.getMessage()); + } + } +} diff --git a/src/main/java/com/subsidy/util/excel/ExcelColumn.java b/src/main/java/com/subsidy/util/excel/ExcelColumn.java new file mode 100644 index 0000000..4f76159 --- /dev/null +++ b/src/main/java/com/subsidy/util/excel/ExcelColumn.java @@ -0,0 +1,14 @@ +package com.subsidy.util.excel; + + +import java.lang.annotation.*; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ExcelColumn { + + String value() default ""; + + int col() default 1; +} diff --git a/src/main/java/com/subsidy/util/excel/ExcelColumnUtil.java b/src/main/java/com/subsidy/util/excel/ExcelColumnUtil.java new file mode 100644 index 0000000..aa4e3ab --- /dev/null +++ b/src/main/java/com/subsidy/util/excel/ExcelColumnUtil.java @@ -0,0 +1,22 @@ +package com.subsidy.util.excel; + + +import java.lang.annotation.*; + +/** + *

+ * excel 字段 + *

+ * + * @author DengMin + * @date Created in 2020/08/28 + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ExcelColumnUtil { + + String value() default ""; + + int col() default 0; +} diff --git a/src/main/java/com/subsidy/util/excel/ExcelUtil.java b/src/main/java/com/subsidy/util/excel/ExcelUtil.java new file mode 100644 index 0000000..e46b335 --- /dev/null +++ b/src/main/java/com/subsidy/util/excel/ExcelUtil.java @@ -0,0 +1,506 @@ +package com.subsidy.util.excel; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.CharUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.util.CellRangeAddress; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.streaming.SXSSFCell; +import org.apache.poi.xssf.streaming.SXSSFRow; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * Excel工具 + * + * @author DengMin + * @date 2019/08/27 13:57 + **/ +@Slf4j +public class ExcelUtil { + + private final static String EXCEL2003 = "xls"; + + private final static String EXCEL2007 = "xlsx"; + + /** + * 导入excel文件 + * + * @param cls + * @param file + * @param + * @return + */ + public static List readExcel(Class cls, MultipartFile file) { + String fileName = file.getOriginalFilename(); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + log.info("上传文件格式不正确"); +// throw new HTTPException(10022); + } + + List dataList = new ArrayList<>(); + Workbook workbook = null; + try { + InputStream is = file.getInputStream(); + if (fileName.endsWith(EXCEL2007)) { + // FileInputStream is = new FileInputStream(new File(path)); + workbook = new XSSFWorkbook(is); + } + + if (fileName.endsWith(EXCEL2003)) { + // FileInputStream is = new FileInputStream(new File(path)); + workbook = new HSSFWorkbook(is); + } + + if (workbook != null) { + Map> classMap = new HashMap<>(); + List fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList()); + fields.forEach(field -> { + ExcelColumnUtil annotation = field.getAnnotation(ExcelColumnUtil.class); + if (annotation != null) { + String value = annotation.value(); + if (StringUtils.isBlank(value)) { + return; + } + + if (!classMap.containsKey(value)) { + classMap.put(value, new ArrayList<>()); + } + + field.setAccessible(true); + classMap.get(value).add(field); + } + }); + //索引-->columns + Map> reflectionMap = new HashMap<>(); + //默认读取第一个sheet + Sheet sheet = workbook.getSheetAt(0); + + boolean firstRow = true; + for (int i = 0; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + //提取标题 + if (firstRow) { + for (int j = 0; j <= row.getLastCellNum(); j++) { + Cell cell = row.getCell(j); + String cellValue = getCellValue(cell); + if (classMap.containsKey(cellValue)) { + reflectionMap.put(j, classMap.get(cellValue)); + } + } + + firstRow = false; + } else { + //忽略空白行 + if (row == null) { + continue; + } + + try { + T t = cls.newInstance(); + //判断是否为空白行 + boolean allBlank = true; + for (int j = 0; j <= row.getLastCellNum(); j++) { + if (reflectionMap.containsKey(j)) { + Cell cell = row.getCell(j); + String cellValue = getCellValue(cell); + if (StringUtils.isNotBlank(cellValue)) { + allBlank = false; + } + List fieldList = reflectionMap.get(j); + fieldList.forEach(x -> { + try { + handleField(t, cellValue, x); + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("reflect field:%s value:%s exception!", x.getName(), cellValue), e); + } + }); + } + } + + if (!allBlank) { + dataList.add(t); + } + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse row:%s exception!", i), e); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse excel exception!"), e); + } finally { + if (workbook != null) { + try { + workbook.close(); + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse excel exception!"), e); + } + } + } + return dataList; + } + + /** + * 导入excel文件 + * + * @param path + * @param cls + * @param file + * @param + * @return + */ + public static List readExcelWithoutTitle(String path, Class cls, MultipartFile file) { + String fileName = file.getOriginalFilename(); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + log.info("上传文件格式不正确"); +// throw new HTTPException(10022); + } + + List dataList = new ArrayList<>(); + Workbook workbook = null; + try { + InputStream is = file.getInputStream(); + if (fileName.endsWith(EXCEL2007)) { + // FileInputStream is = new FileInputStream(new File(path)); + workbook = new XSSFWorkbook(is); + } + + if (fileName.endsWith(EXCEL2003)) { + // FileInputStream is = new FileInputStream(new File(path)); + workbook = new HSSFWorkbook(is); + } + + if (workbook != null) { + Map> classMap = new HashMap<>(); + List fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList()); + fields.forEach(field -> { + ExcelColumnUtil annotation = field.getAnnotation(ExcelColumnUtil.class); + if (annotation != null) { + String value = annotation.value(); + if (StringUtils.isBlank(value)) { + return; + } + + if (!classMap.containsKey(value)) { + classMap.put(value, new ArrayList<>()); + } + + field.setAccessible(true); + classMap.get(value).add(field); + } + }); + //索引-->columns + Map> reflectionMap = new HashMap<>(); + //默认读取第一个sheet + Sheet sheet = workbook.getSheetAt(0); + + boolean firstRow = true; + for (int i = 1; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + //提取标题 + if (firstRow) { + for (int j = 0; j <= row.getLastCellNum(); j++) { + Cell cell = row.getCell(j); + String cellValue = getCellValue(cell); + if (classMap.containsKey(cellValue)) { + reflectionMap.put(j, classMap.get(cellValue)); + } + } + + firstRow = false; + } else { + //忽略空白行 + if (row == null) { + continue; + } + + try { + T t = cls.newInstance(); + //判断是否为空白行 + boolean allBlank = true; + for (int j = 0; j <= row.getLastCellNum(); j++) { + if (reflectionMap.containsKey(j)) { + Cell cell = row.getCell(j); + String cellValue = getCellValue(cell); + if (StringUtils.isNotBlank(cellValue)) { + allBlank = false; + } + List fieldList = reflectionMap.get(j); + fieldList.forEach(x -> { + try { + handleField(t, cellValue, x); + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("reflect field:%s value:%s exception!", x.getName(), cellValue), e); + } + }); + } + } + + if (!allBlank) { + dataList.add(t); + } + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse row:%s exception!", i), e); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse excel exception!"), e); + } finally { + if (workbook != null) { + try { + workbook.close(); + } catch (Exception e) { + e.printStackTrace(); + log.error(String.format("parse excel exception!"), e); + } + } + } + return dataList; + } + + /** + * 导出excel文件 + * + * @param list + * @param cls + * @param + */ + public static void writeExcel(List list, Class cls) { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletResponse response = servletRequestAttributes.getResponse(); + Field[] fields = cls.getDeclaredFields(); + List fieldList = Arrays.stream(fields).filter(field -> { + ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); + if (annotation != null) { + field.setAccessible(true); + return true; + } + return false; + }).sorted(Comparator.comparing(field -> { + int col = 0; + ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); + if (annotation != null) { + col = annotation.col(); + } + return col; + })).collect(Collectors.toList()); + + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(); + AtomicInteger ai = new AtomicInteger(); + { + Row row = sheet.createRow(ai.getAndIncrement()); + AtomicInteger at = new AtomicInteger(); + fieldList.forEach(field -> { + ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); + String columnName = ""; + if (annotation != null) { + columnName = annotation.value(); + } + Cell cell = row.createCell(at.getAndIncrement()); + CellStyle cellStyle = wb.createCellStyle(); + cellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + Font font = wb.createFont(); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cell.setCellStyle(cellStyle); + cell.setCellValue(columnName); + }); + + if (list != null) { + list.forEach(data -> { + Row r = sheet.createRow(ai.getAndIncrement()); + AtomicInteger a = new AtomicInteger(); + fieldList.forEach(field -> { + try { + Class type = field.getType(); + Object value = field.get(data); + Cell cell = r.createCell(a.getAndIncrement()); + if (value != null) { + cell.setCellValue(value.toString()); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + }); + }); + for (int i = 0; i < list.size(); i++) { + sheet.autoSizeColumn(i); + } + } + String fileName = String.valueOf(new Date().getTime()); + buildExcelDocument(fileName + "." + EXCEL2007, wb, response); + } + } + + + private static void setStyle(CellStyle cellStyle) { + // 水平居中 + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); + // 垂直居中 + cellStyle.setVerticalAlignment(CellStyle.ALIGN_CENTER); + // 边框 + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + // 边框 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + // 边框 + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + // 边框 + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); + } + + //也可用以下方法 + public static void setBorderStyle(int border, CellRangeAddress region, SXSSFSheet sheet, SXSSFWorkbook wb) { + CellStyle cs = wb.createCellStyle(); // 样式对象 + cs.setBorderBottom((short) border); + cs.setBorderTop((short) border); + cs.setBorderLeft((short) border); + cs.setBorderRight((short) border); + + setRegionStyle(cs, region, sheet); + } + + private static void setRegionStyle(CellStyle cs, CellRangeAddress region, SXSSFSheet sheet) { + for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) { + SXSSFRow row = sheet.getRow(i); + if (row == null) { + row = sheet.createRow(i); + } + for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) { + SXSSFCell cell = row.getCell(j); + if (cell == null) { + cell = row.createCell(j); + cell.setCellValue(""); + } + cell.setCellStyle(cs); + } + } + } + + + private static void handleField(T t, String value, Field field) throws Exception { + Class type = field.getType(); + if (type == null || type == void.class || StringUtils.isBlank(value)) { + return; + } + if (type == Object.class) { + field.set(t, value); + //数字类型 + } else if (type.getSuperclass() == null || type.getSuperclass() == Number.class) { + if (type == int.class || type == Integer.class) { + field.set(t, NumberUtils.toInt(value)); + } else if (type == long.class || type == Long.class) { + field.set(t, NumberUtils.toLong(value)); + } else if (type == byte.class || type == Byte.class) { + field.set(t, NumberUtils.toByte(value)); + } else if (type == short.class || type == Short.class) { + field.set(t, NumberUtils.toShort(value)); + } else if (type == double.class || type == Double.class) { + field.set(t, NumberUtils.toDouble(value)); + } else if (type == float.class || type == Float.class) { + field.set(t, NumberUtils.toFloat(value)); + } else if (type == char.class || type == Character.class) { + field.set(t, CharUtils.toChar(value)); + } else if (type == boolean.class) { + field.set(t, BooleanUtils.toBoolean(value)); + } else if (type == BigDecimal.class) { + field.set(t, new BigDecimal(value)); + } + } else if (type == Boolean.class) { + field.set(t, BooleanUtils.toBoolean(value)); + } else if (type == Date.class) { + // + field.set(t, value); + } else if (type == String.class) { + field.set(t, value); + } else { + Constructor constructor = type.getConstructor(String.class); + field.set(t, constructor.newInstance(value)); + } + } + + private static String getCellValue(Cell cell) { + if (cell == null) { + return ""; + } + + if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { + if (DateUtil.isCellDateFormatted(cell)) { + return HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); + } else { + return new BigDecimal(cell.getNumericCellValue()).toString(); + } + } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) { + return StringUtils.trimToEmpty(cell.getStringCellValue()); + } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { + return StringUtils.trimToEmpty(cell.getCellFormula()); + } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) { + return ""; + } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { + return String.valueOf(cell.getBooleanCellValue()); + } else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) { + return "ERROR"; + } else { + return cell.toString().trim(); + } + } + + private static void buildExcelDocument(String fileName, Workbook wb, HttpServletResponse response) { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8")); + response.flushBuffer(); + wb.write(response.getOutputStream()); + } catch (IOException e) { + log.error(String.format("downLoad excel exception"), e); + } + } + + private static void buildExcelFile(String path, Workbook wb) { + File file = new File(path); + if (file.exists()) { + file.delete(); + } + + try { + wb.write(new FileOutputStream(file)); + } catch (Exception e) { + log.error(String.format("downLoad excel exception"), e); + } + } + + +} diff --git a/src/main/java/com/subsidy/util/tree/Node.java b/src/main/java/com/subsidy/util/tree/Node.java new file mode 100644 index 0000000..bf53d6e --- /dev/null +++ b/src/main/java/com/subsidy/util/tree/Node.java @@ -0,0 +1,42 @@ +package com.subsidy.util.tree; + +import lombok.Data; + +@Data +public class Node implements Comparable { + + //主键 + private String id; + + //同级节点第几个元素 + private String number; + + //1.1 + private String text; + + //父节点 + private String parentId; + + private int level; + + public Node(String id, String number, String parentId, int level) { + this.id = id; + this.number = number; + this.parentId = parentId; + this.level = level; + } + + @Override + public int compareTo(Node o) { + if (this.level != o.level) { + return o.level - this.level; + } else { + if(this.number==null){ + return -1; + } + return this.number.compareTo(o.number); + } + } + + +} diff --git a/src/main/java/com/subsidy/util/tree/NumberTree.java b/src/main/java/com/subsidy/util/tree/NumberTree.java new file mode 100644 index 0000000..d051a9f --- /dev/null +++ b/src/main/java/com/subsidy/util/tree/NumberTree.java @@ -0,0 +1,212 @@ +package com.subsidy.util.tree; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class NumberTree { + + private String id; + + private List nodeList; + + private String separator; + + private int idSeq; + + private SerialNumber number; + + public NumberTree(String separator, SerialNumber number) { + init(); + this.separator = separator; + this.number = number; + + } + + public void init() { + idSeq = 1; + this.separator = "."; + if (this.nodeList == null) { + nodeList = new ArrayList(); + } + } + + + /** + *

功能描述:根据父节点获取所有子节点。

+ */ + public List getChildNodes(Node pNode) { + String pId = pNode.getId(); + return getChildNodes(pId); + } + + /** + *

功能描述:根据父节点获取所有子节点。

+ */ + public List getChildNodes(String pId) { + List childNodes = new ArrayList(); + for (Node n : nodeList) { + if (pId.equals(n.getParentId())) { + childNodes.add(n); + } + } + + return childNodes; + } + + /** + *

功能描述:获取本级值最大的节点。

+ */ + public Node getMaxNodeForThisLevel(Node pNode) { + List childList = getChildNodes(pNode); + Node root = getRoot(nodeList); + if (childList.size() <= 0) { + return null; + } + Node maxNode = root; + for (Node node : childList) { + if (maxNode.getNumber().compareTo(node.getNumber()) < 0) { + maxNode = node; + } + } + return maxNode; + } + + /** + *

功能描述:生成下一个子节点。

+ */ + public Node generateNextChildNode(Node node) { + Node newNode = null; + Node maxNode = getMaxNodeForThisLevel(node); + String nextNumber = number.firstNumber(); + int level = node.getLevel(); + if (maxNode != null && !"0".equals(maxNode.getId())) {//本级存在子节点,且非根节点 + nextNumber = number.produceNext(maxNode.getNumber()); + level = maxNode.getLevel(); + } + newNode = new Node(String.valueOf(++idSeq), nextNumber, node.getId(), level); + + generateNodeText(newNode, nextNumber); + + return newNode; + } + + + /** + * + *

功能描述:获取父节点。

+ */ + public Node getParentNode(Node node) { + for (Node n : nodeList) { + if (node.getParentId() == n.getId()) { + return n; + } + } + return node; + } + + /** + *

功能描述:生成节点路径。

+ */ + public void generateNodeText(Node node, String text) { + + if (node == null || "0".equals(node.getId())) { + return; + } + + Node pNode = getParentNode(node); + + if (!"0".equals(pNode.getId())) { + text = pNode.getText() + separator + text; + } + + node.setText(text); + } + + /** + *

功能描述:遍历所有树节点。

+ */ + public void traverseNodeList(Node node) { + if(node==null){ + node = getRoot(nodeList); + } + List childNodes = getChildNodes(node); + System.out.println(node.getText()); + if (childNodes.size() > 0) { + for (Node n : childNodes) { + traverseNodeList(n); + } + } + } + public static void main(String[] args) { + SerialNumber number = new SerialNumber(); + NumberTree treeNode = new NumberTree(".", number); + + addSomeNodes(treeNode); + treeNode.traverseNodeList(null); + } + + /** + *

功能描述:获取根节点。

+ */ + public Node getRoot(List nodeList) { + Node root = null; + if (nodeList.size() <= 0 || (root = getNodeById(nodeList, "0")) == null) { + root = createRoot(); + nodeList.add(root); + } + return root; + } + + private Node getNodeById(List nodeList, String id) { + Node node = null; + if(id!=null){ + for (Node n : nodeList) { + if (id.equals(n.getId())) { + node = n; + break; + } + } + } + return node; + } + + private Node createRoot() { + Node root = new Node("0", number.rootNumber(), "-1", 0); + root.setText("0"); + return root; + } + + /** + *

功能描述:测试添加节点。

+ */ + private static Node addSomeNodes(NumberTree tree) { + Node root = tree.getRoot(tree.nodeList); + Node node1 = getNextNode(tree, root);//1 + Node node2 = getNextNode(tree, root);//2 + Node node3 = getNextNode(tree, root);//3 + Node node11 = getNextNode(tree, node1);//1.1 + Node node12 = getNextNode(tree, node1);//1.2 + Node node21 = getNextNode(tree, node2);//2.1 + Node node211 = getNextNode(tree, node21);//2.1.1 + Node node212 = getNextNode(tree, node21);//2.1.2 + Node node22 = getNextNode(tree, node2);//2.2 + Node node221 = getNextNode(tree, node22);//2.2.1 + Node node31 = getNextNode(tree, node3); + Node node32 = getNextNode(tree, node3); + Node node311 = getNextNode(tree, node31); + Node node3111 = getNextNode(tree, node311); + return root; + } + + public static Node getNextNode(NumberTree tree, Node pNode) { + Node node = tree.generateNextChildNode(pNode); + if (node != null) { + tree.nodeList.add(node); + } + return node; + } + +} diff --git a/src/main/java/com/subsidy/util/tree/SerialNumber.java b/src/main/java/com/subsidy/util/tree/SerialNumber.java new file mode 100644 index 0000000..02a5e31 --- /dev/null +++ b/src/main/java/com/subsidy/util/tree/SerialNumber.java @@ -0,0 +1,28 @@ +package com.subsidy.util.tree; + +public class SerialNumber{ + + public String produceNext(String crrnt) { + + String next = "0"; + if (crrnt != null) { + try { + int crrntNum = Integer.parseInt(crrnt); + next = String.valueOf(crrntNum + 1); + } catch (Exception e) { + System.err.println("非数字类型的字符串!"); + } + } + return next; + } + + public String rootNumber() { + return "0"; + } + + public String firstNumber() { + return "1"; + } + + +} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..c3ae1b7 --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,65 @@ +# 本地环境配置 +spring.server.port=23509 + +# 数据源配置 +spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +#spring.datasource.url=jdbc:mysql://rm-uf6rab73w0qg843opxo.mysql.rds.aliyuncs.com:3306/subsidy_test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=devloper +spring.datasource.password=dev@1553$ + +spring.datasource.druid.initialSize=5 +spring.datasource.druid.minIdle=5 +spring.datasource.druid.maxActive=200 +spring.datasource.druid.maxWait=60000 +spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 +spring.datasource.druid.minEvictableIdleTimeMillis=300000 +spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL +spring.datasource.druid.testWhileIdle=true +spring.datasource.druid.testOnBorrow=false +spring.datasource.druid.testOnReturn=false +spring.datasource.druid.poolPreparedStatements=true +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 +spring.datasource.druid.useGlobalDataSourceStat=true + +# 控制台日志打印 +mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl + +#spring.redis.host=r-uf6meywj6ysuehg148pd.redis.rds.aliyuncs.com +#spring.redis.password=r-uf6meywj6ysuehg148:Ykhl@208 +#spring.redis.port=6379 +#spring.redis.lettuce.pool.max-idle=16 +#spring.redis.lettuce.pool.max-active=32 +#spring.redis.lettuce.pool.min-idle=8 + +#spring.application.name=spring-boot-mongodb +## mongodb +##spring.data.mongodb.uri=mongodb://47.97.19.66:27017/subsidy +#spring.data.mongodb.username=root +#spring.data.mongodb.password=123456 +##spring.data.mongodb.authentication-database=subsidy +#spring.data.mongodb.database=subsidy +#spring.data.mongodb.host=47.97.19.66 +#spring.data.mongodb.port=27017 + +spring.redis.host=47.97.19.66 +spring.redis.password=Ykhl@208 +spring.redis.port=6389 +spring.redis.lettuce.pool.max-idle=16 +spring.redis.lettuce.pool.max-active=32 +spring.redis.lettuce.pool.min-idle=8 + +qxueyou.appId=qxywz5nnWMI77CM3Tx +qxueyou.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq95qxy +qxueyou.url=https://dev.qxueyou.com/auth/user/token + +renshe.url = https://test.shzypxy.com +renshe.secretKey = ad927f0b-6a39-43a7-bac7-163baef1fff7 +renshe.putuo = http://180.167.195.117:18015/ddproject + +#微信公众号 +wechat.appId=wx9e107b8f68c91a0c +wechat.appSecret=d772631f098ef7b597293c22899671e0 +wechat.msgUrl=t.youkehulian.cn +wechat.templateId=GzQw2jCqpDMviTRR4vpqBSQXti2GtO0LHeWiLCvxN9U \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 0000000..59e6822 --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1,32 @@ +# 生产环境配置 +spring.server.port=23509 + +# 数据源配置 +spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=ykadmin_new +spring.datasource.password=youkedb608@good + +spring.datasource.druid.initialSize=5 +spring.datasource.druid.minIdle=5 +spring.datasource.druid.maxActive=20 +spring.datasource.druid.maxWait=60000 +spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 +spring.datasource.druid.minEvictableIdleTimeMillis=300000 +spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL +spring.datasource.druid.testWhileIdle=true +spring.datasource.druid.testOnBorrow=false +spring.datasource.druid.testOnReturn=false +spring.datasource.druid.poolPreparedStatements=true +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 +spring.datasource.druid.useGlobalDataSourceStat=true +spring.datasource.druid.kill-when-socket-read-timeout=true +# 控制台日志打印 +mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl + +wechat.appId=wx7ccddebb8917ac25 +wechat.appSecret=c0d0b367c80c47014ffabeff55081b6e +wechat.templateId=sP0Ycgtfie1g4Pfx0K8sjW9HZ9Xm-Tqq1ketofZWgQc +wechat.msgUrl=a.ykhl.com +wechat.miniprogram_state=formal diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..9c541de --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,61 @@ +# 环境配置 +spring.profiles.active=dev +#和CPU数 +spring.server.acceptorThreadCount=600 +spring.server.minSpareThreads=100 +spring.server.maxSpareThreads=500 +spring.server.maxThreads=500 +spring.server.maxConnections=1000 +#10秒超时 +spring.server.connectionTimeout=20000 +spring.server.protocol=org.apache.coyote.http11.Http11AprProtocol +spring.server.redirectPort=8443 +spring.server.compression=on +#文件请求大小 +spring.server.MaxFileSize=300MB +spring.server.MaxRequestSize=500MB +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=50MB +# 文件编码 UTF8 +spring.mandatory-file-encoding=UTF-8 +spring.jackson.time-zone=GMT+8 +# 404 交给异常处理器处理 +spring.mvc.throw-exception-if-no-handler-found=true +# 关闭静态资源的映射 +spring.resources.add-mappings=false +# 关闭banner打印 +mybatis-plus.global-config.banner=false +# mybatis-plus相关配置 +mybatis-plus.mapper-locations=classpath:mapper/*.xml +# 是否开启自动驼峰命名规则映射 +mybatis-plus.configuration.map-underscore-to-camel-case=true +# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 +mybatis-plus.configuration.call-setters-on-nulls=true +# 逻辑删除 +mybatis-plus.global-config.db-config.logic-delete-value=NOW() +mybatis-plus.global-config.db-config.logic-not-delete-value=NULL +#日志配置 +logging.config=classpath:logback-spring.xml +#ehcache缓存配置 +spring.cache.type=ehcache +spring.cache.ehcache.config=classpath:ehcache.xml +# 阿里云短信 +sms.product=Dysmsapi +sms.domain=dysmsapi.aliyuncs.com +sms.accessKeyId=LTAI5tLUBG4B6QxhHrhddc7p +sms.accessKeySecret=eber38QGHZixTQ6bFfrd80kbg67jIP +#wechat.app-id=wx7785293ff5e31f14 +#wechat.app-secret=25d57cad61fc1b45b3afa46d4c35e8f6 +#wechat.agentId=1000008 +vod.appId=1302252447 +vod.secretId=AKIDOcePHvZ2C5VeYHQGSO5aqtlNxJQLqfz2 +vod.secretKey=vjHYRmrfDbw0rWxA7oFcj7F8lDPKCm8E +vod.api=vod.tencentcloudapi.com +vod.region=ap-shanghai +vod.classId=848920 + +subsidy.appId=qxywz5nnWMI7ABCS +subsidy.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ +subsidy.url=http://subsidy.youkehulian.cn/auth/user/token + + diff --git a/src/main/resources/code.properties b/src/main/resources/code.properties new file mode 100644 index 0000000..2d8ca08 --- /dev/null +++ b/src/main/resources/code.properties @@ -0,0 +1,78 @@ +meishu.code-message[0]=成功 + +meishu.code-message[1010]=无效的令牌 +meishu.code-message[1011]=当前账户已在其他设备登录 +meishu.code-message[1012]=你已掉线,请重新登录 + +meishu.code-message[10002]=该用户已存在 +meishu.code-message[10003]=该用户已存在,请直接登录 +meishu.code-message[10004]=验证码输入错误 +meishu.code-message[10005]=该用户未注册,请先注册 +meishu.code-message[10006]=该届赛事已存在 +meishu.code-message[10007]=不在上传时间范围内 +meishu.code-message[10008]=你已提交,不用再次提交 +meishu.code-message[10009]=管理员不存在 + +meishu.code-message[10010]=PDF下载失败 +meishu.code-message[10011]=发送失败,获取验证码频繁 +# 学生 +meishu.code-message[10020]=手机号已注册 +meishu.code-message[10025]=验证码已过期 +meishu.code-message[10021]=验证码不正确 +meishu.code-message[10022]=输入的手机号和接收验证码手机号不一致 +meishu.code-message[10023]=该身份证号已注册 +meishu.code-message[10024]=手机号未注册 +meishu.code-message[10026]=该账户已冻结 +meishu.code-message[10027]=密码不正确 +meishu.code-message[10028]=账号不存在 +# 项目 +meishu.code-message[10040]=项目已申请 +meishu.code-message[10041]=项目负责人已存在 +meishu.code-message[10042]=提交失败,您填写的项目信息不完整 +meishu.code-message[10043]=项目已提交,请等待项目审核 +meishu.code-message[10044]=撤回失败,您未申请项目 +meishu.code-message[10045]=撤回失败,您的项目已进入审批状态 +meishu.code-message[10046]=项目不存在 +meishu.code-message[10047]=请选择要分配的项目 +meishu.code-message[10048]=请选择要分配的评委 +meishu.code-message[10049]=项目信息不完整 +meishu.code-message[10050]=您不是该项目的评委 +meishu.code-message[10051]=项目评分已提交 +meishu.code-message[10052]=请先进行预评分 +meishu.code-message[10053]=评委已分配了该项目 +meishu.code-message[10054]=未指定赛事年份 +meishu.code-message[10055]=创建失败,尚未处于大赛规定的报名时间 +meishu.code-message[10056]=项目赛事已结束报名 +meishu.code-message[10057]=赛事暂未开放 +meishu.code-message[10058]=您已超过规定的项目上报数量 +meishu.code-message[10059]=撤回失败,评委已进行了项目评分 +meishu.code-message[10070]=撤回失败,评委不存在 +meishu.code-message[10071]=撤回失败,项目未分配该评委 +meishu.code-message[10072]=您已创建了类型的项目 +meishu.code-message[10073]=撤回失败,项目已评审 +meishu.code-message[10074]=不在评审时间内 +meishu.code-message[10075]=评审已开始,不能撤回评委 +meishu.code-message[10076]=请先设置评审起始时间 +meishu.code-message[10077]=提交失败,有信息尚未填写 +meishu.code-message[10078]=撤回失败,当前时间不在大赛时间段内 +meishu.code-message[10079]=指导老师手机号不能重复 +# 院校 +meishu.code-message[10060]=账户不存在 +meishu.code-message[10061]=密码错误 +meishu.code-message[10062]=账户已存在 +meishu.code-message[10063]=院校名称已存在 +meishu.code-message[10064]=学校代码已存在 +meishu.code-message[10065]=项目未分配评审 +meishu.code-message[10066]=上传文件为空 +meishu.code-message[10067]=系统已暂停登录功能 +meishu.code-message[10068]=成员不能是负责人 +meishu.code-message[10018]=不在大赛时间范围内 + +meishu.code-message[10019]=最多只能添加1位学校领队 +meishu.code-message[10029]=最多只能添加9位观摩人员 +meishu.code-message[10030]=车牌号已存在 +meishu.code-message[10031]=不在申报时间范围内 +meishu.code-message[10032]=项目已淘汰 +meishu.code-message[10033]=该项目没预约时间,无法修改 +meishu.code-message[10034]=该时间段已被占用,请选择其他时间 +meishu.code-message[10035]=该时间内已有项目,无法删除 \ No newline at end of file diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml new file mode 100644 index 0000000..7a297bc --- /dev/null +++ b/src/main/resources/ehcache.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..0006c90 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,74 @@ + + + + + ${APP_NAME} + + + + + info + + + %d [%t] %5p %c:%L - %m%n + UTF-8 + + + + ${LOG_PATH}${APP_NAME}-info.log + + %d [%t] %5p %c:%L - %m%n + + + + 100MB + + ${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz + + 30 + + + + ${LOG_PATH}${APP_NAME}-error.log + + error + + + %d [%t] %5p %c:%L - %m%n + + + + 256MB + + ${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz + + 180 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/AdministerMapper.xml b/src/main/resources/mapper/AdministerMapper.xml new file mode 100644 index 0000000..3eecbc1 --- /dev/null +++ b/src/main/resources/mapper/AdministerMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + create_date, + update_date, + delete_date, + id, telephone, account_name, password, company_id, labor_id, academy_id, college_id, user_name, img, status, role, last_role, remark, openid, work_no, first_login + + + diff --git a/src/main/resources/mybatis-plus.properties b/src/main/resources/mybatis-plus.properties new file mode 100644 index 0000000..04844e3 --- /dev/null +++ b/src/main/resources/mybatis-plus.properties @@ -0,0 +1,12 @@ +# 此处为本项目src所在路径(代码生成器输出路径) +outputDir=/src/main/java +author=Tuyp +# 父的包名 +setParent=com.subsidy +# mapper.xml文件生成路径 +mapperPath=/src/main/resources/mapper/ +# 数据库地址 +url=jdbc:mysql://116.62.57.92:3306/subsidy_new?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true +driverName=com.mysql.cj.jdbc.Driver +userName=devloper +password=dev@1553$ \ No newline at end of file diff --git a/src/main/resources/mybatis.xml b/src/main/resources/mybatis.xml new file mode 100644 index 0000000..f4495b4 --- /dev/null +++ b/src/main/resources/mybatis.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/main/resources/templates/controller.java.ftl b/src/main/resources/templates/controller.java.ftl new file mode 100644 index 0000000..28e7070 --- /dev/null +++ b/src/main/resources/templates/controller.java.ftl @@ -0,0 +1,41 @@ +package ${package.Controller}; + + +import org.springframework.web.bind.annotation.RequestMapping; + +<#if restControllerStyle> +import org.springframework.web.bind.annotation.RestController; +<#else> +import org.springframework.stereotype.Controller; + +<#if superControllerClassPackage??> +import ${superControllerClassPackage}; + +import io.swagger.annotations.Api; + +/** + *

+ * ${table.comment!} 前端控制器 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if restControllerStyle> +@RestController +@Api(tags = "${table.comment!}") +<#else> +@Controller + +@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}") +<#if kotlin> +class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}() +<#else> +<#if superControllerClass??> +public class ${table.controllerName} extends ${superControllerClass} { +<#else> +public class ${table.controllerName} { + + +} + diff --git a/src/main/resources/templates/entity.java.ftl b/src/main/resources/templates/entity.java.ftl new file mode 100644 index 0000000..c63bcc4 --- /dev/null +++ b/src/main/resources/templates/entity.java.ftl @@ -0,0 +1,156 @@ +package ${package.Entity}; + +<#list table.importPackages as pkg> +import ${pkg}; + +<#if swagger2> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +<#if entityLombokModel> +import lombok.Data; +import lombok.EqualsAndHashCode; + <#if chainModel> +import lombok.experimental.Accessors; + + + +/** + *

+ * ${table.comment!} + *

+ * + * @author ${author} + * @since ${date} + */ +<#if entityLombokModel> +@Data + <#if superEntityClass??> +@EqualsAndHashCode(callSuper = true) + <#else> +@EqualsAndHashCode(callSuper = false) + + <#if chainModel> +@Accessors(chain = true) + + +<#if table.convert> +@TableName("${table.name}") + +<#if swagger2> +@ApiModel(value="${entity}对象", description="${table.comment!}") + +<#if superEntityClass??> +public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}> { +<#elseif activeRecord> +public class ${entity} extends Model<${entity}> { +<#else> +public class ${entity} implements Serializable { + + +<#if entitySerialVersionUID> + private static final long serialVersionUID = 1L; + +<#-- ---------- BEGIN 字段循环遍历 ----------> +<#list table.fields as field> + <#if field.keyFlag> + <#assign keyPropertyName="${field.propertyName}"/> + + + <#if field.comment!?length gt 0> + <#if swagger2> + @ApiModelProperty(value = "${field.comment}") + <#else> + /** + * ${field.comment} + */ + + + <#if field.keyFlag> + <#-- 主键 --> + <#if field.keyIdentityFlag> + @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO) + <#elseif idType??> + @TableId(value = "${field.annotationColumnName}", type = IdType.${idType}) + <#elseif field.convert> + @TableId("${field.annotationColumnName}") + + <#-- 普通字段 --> + <#elseif field.fill??> + <#-- ----- 存在字段填充设置 -----> + <#if field.convert> + @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) + <#else> + @TableField(fill = FieldFill.${field.fill}) + + <#elseif field.convert> + @TableField("${field.annotationColumnName}") + + <#-- 乐观锁注解 --> + <#if (versionFieldName!"") == field.name> + @Version + + <#-- 逻辑删除注解 --> + <#if (logicDeleteFieldName!"") == field.name> + @TableLogic + + private ${field.propertyType} ${field.propertyName}; + +<#------------ END 字段循环遍历 ----------> + +<#if !entityLombokModel> + <#list table.fields as field> + <#if field.propertyType == "boolean"> + <#assign getprefix="is"/> + <#else> + <#assign getprefix="get"/> + + public ${field.propertyType} ${getprefix}${field.capitalName}() { + return ${field.propertyName}; + } + + <#if chainModel> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <#else> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + + this.${field.propertyName} = ${field.propertyName}; + <#if chainModel> + return this; + + } + + + +<#if entityColumnConstant> + <#list table.fields as field> + public static final String ${field.name?upper_case} = "${field.name}"; + + + +<#if activeRecord> + @Override + protected Serializable pkVal() { + <#if keyPropertyName??> + return this.${keyPropertyName}; + <#else> + return null; + + } + + +<#if !entityLombokModel> + @Override + public String toString() { + return "${entity}{" + + <#list table.fields as field> + <#if field_index==0> + "${field.propertyName}=" + ${field.propertyName} + + <#else> + ", ${field.propertyName}=" + ${field.propertyName} + + + + "}"; + } + +} diff --git a/src/main/resources/templates/mapper.java.ftl b/src/main/resources/templates/mapper.java.ftl new file mode 100644 index 0000000..be08c59 --- /dev/null +++ b/src/main/resources/templates/mapper.java.ftl @@ -0,0 +1,22 @@ +package ${package.Mapper}; + +import ${package.Entity}.${entity}; +import ${superMapperClassPackage}; +import org.springframework.stereotype.Repository; + +/** + *

+ * ${table.comment!} Mapper 接口 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if kotlin> +interface ${table.mapperName} : ${superMapperClass}<${entity}> +<#else> + @Repository +public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { + +} + diff --git a/src/main/resources/templates/mapper.xml.ftl b/src/main/resources/templates/mapper.xml.ftl new file mode 100644 index 0000000..04c2359 --- /dev/null +++ b/src/main/resources/templates/mapper.xml.ftl @@ -0,0 +1,39 @@ + + + + +<#if enableCache> + + + + +<#if baseResultMap> + + +<#list table.fields as field> +<#if field.keyFlag><#--生成主键排在第一位--> + + + +<#list table.commonFields as field><#--生成公共字段 --> + + +<#list table.fields as field> +<#if !field.keyFlag><#--生成普通字段 --> + + + + + + +<#if baseColumnList> + + +<#list table.commonFields as field> + ${field.columnName}, + + ${table.fieldNames} + + + + diff --git a/src/main/resources/templates/service.java.ftl b/src/main/resources/templates/service.java.ftl new file mode 100644 index 0000000..e3232f3 --- /dev/null +++ b/src/main/resources/templates/service.java.ftl @@ -0,0 +1,20 @@ +package ${package.Service}; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; + +/** + *

+ * ${table.comment!} 服务类 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if kotlin> +interface ${table.serviceName} : ${superServiceClass}<${entity}> +<#else> +public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { + +} + diff --git a/src/main/resources/templates/serviceImpl.java.ftl b/src/main/resources/templates/serviceImpl.java.ftl new file mode 100644 index 0000000..aeebd14 --- /dev/null +++ b/src/main/resources/templates/serviceImpl.java.ftl @@ -0,0 +1,26 @@ +package ${package.ServiceImpl}; + +import ${package.Entity}.${entity}; +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import ${superServiceImplClassPackage}; +import org.springframework.stereotype.Service; + +/** + *

+ * ${table.comment!} 服务实现类 + *

+ * + * @author ${author} + * @since ${date} + */ +@Service +<#if kotlin> +open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { + +} +<#else> +public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { + +} + diff --git a/target/classes/META-INF/spring-configuration-metadata.json b/target/classes/META-INF/spring-configuration-metadata.json new file mode 100644 index 0000000..f82716b --- /dev/null +++ b/target/classes/META-INF/spring-configuration-metadata.json @@ -0,0 +1,207 @@ +{ + "groups": [ + { + "name": "meishu", + "type": "com.subsidy.common.configure.RemoteProperties", + "sourceType": "com.subsidy.common.configure.RemoteProperties" + }, + { + "name": "polyv", + "type": "com.subsidy.common.configure.PolyvConfig", + "sourceType": "com.subsidy.common.configure.PolyvConfig" + }, + { + "name": "qxueyou", + "type": "com.subsidy.common.configure.QXueYouConfig", + "sourceType": "com.subsidy.common.configure.QXueYouConfig" + }, + { + "name": "renshe", + "type": "com.subsidy.common.configure.RenSheConfig", + "sourceType": "com.subsidy.common.configure.RenSheConfig" + }, + { + "name": "sms", + "type": "com.subsidy.common.configure.AliyunSmsProperties", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "subsidy", + "type": "com.subsidy.common.configure.SubsidyConfig", + "sourceType": "com.subsidy.common.configure.SubsidyConfig" + }, + { + "name": "vod", + "type": "com.subsidy.common.configure.VODConfig", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "wechat", + "type": "com.subsidy.common.configure.WechatConfig", + "sourceType": "com.subsidy.common.configure.WechatConfig" + } + ], + "properties": [ + { + "name": "meishu.code-message", + "type": "java.util.Map", + "sourceType": "com.subsidy.common.configure.RemoteProperties" + }, + { + "name": "polyv.app-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.PolyvConfig" + }, + { + "name": "polyv.app-secret", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.PolyvConfig" + }, + { + "name": "polyv.secret-key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.PolyvConfig" + }, + { + "name": "polyv.user-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.PolyvConfig" + }, + { + "name": "qxueyou.app-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.QXueYouConfig" + }, + { + "name": "qxueyou.security-key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.QXueYouConfig" + }, + { + "name": "qxueyou.url", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.QXueYouConfig" + }, + { + "name": "renshe.putuo", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.RenSheConfig" + }, + { + "name": "renshe.secret-key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.RenSheConfig" + }, + { + "name": "renshe.url", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.RenSheConfig" + }, + { + "name": "sms.access-key-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.access-key-secret", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.cpcode", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.domain", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.excode", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.product", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "sms.rcsapi", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.AliyunSmsProperties" + }, + { + "name": "subsidy.app-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.SubsidyConfig" + }, + { + "name": "subsidy.security-key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.SubsidyConfig" + }, + { + "name": "subsidy.url", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.SubsidyConfig" + }, + { + "name": "vod.api", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "vod.app-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "vod.class-id", + "type": "java.lang.Integer", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "vod.region", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "vod.secret-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "vod.secret-key", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.VODConfig" + }, + { + "name": "wechat.app-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.WechatConfig" + }, + { + "name": "wechat.app-secret", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.WechatConfig" + }, + { + "name": "wechat.msg-url", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.WechatConfig" + }, + { + "name": "wechat.template-id", + "type": "java.lang.String", + "sourceType": "com.subsidy.common.configure.WechatConfig" + } + ], + "hints": [] +} \ No newline at end of file diff --git a/target/classes/META-INF/subsidy.kotlin_module b/target/classes/META-INF/subsidy.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/target/classes/META-INF/subsidy.kotlin_module differ diff --git a/target/classes/application-dev.properties b/target/classes/application-dev.properties new file mode 100644 index 0000000..c3ae1b7 --- /dev/null +++ b/target/classes/application-dev.properties @@ -0,0 +1,65 @@ +# 本地环境配置 +spring.server.port=23509 + +# 数据源配置 +spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +#spring.datasource.url=jdbc:mysql://rm-uf6rab73w0qg843opxo.mysql.rds.aliyuncs.com:3306/subsidy_test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=devloper +spring.datasource.password=dev@1553$ + +spring.datasource.druid.initialSize=5 +spring.datasource.druid.minIdle=5 +spring.datasource.druid.maxActive=200 +spring.datasource.druid.maxWait=60000 +spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 +spring.datasource.druid.minEvictableIdleTimeMillis=300000 +spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL +spring.datasource.druid.testWhileIdle=true +spring.datasource.druid.testOnBorrow=false +spring.datasource.druid.testOnReturn=false +spring.datasource.druid.poolPreparedStatements=true +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 +spring.datasource.druid.useGlobalDataSourceStat=true + +# 控制台日志打印 +mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl + +#spring.redis.host=r-uf6meywj6ysuehg148pd.redis.rds.aliyuncs.com +#spring.redis.password=r-uf6meywj6ysuehg148:Ykhl@208 +#spring.redis.port=6379 +#spring.redis.lettuce.pool.max-idle=16 +#spring.redis.lettuce.pool.max-active=32 +#spring.redis.lettuce.pool.min-idle=8 + +#spring.application.name=spring-boot-mongodb +## mongodb +##spring.data.mongodb.uri=mongodb://47.97.19.66:27017/subsidy +#spring.data.mongodb.username=root +#spring.data.mongodb.password=123456 +##spring.data.mongodb.authentication-database=subsidy +#spring.data.mongodb.database=subsidy +#spring.data.mongodb.host=47.97.19.66 +#spring.data.mongodb.port=27017 + +spring.redis.host=47.97.19.66 +spring.redis.password=Ykhl@208 +spring.redis.port=6389 +spring.redis.lettuce.pool.max-idle=16 +spring.redis.lettuce.pool.max-active=32 +spring.redis.lettuce.pool.min-idle=8 + +qxueyou.appId=qxywz5nnWMI77CM3Tx +qxueyou.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq95qxy +qxueyou.url=https://dev.qxueyou.com/auth/user/token + +renshe.url = https://test.shzypxy.com +renshe.secretKey = ad927f0b-6a39-43a7-bac7-163baef1fff7 +renshe.putuo = http://180.167.195.117:18015/ddproject + +#微信公众号 +wechat.appId=wx9e107b8f68c91a0c +wechat.appSecret=d772631f098ef7b597293c22899671e0 +wechat.msgUrl=t.youkehulian.cn +wechat.templateId=GzQw2jCqpDMviTRR4vpqBSQXti2GtO0LHeWiLCvxN9U \ No newline at end of file diff --git a/target/classes/application-prod.properties b/target/classes/application-prod.properties new file mode 100644 index 0000000..59e6822 --- /dev/null +++ b/target/classes/application-prod.properties @@ -0,0 +1,32 @@ +# 生产环境配置 +spring.server.port=23509 + +# 数据源配置 +spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=ykadmin_new +spring.datasource.password=youkedb608@good + +spring.datasource.druid.initialSize=5 +spring.datasource.druid.minIdle=5 +spring.datasource.druid.maxActive=20 +spring.datasource.druid.maxWait=60000 +spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 +spring.datasource.druid.minEvictableIdleTimeMillis=300000 +spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL +spring.datasource.druid.testWhileIdle=true +spring.datasource.druid.testOnBorrow=false +spring.datasource.druid.testOnReturn=false +spring.datasource.druid.poolPreparedStatements=true +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 +spring.datasource.druid.useGlobalDataSourceStat=true +spring.datasource.druid.kill-when-socket-read-timeout=true +# 控制台日志打印 +mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl + +wechat.appId=wx7ccddebb8917ac25 +wechat.appSecret=c0d0b367c80c47014ffabeff55081b6e +wechat.templateId=sP0Ycgtfie1g4Pfx0K8sjW9HZ9Xm-Tqq1ketofZWgQc +wechat.msgUrl=a.ykhl.com +wechat.miniprogram_state=formal diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 0000000..9c541de --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,61 @@ +# 环境配置 +spring.profiles.active=dev +#和CPU数 +spring.server.acceptorThreadCount=600 +spring.server.minSpareThreads=100 +spring.server.maxSpareThreads=500 +spring.server.maxThreads=500 +spring.server.maxConnections=1000 +#10秒超时 +spring.server.connectionTimeout=20000 +spring.server.protocol=org.apache.coyote.http11.Http11AprProtocol +spring.server.redirectPort=8443 +spring.server.compression=on +#文件请求大小 +spring.server.MaxFileSize=300MB +spring.server.MaxRequestSize=500MB +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=50MB +# 文件编码 UTF8 +spring.mandatory-file-encoding=UTF-8 +spring.jackson.time-zone=GMT+8 +# 404 交给异常处理器处理 +spring.mvc.throw-exception-if-no-handler-found=true +# 关闭静态资源的映射 +spring.resources.add-mappings=false +# 关闭banner打印 +mybatis-plus.global-config.banner=false +# mybatis-plus相关配置 +mybatis-plus.mapper-locations=classpath:mapper/*.xml +# 是否开启自动驼峰命名规则映射 +mybatis-plus.configuration.map-underscore-to-camel-case=true +# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 +mybatis-plus.configuration.call-setters-on-nulls=true +# 逻辑删除 +mybatis-plus.global-config.db-config.logic-delete-value=NOW() +mybatis-plus.global-config.db-config.logic-not-delete-value=NULL +#日志配置 +logging.config=classpath:logback-spring.xml +#ehcache缓存配置 +spring.cache.type=ehcache +spring.cache.ehcache.config=classpath:ehcache.xml +# 阿里云短信 +sms.product=Dysmsapi +sms.domain=dysmsapi.aliyuncs.com +sms.accessKeyId=LTAI5tLUBG4B6QxhHrhddc7p +sms.accessKeySecret=eber38QGHZixTQ6bFfrd80kbg67jIP +#wechat.app-id=wx7785293ff5e31f14 +#wechat.app-secret=25d57cad61fc1b45b3afa46d4c35e8f6 +#wechat.agentId=1000008 +vod.appId=1302252447 +vod.secretId=AKIDOcePHvZ2C5VeYHQGSO5aqtlNxJQLqfz2 +vod.secretKey=vjHYRmrfDbw0rWxA7oFcj7F8lDPKCm8E +vod.api=vod.tencentcloudapi.com +vod.region=ap-shanghai +vod.classId=848920 + +subsidy.appId=qxywz5nnWMI7ABCS +subsidy.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ +subsidy.url=http://subsidy.youkehulian.cn/auth/user/token + + diff --git a/target/classes/code.properties b/target/classes/code.properties new file mode 100644 index 0000000..2d8ca08 --- /dev/null +++ b/target/classes/code.properties @@ -0,0 +1,78 @@ +meishu.code-message[0]=成功 + +meishu.code-message[1010]=无效的令牌 +meishu.code-message[1011]=当前账户已在其他设备登录 +meishu.code-message[1012]=你已掉线,请重新登录 + +meishu.code-message[10002]=该用户已存在 +meishu.code-message[10003]=该用户已存在,请直接登录 +meishu.code-message[10004]=验证码输入错误 +meishu.code-message[10005]=该用户未注册,请先注册 +meishu.code-message[10006]=该届赛事已存在 +meishu.code-message[10007]=不在上传时间范围内 +meishu.code-message[10008]=你已提交,不用再次提交 +meishu.code-message[10009]=管理员不存在 + +meishu.code-message[10010]=PDF下载失败 +meishu.code-message[10011]=发送失败,获取验证码频繁 +# 学生 +meishu.code-message[10020]=手机号已注册 +meishu.code-message[10025]=验证码已过期 +meishu.code-message[10021]=验证码不正确 +meishu.code-message[10022]=输入的手机号和接收验证码手机号不一致 +meishu.code-message[10023]=该身份证号已注册 +meishu.code-message[10024]=手机号未注册 +meishu.code-message[10026]=该账户已冻结 +meishu.code-message[10027]=密码不正确 +meishu.code-message[10028]=账号不存在 +# 项目 +meishu.code-message[10040]=项目已申请 +meishu.code-message[10041]=项目负责人已存在 +meishu.code-message[10042]=提交失败,您填写的项目信息不完整 +meishu.code-message[10043]=项目已提交,请等待项目审核 +meishu.code-message[10044]=撤回失败,您未申请项目 +meishu.code-message[10045]=撤回失败,您的项目已进入审批状态 +meishu.code-message[10046]=项目不存在 +meishu.code-message[10047]=请选择要分配的项目 +meishu.code-message[10048]=请选择要分配的评委 +meishu.code-message[10049]=项目信息不完整 +meishu.code-message[10050]=您不是该项目的评委 +meishu.code-message[10051]=项目评分已提交 +meishu.code-message[10052]=请先进行预评分 +meishu.code-message[10053]=评委已分配了该项目 +meishu.code-message[10054]=未指定赛事年份 +meishu.code-message[10055]=创建失败,尚未处于大赛规定的报名时间 +meishu.code-message[10056]=项目赛事已结束报名 +meishu.code-message[10057]=赛事暂未开放 +meishu.code-message[10058]=您已超过规定的项目上报数量 +meishu.code-message[10059]=撤回失败,评委已进行了项目评分 +meishu.code-message[10070]=撤回失败,评委不存在 +meishu.code-message[10071]=撤回失败,项目未分配该评委 +meishu.code-message[10072]=您已创建了类型的项目 +meishu.code-message[10073]=撤回失败,项目已评审 +meishu.code-message[10074]=不在评审时间内 +meishu.code-message[10075]=评审已开始,不能撤回评委 +meishu.code-message[10076]=请先设置评审起始时间 +meishu.code-message[10077]=提交失败,有信息尚未填写 +meishu.code-message[10078]=撤回失败,当前时间不在大赛时间段内 +meishu.code-message[10079]=指导老师手机号不能重复 +# 院校 +meishu.code-message[10060]=账户不存在 +meishu.code-message[10061]=密码错误 +meishu.code-message[10062]=账户已存在 +meishu.code-message[10063]=院校名称已存在 +meishu.code-message[10064]=学校代码已存在 +meishu.code-message[10065]=项目未分配评审 +meishu.code-message[10066]=上传文件为空 +meishu.code-message[10067]=系统已暂停登录功能 +meishu.code-message[10068]=成员不能是负责人 +meishu.code-message[10018]=不在大赛时间范围内 + +meishu.code-message[10019]=最多只能添加1位学校领队 +meishu.code-message[10029]=最多只能添加9位观摩人员 +meishu.code-message[10030]=车牌号已存在 +meishu.code-message[10031]=不在申报时间范围内 +meishu.code-message[10032]=项目已淘汰 +meishu.code-message[10033]=该项目没预约时间,无法修改 +meishu.code-message[10034]=该时间段已被占用,请选择其他时间 +meishu.code-message[10035]=该时间内已有项目,无法删除 \ No newline at end of file diff --git a/target/classes/com/subsidy/MeishuApplication.class b/target/classes/com/subsidy/MeishuApplication.class new file mode 100644 index 0000000..4f0c939 Binary files /dev/null and b/target/classes/com/subsidy/MeishuApplication.class differ diff --git a/target/classes/com/subsidy/common/ResponseData.class b/target/classes/com/subsidy/common/ResponseData.class new file mode 100644 index 0000000..522c7a6 Binary files /dev/null and b/target/classes/com/subsidy/common/ResponseData.class differ diff --git a/target/classes/com/subsidy/common/ResponseVO$ResponseVOBuilder.class b/target/classes/com/subsidy/common/ResponseVO$ResponseVOBuilder.class new file mode 100644 index 0000000..e822f4a Binary files /dev/null and b/target/classes/com/subsidy/common/ResponseVO$ResponseVOBuilder.class differ diff --git a/target/classes/com/subsidy/common/ResponseVO.class b/target/classes/com/subsidy/common/ResponseVO.class new file mode 100644 index 0000000..ae93279 Binary files /dev/null and b/target/classes/com/subsidy/common/ResponseVO.class differ diff --git a/target/classes/com/subsidy/common/configure/AliyunSmsProperties.class b/target/classes/com/subsidy/common/configure/AliyunSmsProperties.class new file mode 100644 index 0000000..e1932ec Binary files /dev/null and b/target/classes/com/subsidy/common/configure/AliyunSmsProperties.class differ diff --git a/target/classes/com/subsidy/common/configure/MyTomcat$GwsTomcatConnectionCustomizer.class b/target/classes/com/subsidy/common/configure/MyTomcat$GwsTomcatConnectionCustomizer.class new file mode 100644 index 0000000..cf3bc30 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/MyTomcat$GwsTomcatConnectionCustomizer.class differ diff --git a/target/classes/com/subsidy/common/configure/MyTomcat.class b/target/classes/com/subsidy/common/configure/MyTomcat.class new file mode 100644 index 0000000..733cc83 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/MyTomcat.class differ diff --git a/target/classes/com/subsidy/common/configure/MybatisPlusConfig.class b/target/classes/com/subsidy/common/configure/MybatisPlusConfig.class new file mode 100644 index 0000000..bd54fa0 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/MybatisPlusConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/PolyvConfig.class b/target/classes/com/subsidy/common/configure/PolyvConfig.class new file mode 100644 index 0000000..2711b0f Binary files /dev/null and b/target/classes/com/subsidy/common/configure/PolyvConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/QXueYouConfig.class b/target/classes/com/subsidy/common/configure/QXueYouConfig.class new file mode 100644 index 0000000..d113eed Binary files /dev/null and b/target/classes/com/subsidy/common/configure/QXueYouConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/RedisConfig.class b/target/classes/com/subsidy/common/configure/RedisConfig.class new file mode 100644 index 0000000..9e74e3c Binary files /dev/null and b/target/classes/com/subsidy/common/configure/RedisConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/RemoteProperties.class b/target/classes/com/subsidy/common/configure/RemoteProperties.class new file mode 100644 index 0000000..5be7af1 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/RemoteProperties.class differ diff --git a/target/classes/com/subsidy/common/configure/RenSheConfig.class b/target/classes/com/subsidy/common/configure/RenSheConfig.class new file mode 100644 index 0000000..d3b5c52 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/RenSheConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class b/target/classes/com/subsidy/common/configure/RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class new file mode 100644 index 0000000..1cad572 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class differ diff --git a/target/classes/com/subsidy/common/configure/RestTemplateConfig.class b/target/classes/com/subsidy/common/configure/RestTemplateConfig.class new file mode 100644 index 0000000..4c0c960 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/RestTemplateConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/SubsidyConfig.class b/target/classes/com/subsidy/common/configure/SubsidyConfig.class new file mode 100644 index 0000000..1c514fe Binary files /dev/null and b/target/classes/com/subsidy/common/configure/SubsidyConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/SwaggerConfig.class b/target/classes/com/subsidy/common/configure/SwaggerConfig.class new file mode 100644 index 0000000..dc4ec39 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/SwaggerConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/VODConfig.class b/target/classes/com/subsidy/common/configure/VODConfig.class new file mode 100644 index 0000000..be9790a Binary files /dev/null and b/target/classes/com/subsidy/common/configure/VODConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/WebConfig.class b/target/classes/com/subsidy/common/configure/WebConfig.class new file mode 100644 index 0000000..137d389 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/WebConfig.class differ diff --git a/target/classes/com/subsidy/common/configure/WebLogAspect.class b/target/classes/com/subsidy/common/configure/WebLogAspect.class new file mode 100644 index 0000000..ff990db Binary files /dev/null and b/target/classes/com/subsidy/common/configure/WebLogAspect.class differ diff --git a/target/classes/com/subsidy/common/configure/WechatConfig.class b/target/classes/com/subsidy/common/configure/WechatConfig.class new file mode 100644 index 0000000..f3e3ba3 Binary files /dev/null and b/target/classes/com/subsidy/common/configure/WechatConfig.class differ diff --git a/target/classes/com/subsidy/common/constant/AttendanceConstant.class b/target/classes/com/subsidy/common/constant/AttendanceConstant.class new file mode 100644 index 0000000..b9a5d91 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/AttendanceConstant.class differ diff --git a/target/classes/com/subsidy/common/constant/Code.class b/target/classes/com/subsidy/common/constant/Code.class new file mode 100644 index 0000000..eba1935 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/Code.class differ diff --git a/target/classes/com/subsidy/common/constant/CourseNotification.class b/target/classes/com/subsidy/common/constant/CourseNotification.class new file mode 100644 index 0000000..5a6cc97 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/CourseNotification.class differ diff --git a/target/classes/com/subsidy/common/constant/MemberType.class b/target/classes/com/subsidy/common/constant/MemberType.class new file mode 100644 index 0000000..2867ca8 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/MemberType.class differ diff --git a/target/classes/com/subsidy/common/constant/Platform.class b/target/classes/com/subsidy/common/constant/Platform.class new file mode 100644 index 0000000..407e2b8 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/Platform.class differ diff --git a/target/classes/com/subsidy/common/constant/ProjectReview.class b/target/classes/com/subsidy/common/constant/ProjectReview.class new file mode 100644 index 0000000..050bdd8 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/ProjectReview.class differ diff --git a/target/classes/com/subsidy/common/constant/ProjectSchedule.class b/target/classes/com/subsidy/common/constant/ProjectSchedule.class new file mode 100644 index 0000000..fa7662e Binary files /dev/null and b/target/classes/com/subsidy/common/constant/ProjectSchedule.class differ diff --git a/target/classes/com/subsidy/common/constant/ProjectStatus.class b/target/classes/com/subsidy/common/constant/ProjectStatus.class new file mode 100644 index 0000000..9c34111 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/ProjectStatus.class differ diff --git a/target/classes/com/subsidy/common/constant/ProjectTrack.class b/target/classes/com/subsidy/common/constant/ProjectTrack.class new file mode 100644 index 0000000..02aec0e Binary files /dev/null and b/target/classes/com/subsidy/common/constant/ProjectTrack.class differ diff --git a/target/classes/com/subsidy/common/constant/ProjectType.class b/target/classes/com/subsidy/common/constant/ProjectType.class new file mode 100644 index 0000000..af0589c Binary files /dev/null and b/target/classes/com/subsidy/common/constant/ProjectType.class differ diff --git a/target/classes/com/subsidy/common/constant/Role.class b/target/classes/com/subsidy/common/constant/Role.class new file mode 100644 index 0000000..90ceb7c Binary files /dev/null and b/target/classes/com/subsidy/common/constant/Role.class differ diff --git a/target/classes/com/subsidy/common/constant/SMSTemplate.class b/target/classes/com/subsidy/common/constant/SMSTemplate.class new file mode 100644 index 0000000..a530177 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/SMSTemplate.class differ diff --git a/target/classes/com/subsidy/common/constant/SmsCode.class b/target/classes/com/subsidy/common/constant/SmsCode.class new file mode 100644 index 0000000..13aa37b Binary files /dev/null and b/target/classes/com/subsidy/common/constant/SmsCode.class differ diff --git a/target/classes/com/subsidy/common/constant/VodConstant.class b/target/classes/com/subsidy/common/constant/VodConstant.class new file mode 100644 index 0000000..842305b Binary files /dev/null and b/target/classes/com/subsidy/common/constant/VodConstant.class differ diff --git a/target/classes/com/subsidy/common/constant/WxConstant.class b/target/classes/com/subsidy/common/constant/WxConstant.class new file mode 100644 index 0000000..2cd0238 Binary files /dev/null and b/target/classes/com/subsidy/common/constant/WxConstant.class differ diff --git a/target/classes/com/subsidy/common/exception/GlobalExceptionHandler.class b/target/classes/com/subsidy/common/exception/GlobalExceptionHandler.class new file mode 100644 index 0000000..819e745 Binary files /dev/null and b/target/classes/com/subsidy/common/exception/GlobalExceptionHandler.class differ diff --git a/target/classes/com/subsidy/common/exception/HttpException.class b/target/classes/com/subsidy/common/exception/HttpException.class new file mode 100644 index 0000000..34f28c9 Binary files /dev/null and b/target/classes/com/subsidy/common/exception/HttpException.class differ diff --git a/target/classes/com/subsidy/common/handler/MetaHandler.class b/target/classes/com/subsidy/common/handler/MetaHandler.class new file mode 100644 index 0000000..4c735cf Binary files /dev/null and b/target/classes/com/subsidy/common/handler/MetaHandler.class differ diff --git a/target/classes/com/subsidy/common/interceptor/AuthenticationInterceptor.class b/target/classes/com/subsidy/common/interceptor/AuthenticationInterceptor.class new file mode 100644 index 0000000..d9eaa40 Binary files /dev/null and b/target/classes/com/subsidy/common/interceptor/AuthenticationInterceptor.class differ diff --git a/target/classes/com/subsidy/common/interceptor/LoginRequired.class b/target/classes/com/subsidy/common/interceptor/LoginRequired.class new file mode 100644 index 0000000..ad87b6f Binary files /dev/null and b/target/classes/com/subsidy/common/interceptor/LoginRequired.class differ diff --git a/target/classes/com/subsidy/common/interceptor/TimeRequired.class b/target/classes/com/subsidy/common/interceptor/TimeRequired.class new file mode 100644 index 0000000..f8311fc Binary files /dev/null and b/target/classes/com/subsidy/common/interceptor/TimeRequired.class differ diff --git a/target/classes/com/subsidy/controller/AdministerController.class b/target/classes/com/subsidy/controller/AdministerController.class new file mode 100644 index 0000000..f9f01b8 Binary files /dev/null and b/target/classes/com/subsidy/controller/AdministerController.class differ diff --git a/target/classes/com/subsidy/mapper/AdministerMapper.class b/target/classes/com/subsidy/mapper/AdministerMapper.class new file mode 100644 index 0000000..956146a Binary files /dev/null and b/target/classes/com/subsidy/mapper/AdministerMapper.class differ diff --git a/target/classes/com/subsidy/model/AdministerDO.class b/target/classes/com/subsidy/model/AdministerDO.class new file mode 100644 index 0000000..28bdbff Binary files /dev/null and b/target/classes/com/subsidy/model/AdministerDO.class differ diff --git a/target/classes/com/subsidy/service/AdministerService.class b/target/classes/com/subsidy/service/AdministerService.class new file mode 100644 index 0000000..63f922c Binary files /dev/null and b/target/classes/com/subsidy/service/AdministerService.class differ diff --git a/target/classes/com/subsidy/service/impl/AdministerServiceImpl.class b/target/classes/com/subsidy/service/impl/AdministerServiceImpl.class new file mode 100644 index 0000000..6552354 Binary files /dev/null and b/target/classes/com/subsidy/service/impl/AdministerServiceImpl.class differ diff --git a/target/classes/com/subsidy/util/ActivityDetectionUtils.class b/target/classes/com/subsidy/util/ActivityDetectionUtils.class new file mode 100644 index 0000000..bbb116c Binary files /dev/null and b/target/classes/com/subsidy/util/ActivityDetectionUtils.class differ diff --git a/target/classes/com/subsidy/util/AliyunSmsUtil.class b/target/classes/com/subsidy/util/AliyunSmsUtil.class new file mode 100644 index 0000000..2b3a692 Binary files /dev/null and b/target/classes/com/subsidy/util/AliyunSmsUtil.class differ diff --git a/target/classes/com/subsidy/util/Base64Util.class b/target/classes/com/subsidy/util/Base64Util.class new file mode 100644 index 0000000..f509e5e Binary files /dev/null and b/target/classes/com/subsidy/util/Base64Util.class differ diff --git a/target/classes/com/subsidy/util/BaseModel.class b/target/classes/com/subsidy/util/BaseModel.class new file mode 100644 index 0000000..a39319e Binary files /dev/null and b/target/classes/com/subsidy/util/BaseModel.class differ diff --git a/target/classes/com/subsidy/util/CodeGenerator$1.class b/target/classes/com/subsidy/util/CodeGenerator$1.class new file mode 100644 index 0000000..3d01de4 Binary files /dev/null and b/target/classes/com/subsidy/util/CodeGenerator$1.class differ diff --git a/target/classes/com/subsidy/util/CodeGenerator$2.class b/target/classes/com/subsidy/util/CodeGenerator$2.class new file mode 100644 index 0000000..515afaa Binary files /dev/null and b/target/classes/com/subsidy/util/CodeGenerator$2.class differ diff --git a/target/classes/com/subsidy/util/CodeGenerator.class b/target/classes/com/subsidy/util/CodeGenerator.class new file mode 100644 index 0000000..04d98f5 Binary files /dev/null and b/target/classes/com/subsidy/util/CodeGenerator.class differ diff --git a/target/classes/com/subsidy/util/ConstantUtils.class b/target/classes/com/subsidy/util/ConstantUtils.class new file mode 100644 index 0000000..daa7696 Binary files /dev/null and b/target/classes/com/subsidy/util/ConstantUtils.class differ diff --git a/target/classes/com/subsidy/util/DateFormatUtil.class b/target/classes/com/subsidy/util/DateFormatUtil.class new file mode 100644 index 0000000..5eeaa8e Binary files /dev/null and b/target/classes/com/subsidy/util/DateFormatUtil.class differ diff --git a/target/classes/com/subsidy/util/DudaoConstant.class b/target/classes/com/subsidy/util/DudaoConstant.class new file mode 100644 index 0000000..ffa1340 Binary files /dev/null and b/target/classes/com/subsidy/util/DudaoConstant.class differ diff --git a/target/classes/com/subsidy/util/EhCacheUtil.class b/target/classes/com/subsidy/util/EhCacheUtil.class new file mode 100644 index 0000000..51ab06e Binary files /dev/null and b/target/classes/com/subsidy/util/EhCacheUtil.class differ diff --git a/target/classes/com/subsidy/util/EncryptString.class b/target/classes/com/subsidy/util/EncryptString.class new file mode 100644 index 0000000..cffc1b2 Binary files /dev/null and b/target/classes/com/subsidy/util/EncryptString.class differ diff --git a/target/classes/com/subsidy/util/ExcelFormatUtils.class b/target/classes/com/subsidy/util/ExcelFormatUtils.class new file mode 100644 index 0000000..2fea93d Binary files /dev/null and b/target/classes/com/subsidy/util/ExcelFormatUtils.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil$1.class b/target/classes/com/subsidy/util/HttpUtil$1.class new file mode 100644 index 0000000..8b4b147 Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil$1.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil$2.class b/target/classes/com/subsidy/util/HttpUtil$2.class new file mode 100644 index 0000000..ebbcc43 Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil$2.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil$3.class b/target/classes/com/subsidy/util/HttpUtil$3.class new file mode 100644 index 0000000..f5cee6b Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil$3.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil$4.class b/target/classes/com/subsidy/util/HttpUtil$4.class new file mode 100644 index 0000000..a30b377 Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil$4.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil$DataParse.class b/target/classes/com/subsidy/util/HttpUtil$DataParse.class new file mode 100644 index 0000000..6a8ad07 Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil$DataParse.class differ diff --git a/target/classes/com/subsidy/util/HttpUtil.class b/target/classes/com/subsidy/util/HttpUtil.class new file mode 100644 index 0000000..25aa442 Binary files /dev/null and b/target/classes/com/subsidy/util/HttpUtil.class differ diff --git a/target/classes/com/subsidy/util/IpAddressUtil.class b/target/classes/com/subsidy/util/IpAddressUtil.class new file mode 100644 index 0000000..58378eb Binary files /dev/null and b/target/classes/com/subsidy/util/IpAddressUtil.class differ diff --git a/target/classes/com/subsidy/util/JwtUtil.class b/target/classes/com/subsidy/util/JwtUtil.class new file mode 100644 index 0000000..05dbf93 Binary files /dev/null and b/target/classes/com/subsidy/util/JwtUtil.class differ diff --git a/target/classes/com/subsidy/util/Localstorage.class b/target/classes/com/subsidy/util/Localstorage.class new file mode 100644 index 0000000..bf95a66 Binary files /dev/null and b/target/classes/com/subsidy/util/Localstorage.class differ diff --git a/target/classes/com/subsidy/util/MathUtil.class b/target/classes/com/subsidy/util/MathUtil.class new file mode 100644 index 0000000..2ca2d6a Binary files /dev/null and b/target/classes/com/subsidy/util/MathUtil.class differ diff --git a/target/classes/com/subsidy/util/MyBeanUtils.class b/target/classes/com/subsidy/util/MyBeanUtils.class new file mode 100644 index 0000000..71b19c1 Binary files /dev/null and b/target/classes/com/subsidy/util/MyBeanUtils.class differ diff --git a/target/classes/com/subsidy/util/MyStringUtils.class b/target/classes/com/subsidy/util/MyStringUtils.class new file mode 100644 index 0000000..6dcae89 Binary files /dev/null and b/target/classes/com/subsidy/util/MyStringUtils.class differ diff --git a/target/classes/com/subsidy/util/OSSUtils.class b/target/classes/com/subsidy/util/OSSUtils.class new file mode 100644 index 0000000..7fd1721 Binary files /dev/null and b/target/classes/com/subsidy/util/OSSUtils.class differ diff --git a/target/classes/com/subsidy/util/PDFUtil.class b/target/classes/com/subsidy/util/PDFUtil.class new file mode 100644 index 0000000..6148709 Binary files /dev/null and b/target/classes/com/subsidy/util/PDFUtil.class differ diff --git a/target/classes/com/subsidy/util/PageHelper.class b/target/classes/com/subsidy/util/PageHelper.class new file mode 100644 index 0000000..f04693f Binary files /dev/null and b/target/classes/com/subsidy/util/PageHelper.class differ diff --git a/target/classes/com/subsidy/util/PolyvUtils.class b/target/classes/com/subsidy/util/PolyvUtils.class new file mode 100644 index 0000000..90df7ce Binary files /dev/null and b/target/classes/com/subsidy/util/PolyvUtils.class differ diff --git a/target/classes/com/subsidy/util/RandomUtil.class b/target/classes/com/subsidy/util/RandomUtil.class new file mode 100644 index 0000000..627b2fa Binary files /dev/null and b/target/classes/com/subsidy/util/RandomUtil.class differ diff --git a/target/classes/com/subsidy/util/RedisUtil.class b/target/classes/com/subsidy/util/RedisUtil.class new file mode 100644 index 0000000..0aa7ee1 Binary files /dev/null and b/target/classes/com/subsidy/util/RedisUtil.class differ diff --git a/target/classes/com/subsidy/util/RenSheJuConstant.class b/target/classes/com/subsidy/util/RenSheJuConstant.class new file mode 100644 index 0000000..dd7cf9b Binary files /dev/null and b/target/classes/com/subsidy/util/RenSheJuConstant.class differ diff --git a/target/classes/com/subsidy/util/ResultMode.class b/target/classes/com/subsidy/util/ResultMode.class new file mode 100644 index 0000000..1e45856 Binary files /dev/null and b/target/classes/com/subsidy/util/ResultMode.class differ diff --git a/target/classes/com/subsidy/util/SMSUtils.class b/target/classes/com/subsidy/util/SMSUtils.class new file mode 100644 index 0000000..b09f73b Binary files /dev/null and b/target/classes/com/subsidy/util/SMSUtils.class differ diff --git a/target/classes/com/subsidy/util/SecretUtils.class b/target/classes/com/subsidy/util/SecretUtils.class new file mode 100644 index 0000000..4a30ea0 Binary files /dev/null and b/target/classes/com/subsidy/util/SecretUtils.class differ diff --git a/target/classes/com/subsidy/util/ShehuihuaConstant.class b/target/classes/com/subsidy/util/ShehuihuaConstant.class new file mode 100644 index 0000000..2ce1461 Binary files /dev/null and b/target/classes/com/subsidy/util/ShehuihuaConstant.class differ diff --git a/target/classes/com/subsidy/util/Signature.class b/target/classes/com/subsidy/util/Signature.class new file mode 100644 index 0000000..12fbea2 Binary files /dev/null and b/target/classes/com/subsidy/util/Signature.class differ diff --git a/target/classes/com/subsidy/util/TestMain.class b/target/classes/com/subsidy/util/TestMain.class new file mode 100644 index 0000000..56a3273 Binary files /dev/null and b/target/classes/com/subsidy/util/TestMain.class differ diff --git a/target/classes/com/subsidy/util/VodUtil.class b/target/classes/com/subsidy/util/VodUtil.class new file mode 100644 index 0000000..7091afa Binary files /dev/null and b/target/classes/com/subsidy/util/VodUtil.class differ diff --git a/target/classes/com/subsidy/util/excel/ExcelColumn.class b/target/classes/com/subsidy/util/excel/ExcelColumn.class new file mode 100644 index 0000000..286e2ff Binary files /dev/null and b/target/classes/com/subsidy/util/excel/ExcelColumn.class differ diff --git a/target/classes/com/subsidy/util/excel/ExcelColumnUtil.class b/target/classes/com/subsidy/util/excel/ExcelColumnUtil.class new file mode 100644 index 0000000..ab1fd30 Binary files /dev/null and b/target/classes/com/subsidy/util/excel/ExcelColumnUtil.class differ diff --git a/target/classes/com/subsidy/util/excel/ExcelUtil.class b/target/classes/com/subsidy/util/excel/ExcelUtil.class new file mode 100644 index 0000000..eb60abe Binary files /dev/null and b/target/classes/com/subsidy/util/excel/ExcelUtil.class differ diff --git a/target/classes/com/subsidy/util/tree/Node.class b/target/classes/com/subsidy/util/tree/Node.class new file mode 100644 index 0000000..8f73552 Binary files /dev/null and b/target/classes/com/subsidy/util/tree/Node.class differ diff --git a/target/classes/com/subsidy/util/tree/NumberTree.class b/target/classes/com/subsidy/util/tree/NumberTree.class new file mode 100644 index 0000000..70fc55b Binary files /dev/null and b/target/classes/com/subsidy/util/tree/NumberTree.class differ diff --git a/target/classes/com/subsidy/util/tree/SerialNumber.class b/target/classes/com/subsidy/util/tree/SerialNumber.class new file mode 100644 index 0000000..ae044aa Binary files /dev/null and b/target/classes/com/subsidy/util/tree/SerialNumber.class differ diff --git a/target/classes/ehcache.xml b/target/classes/ehcache.xml new file mode 100644 index 0000000..7a297bc --- /dev/null +++ b/target/classes/ehcache.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/classes/logback-spring.xml b/target/classes/logback-spring.xml new file mode 100644 index 0000000..0006c90 --- /dev/null +++ b/target/classes/logback-spring.xml @@ -0,0 +1,74 @@ + + + + + ${APP_NAME} + + + + + info + + + %d [%t] %5p %c:%L - %m%n + UTF-8 + + + + ${LOG_PATH}${APP_NAME}-info.log + + %d [%t] %5p %c:%L - %m%n + + + + 100MB + + ${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz + + 30 + + + + ${LOG_PATH}${APP_NAME}-error.log + + error + + + %d [%t] %5p %c:%L - %m%n + + + + 256MB + + ${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz + + 180 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/classes/mapper/AdministerMapper.xml b/target/classes/mapper/AdministerMapper.xml new file mode 100644 index 0000000..3eecbc1 --- /dev/null +++ b/target/classes/mapper/AdministerMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + create_date, + update_date, + delete_date, + id, telephone, account_name, password, company_id, labor_id, academy_id, college_id, user_name, img, status, role, last_role, remark, openid, work_no, first_login + + + diff --git a/target/classes/mybatis-plus.properties b/target/classes/mybatis-plus.properties new file mode 100644 index 0000000..04844e3 --- /dev/null +++ b/target/classes/mybatis-plus.properties @@ -0,0 +1,12 @@ +# 此处为本项目src所在路径(代码生成器输出路径) +outputDir=/src/main/java +author=Tuyp +# 父的包名 +setParent=com.subsidy +# mapper.xml文件生成路径 +mapperPath=/src/main/resources/mapper/ +# 数据库地址 +url=jdbc:mysql://116.62.57.92:3306/subsidy_new?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true +driverName=com.mysql.cj.jdbc.Driver +userName=devloper +password=dev@1553$ \ No newline at end of file diff --git a/target/classes/mybatis.xml b/target/classes/mybatis.xml new file mode 100644 index 0000000..f4495b4 --- /dev/null +++ b/target/classes/mybatis.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/target/classes/templates/controller.java.ftl b/target/classes/templates/controller.java.ftl new file mode 100644 index 0000000..28e7070 --- /dev/null +++ b/target/classes/templates/controller.java.ftl @@ -0,0 +1,41 @@ +package ${package.Controller}; + + +import org.springframework.web.bind.annotation.RequestMapping; + +<#if restControllerStyle> +import org.springframework.web.bind.annotation.RestController; +<#else> +import org.springframework.stereotype.Controller; + +<#if superControllerClassPackage??> +import ${superControllerClassPackage}; + +import io.swagger.annotations.Api; + +/** + *

+ * ${table.comment!} 前端控制器 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if restControllerStyle> +@RestController +@Api(tags = "${table.comment!}") +<#else> +@Controller + +@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}") +<#if kotlin> +class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}() +<#else> +<#if superControllerClass??> +public class ${table.controllerName} extends ${superControllerClass} { +<#else> +public class ${table.controllerName} { + + +} + diff --git a/target/classes/templates/entity.java.ftl b/target/classes/templates/entity.java.ftl new file mode 100644 index 0000000..c63bcc4 --- /dev/null +++ b/target/classes/templates/entity.java.ftl @@ -0,0 +1,156 @@ +package ${package.Entity}; + +<#list table.importPackages as pkg> +import ${pkg}; + +<#if swagger2> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +<#if entityLombokModel> +import lombok.Data; +import lombok.EqualsAndHashCode; + <#if chainModel> +import lombok.experimental.Accessors; + + + +/** + *

+ * ${table.comment!} + *

+ * + * @author ${author} + * @since ${date} + */ +<#if entityLombokModel> +@Data + <#if superEntityClass??> +@EqualsAndHashCode(callSuper = true) + <#else> +@EqualsAndHashCode(callSuper = false) + + <#if chainModel> +@Accessors(chain = true) + + +<#if table.convert> +@TableName("${table.name}") + +<#if swagger2> +@ApiModel(value="${entity}对象", description="${table.comment!}") + +<#if superEntityClass??> +public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}> { +<#elseif activeRecord> +public class ${entity} extends Model<${entity}> { +<#else> +public class ${entity} implements Serializable { + + +<#if entitySerialVersionUID> + private static final long serialVersionUID = 1L; + +<#-- ---------- BEGIN 字段循环遍历 ----------> +<#list table.fields as field> + <#if field.keyFlag> + <#assign keyPropertyName="${field.propertyName}"/> + + + <#if field.comment!?length gt 0> + <#if swagger2> + @ApiModelProperty(value = "${field.comment}") + <#else> + /** + * ${field.comment} + */ + + + <#if field.keyFlag> + <#-- 主键 --> + <#if field.keyIdentityFlag> + @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO) + <#elseif idType??> + @TableId(value = "${field.annotationColumnName}", type = IdType.${idType}) + <#elseif field.convert> + @TableId("${field.annotationColumnName}") + + <#-- 普通字段 --> + <#elseif field.fill??> + <#-- ----- 存在字段填充设置 -----> + <#if field.convert> + @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) + <#else> + @TableField(fill = FieldFill.${field.fill}) + + <#elseif field.convert> + @TableField("${field.annotationColumnName}") + + <#-- 乐观锁注解 --> + <#if (versionFieldName!"") == field.name> + @Version + + <#-- 逻辑删除注解 --> + <#if (logicDeleteFieldName!"") == field.name> + @TableLogic + + private ${field.propertyType} ${field.propertyName}; + +<#------------ END 字段循环遍历 ----------> + +<#if !entityLombokModel> + <#list table.fields as field> + <#if field.propertyType == "boolean"> + <#assign getprefix="is"/> + <#else> + <#assign getprefix="get"/> + + public ${field.propertyType} ${getprefix}${field.capitalName}() { + return ${field.propertyName}; + } + + <#if chainModel> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <#else> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + + this.${field.propertyName} = ${field.propertyName}; + <#if chainModel> + return this; + + } + + + +<#if entityColumnConstant> + <#list table.fields as field> + public static final String ${field.name?upper_case} = "${field.name}"; + + + +<#if activeRecord> + @Override + protected Serializable pkVal() { + <#if keyPropertyName??> + return this.${keyPropertyName}; + <#else> + return null; + + } + + +<#if !entityLombokModel> + @Override + public String toString() { + return "${entity}{" + + <#list table.fields as field> + <#if field_index==0> + "${field.propertyName}=" + ${field.propertyName} + + <#else> + ", ${field.propertyName}=" + ${field.propertyName} + + + + "}"; + } + +} diff --git a/target/classes/templates/mapper.java.ftl b/target/classes/templates/mapper.java.ftl new file mode 100644 index 0000000..be08c59 --- /dev/null +++ b/target/classes/templates/mapper.java.ftl @@ -0,0 +1,22 @@ +package ${package.Mapper}; + +import ${package.Entity}.${entity}; +import ${superMapperClassPackage}; +import org.springframework.stereotype.Repository; + +/** + *

+ * ${table.comment!} Mapper 接口 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if kotlin> +interface ${table.mapperName} : ${superMapperClass}<${entity}> +<#else> + @Repository +public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { + +} + diff --git a/target/classes/templates/mapper.xml.ftl b/target/classes/templates/mapper.xml.ftl new file mode 100644 index 0000000..04c2359 --- /dev/null +++ b/target/classes/templates/mapper.xml.ftl @@ -0,0 +1,39 @@ + + + + +<#if enableCache> + + + + +<#if baseResultMap> + + +<#list table.fields as field> +<#if field.keyFlag><#--生成主键排在第一位--> + + + +<#list table.commonFields as field><#--生成公共字段 --> + + +<#list table.fields as field> +<#if !field.keyFlag><#--生成普通字段 --> + + + + + + +<#if baseColumnList> + + +<#list table.commonFields as field> + ${field.columnName}, + + ${table.fieldNames} + + + + diff --git a/target/classes/templates/service.java.ftl b/target/classes/templates/service.java.ftl new file mode 100644 index 0000000..e3232f3 --- /dev/null +++ b/target/classes/templates/service.java.ftl @@ -0,0 +1,20 @@ +package ${package.Service}; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; + +/** + *

+ * ${table.comment!} 服务类 + *

+ * + * @author ${author} + * @since ${date} + */ +<#if kotlin> +interface ${table.serviceName} : ${superServiceClass}<${entity}> +<#else> +public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { + +} + diff --git a/target/classes/templates/serviceImpl.java.ftl b/target/classes/templates/serviceImpl.java.ftl new file mode 100644 index 0000000..aeebd14 --- /dev/null +++ b/target/classes/templates/serviceImpl.java.ftl @@ -0,0 +1,26 @@ +package ${package.ServiceImpl}; + +import ${package.Entity}.${entity}; +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import ${superServiceImplClassPackage}; +import org.springframework.stereotype.Service; + +/** + *

+ * ${table.comment!} 服务实现类 + *

+ * + * @author ${author} + * @since ${date} + */ +@Service +<#if kotlin> +open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { + +} +<#else> +public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { + +} + diff --git a/target/ecnutracks.jar b/target/ecnutracks.jar new file mode 100644 index 0000000..c7a9441 Binary files /dev/null and b/target/ecnutracks.jar differ diff --git a/target/ecnutracks.jar.original b/target/ecnutracks.jar.original new file mode 100644 index 0000000..44e86dd Binary files /dev/null and b/target/ecnutracks.jar.original differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..25cf287 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +version=0.0.1 +groupId=com.subsidy +artifactId=subsidy diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..5299906 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,236 @@ +com\subsidy\util\BaseModel.class +com\subsidy\common\constant\CourseNotification.class +com\subsidy\dto\project\DataOverviewDTO.class +com\subsidy\service\CollegeFileService.class +com\subsidy\util\JwtUtil.class +com\subsidy\dto\project\ProjectCollegeListDTO.class +com\subsidy\util\HttpUtil$2.class +com\subsidy\service\impl\CollegesDictServiceImpl.class +com\subsidy\controller\MatchDictController.class +com\subsidy\model\PermissionsDO.class +com\subsidy\vo\project\ProjectPageVO.class +com\subsidy\controller\TeacherController.class +com\subsidy\mapper\ProjectMembersMapper.class +com\subsidy\controller\ProjectJudgeController.class +com\subsidy\common\configure\MyTomcat.class +com\subsidy\common\configure\RemoteProperties.class +com\subsidy\service\PermissionsService.class +com\subsidy\dto\project\TeamMemberDTO.class +com\subsidy\util\RandomUtil.class +com\subsidy\vo\judge\ProjectReviewVO.class +com\subsidy\vo\project\ProjectDataOverview.class +com\subsidy\dto\project\ExportTeachListVO.class +com\subsidy\service\impl\MatchDictServiceImpl.class +com\subsidy\util\Base64Util.class +com\subsidy\vo\college\ExportSchoolProjectSummaryVO.class +com\subsidy\service\MatchDictService.class +com\subsidy\util\ExcelFormatUtils.class +com\subsidy\dto\projectJudge\ImportJudge.class +com\subsidy\util\CodeGenerator.class +com\subsidy\vo\projectReviewPeriod\ProjectReviewPeriodVO.class +com\subsidy\dto\college\GetCollegesListDTO.class +com\subsidy\util\excel\ExcelUtil.class +com\subsidy\dto\project\UploadVodsDTO.class +com\subsidy\util\HttpUtil$DataParse.class +com\subsidy\model\SmsVerifyCodeDO.class +com\subsidy\vo\project\VocationalReviewNumVO.class +com\subsidy\dto\teacher\RegisterDTO.class +com\subsidy\util\CodeGenerator$2.class +com\subsidy\vo\review\ReMatchReviewVO.class +com\subsidy\mapper\ProjectMapper.class +com\subsidy\util\HttpUtil$1.class +com\subsidy\model\ProjectDO.class +com\subsidy\dto\project\EditStatusDTO.class +com\subsidy\util\MyBeanUtils.class +com\subsidy\dto\project\ExportProjectDTO.class +com\subsidy\util\Signature.class +com\subsidy\util\SMSUtils.class +com\subsidy\model\CollegeFileDO.class +com\subsidy\vo\college\RecentFileVO.class +com\subsidy\dto\review\ProjectReviewDTO.class +com\subsidy\dto\review\ProjectReviewScoreDTO.class +com\subsidy\common\constant\ProjectTrack.class +com\subsidy\vo\project\ProjectJudgeVO.class +com\subsidy\vo\project\UploadVodsVO.class +com\subsidy\service\impl\ProjectMembersServiceImpl.class +com\subsidy\vo\ExcelFieldVO.class +com\subsidy\model\ProjectJudgeDO.class +com\subsidy\dto\project\UpdateProjectDTO.class +com\subsidy\dto\project\MentorDTO.class +com\subsidy\service\ProjectService.class +com\subsidy\vo\project\VocationalNumVO.class +com\subsidy\common\configure\WebLogAspect.class +com\subsidy\controller\SmsVerifyCodeController.class +com\subsidy\controller\PermissionsController.class +com\subsidy\service\ProjectConsultService.class +com\subsidy\controller\AdministerController.class +com\subsidy\util\RenSheJuConstant.class +com\subsidy\common\configure\QXueYouConfig.class +com\subsidy\dto\oss\GetSecretVO.class +com\subsidy\util\MyStringUtils.class +com\subsidy\service\ProjectMembersService.class +com\subsidy\model\CollegesDictDO.class +com\subsidy\vo\college\CollegesVO.class +com\subsidy\mapper\AdministerMapper.class +com\subsidy\vo\oss\UploadFileVO.class +com\subsidy\util\ActivityDetectionUtils.class +com\subsidy\mapper\PermissionsMapper.class +com\subsidy\common\configure\WechatConfig.class +com\subsidy\vo\college\MatchCollegeVodsVO.class +com\subsidy\util\excel\ExcelColumnUtil.class +com\subsidy\util\HttpUtil.class +com\subsidy\model\ProjectReviewDO.class +com\subsidy\common\configure\SubsidyConfig.class +com\subsidy\vo\review\SchoolReviewVO.class +com\subsidy\vo\review\SendNoticeVO.class +com\subsidy\vo\project\RecentVodVO.class +com\subsidy\util\SecretUtils.class +com\subsidy\vo\project\ReviewListVO.class +com\subsidy\dto\period\ProjectReviewPeriodDTO.class +com\subsidy\common\configure\MyTomcat$GwsTomcatConnectionCustomizer.class +com\subsidy\controller\ProjectController.class +com\subsidy\util\tree\Node.class +com\subsidy\dto\judge\ProjectJudgePageDTO.class +com\subsidy\dto\project\GetSeedTrackMatchPageDTO.class +com\subsidy\mapper\TeacherMapper.class +com\subsidy\util\ResultMode.class +com\subsidy\controller\MessageController.class +com\subsidy\common\RedisPrefixConstant.class +com\subsidy\vo\project\ProjectAssignNumVO.class +com\subsidy\vo\project\SignatureVO.class +com\subsidy\common\constant\Code.class +com\subsidy\common\ResponseVO.class +com\subsidy\dto\review\ReviewScoreDTO.class +com\subsidy\vo\project\SeedTrackProjectPageVO.class +com\subsidy\service\AdministerService.class +com\subsidy\service\impl\MessageServiceImpl.class +com\subsidy\common\ResponseData.class +com\subsidy\MeishuApplication.class +com\subsidy\model\TeacherDO.class +com\subsidy\service\ProjectReviewService.class +com\subsidy\common\constant\ProjectSchedule.class +com\subsidy\mapper\CollegeFileMapper.class +com\subsidy\dto\administer\AdministerPageDTO.class +com\subsidy\vo\review\FinalsReviewVO.class +com\subsidy\common\constant\ProjectType.class +com\subsidy\service\impl\ProjectReviewPeriodServiceImpl.class +com\subsidy\mapper\ProjectReviewPeriodMapper.class +com\subsidy\util\excel\ExcelColumn.class +com\subsidy\common\configure\RestTemplateConfig.class +com\subsidy\dto\college\FileManagementDTO.class +com\subsidy\dto\review\CancelReviewDTO.class +com\subsidy\util\ConstantUtils.class +com\subsidy\dto\match\SelectListPageDTO.class +com\subsidy\service\impl\TeacherServiceImpl.class +com\subsidy\common\constant\VodConstant.class +com\subsidy\service\ProjectJudgeService.class +com\subsidy\mapper\ProjectConsultMapper.class +com\subsidy\dto\teacher\LoginVO.class +com\subsidy\mapper\MessageMapper.class +com\subsidy\common\constant\AttendanceConstant.class +com\subsidy\dto\project\SeedTrackProjectNumDTO.class +META-INF\spring-configuration-metadata.json +com\subsidy\common\constant\WxConstant.class +com\subsidy\service\impl\ProjectJudgeServiceImpl.class +com\subsidy\common\exception\HttpException.class +com\subsidy\util\PageHelper.class +com\subsidy\vo\administer\PermissionVO.class +com\subsidy\dto\review\ProjectReviewPageDTO.class +com\subsidy\common\configure\RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class +com\subsidy\dto\review\SubmittedDTO.class +com\subsidy\model\ProjectReviewPeriodDO.class +com\subsidy\vo\college\FileManagementVO.class +com\subsidy\controller\ProjectReviewController.class +com\subsidy\common\configure\PolyvConfig.class +com\subsidy\util\DudaoConstant.class +com\subsidy\mapper\ProjectReviewMapper.class +com\subsidy\common\configure\MybatisPlusConfig.class +com\subsidy\controller\ProjectMembersController.class +com\subsidy\util\PDFUtil.class +com\subsidy\mapper\CollegesDictMapper.class +com\subsidy\common\exception\GlobalExceptionHandler.class +com\subsidy\dto\project\ProjectListPageDTO.class +com\subsidy\util\AliyunSmsUtil.class +com\subsidy\common\constant\MemberType.class +com\subsidy\vo\project\SeedTrackProjectDetailVO.class +com\subsidy\dto\project\MatchCollegeVodsDTO.class +com\subsidy\common\configure\RedisConfig.class +com\subsidy\vo\project\ProjectMemberVO.class +com\subsidy\model\AdministerDO.class +com\subsidy\vo\college\GetCollegeInfoVO.class +com\subsidy\common\constant\ProjectReview.class +com\subsidy\util\OSSUtils.class +com\subsidy\vo\project\OneProjectVO.class +com\subsidy\util\TestMain.class +com\subsidy\vo\college\CollegeInfoVO.class +com\subsidy\common\constant\Platform.class +com\subsidy\service\impl\ProjectConsultServiceImpl.class +com\subsidy\mapper\ProjectJudgeMapper.class +com\subsidy\mapper\SmsVerifyCodeMapper.class +com\subsidy\service\impl\AdministerServiceImpl.class +com\subsidy\service\impl\ProjectServiceImpl.class +com\subsidy\dto\review\SetReviewDTO.class +com\subsidy\common\constant\SmsCode.class +com\subsidy\controller\CollegesDictController.class +com\subsidy\service\impl\PermissionsServiceImpl.class +com\subsidy\dto\message\MessagePageDTO.class +com\subsidy\dto\project\VocationalProjectNum.class +com\subsidy\mapper\MatchDictMapper.class +com\subsidy\service\impl\CollegeFileServiceImpl.class +com\subsidy\service\SmsVerifyCodeService.class +com\subsidy\service\MessageService.class +com\subsidy\model\MessageDO.class +com\subsidy\common\configure\WebConfig.class +com\subsidy\controller\ProjectConsultController.class +com\subsidy\service\impl\SmsVerifyCodeServiceImpl.class +com\subsidy\dto\project\ExportConsultListVO.class +com\subsidy\service\CollegesDictService.class +com\subsidy\controller\OssController.class +com\subsidy\controller\ProjectReviewPeriodController.class +com\subsidy\common\configure\VODConfig.class +com\subsidy\common\interceptor\AuthenticationInterceptor.class +com\subsidy\vo\teacher\TeacherInfoVO.class +com\subsidy\model\MatchDictDO.class +com\subsidy\util\tree\NumberTree.class +com\subsidy\util\MathUtil.class +com\subsidy\util\PolyvUtils.class +com\subsidy\common\interceptor\LoginRequired.class +com\subsidy\util\IpAddressUtil.class +com\subsidy\dto\college\ExportCollegeDTO.class +com\subsidy\dto\project\GetVocationalProjectDetailDTO.class +com\subsidy\util\CodeGenerator$1.class +com\subsidy\common\constant\SMSTemplate.class +com\subsidy\common\ResponseVO$ResponseVOBuilder.class +com\subsidy\service\ProjectReviewPeriodService.class +com\subsidy\common\constant\Role.class +com\subsidy\vo\message\MessageVO.class +com\subsidy\model\ProjectMembersDO.class +com\subsidy\common\handler\MetaHandler.class +com\subsidy\dto\project\ReviewVocationalNumDTO.class +com\subsidy\util\EhCacheUtil.class +com\subsidy\util\ShehuihuaConstant.class +com\subsidy\dto\project\ApproveDTO.class +com\subsidy\util\EncryptString.class +com\subsidy\vo\administer\AdministerVO.class +com\subsidy\util\VodUtil.class +com\subsidy\common\constant\ProjectStatus.class +com\subsidy\dto\project\ReviewListDTO.class +com\subsidy\util\HttpUtil$4.class +com\subsidy\controller\CollegeFileController.class +com\subsidy\common\configure\AliyunSmsProperties.class +com\subsidy\dto\message\CreateMessageDTO.class +com\subsidy\util\DateFormatUtil.class +com\subsidy\vo\judge\ProjectJudgePageVO.class +com\subsidy\common\configure\RenSheConfig.class +com\subsidy\util\Localstorage.class +com\subsidy\vo\college\ExcelFieldVO.class +com\subsidy\model\ProjectConsultDO.class +com\subsidy\common\interceptor\TimeRequired.class +com\subsidy\util\tree\SerialNumber.class +com\subsidy\util\HttpUtil$3.class +com\subsidy\vo\judge\JudgeInfoVO.class +com\subsidy\vo\match\MatchDictVO.class +com\subsidy\service\TeacherService.class +com\subsidy\service\impl\ProjectReviewServiceImpl.class +com\subsidy\util\RedisUtil.class +com\subsidy\dto\administer\LoginDTO.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..e8858fe --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,228 @@ +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WebLogAspect.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\OSSUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\model\MessageDO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectSchedule.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectType.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\MatchDictController.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewScoreDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\TestMain.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\match\SelectListPageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectReviewController.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectMembersController.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectReviewDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\SecretUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\administer\AdministerPageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\CollegesDictMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\judge\ProjectJudgePageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\Localstorage.java +D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\AuthenticationInterceptor.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Role.java +D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\LoginRequired.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportProjectDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\model\CollegesDictDO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\SmsVerifyCodeService.java +D:\code\ecutrack\src\main\java\com\subsidy\util\PDFUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\administer\PermissionVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Code.java +D:\code\ecutrack\src\main\java\com\subsidy\util\IpAddressUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\model\MatchDictDO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\JudgeInfoVO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\FileManagementVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectTrack.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\CollegeFileMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\teacher\LoginVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectConsultService.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectJudgeController.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\CollegeFileServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectAssignNumVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RenSheConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\VocationalReviewNumVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelColumn.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\AliyunSmsUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectReviewPeriodController.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\TeacherServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\MatchDictMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\util\VodUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\util\MyStringUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\teacher\RegisterDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\MatchCollegeVodsVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\CollegesDictServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\BaseModel.java +D:\code\ecutrack\src\main\java\com\subsidy\util\SMSUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectReviewPeriodService.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectConsultServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\SubmittedDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\RedisUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\SetReviewDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SignatureVO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\review\SendNoticeVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\Signature.java +D:\code\ecutrack\src\main\java\com\subsidy\MeishuApplication.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\teacher\TeacherInfoVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectStatus.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\projectReviewPeriod\ProjectReviewPeriodVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\MatchDictServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\PolyvUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\util\HttpUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\MybatisPlusConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\SmsVerifyCodeServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\AdministerController.java +D:\code\ecutrack\src\main\java\com\subsidy\util\tree\Node.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ResultMode.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectJudgeService.java +D:\code\ecutrack\src\main\java\com\subsidy\service\PermissionsService.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\CollegeInfoVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\PermissionsServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectReviewPeriodServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\DudaoConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\PermissionsController.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectMembersService.java +D:\code\ecutrack\src\main\java\com\subsidy\common\handler\MetaHandler.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\college\GetCollegesListDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ActivityDetectionUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\common\exception\HttpException.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\college\FileManagementDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ShehuihuaConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\PermissionsMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportTeachListVO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportConsultListVO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\message\MessageVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\CollegesDictService.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectReview.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\projectJudge\ImportJudge.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\ProjectReviewVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\SubsidyConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\review\ReMatchReviewVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectReviewService.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\ExcelFieldVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\SmsCode.java +D:\code\ecutrack\src\main\java\com\subsidy\model\PermissionsDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\CodeGenerator.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\DataOverviewDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\PageHelper.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\RecentFileVO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\CollegeFileController.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RestTemplateConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\AttendanceConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\OssController.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectReviewMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\SeedTrackProjectNumDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\TeacherMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\CancelReviewDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\ExportSchoolProjectSummaryVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\SwaggerConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\util\RandomUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\QXueYouConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\college\ExportCollegeDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\VocationalProjectNum.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\administer\LoginDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\message\CreateMessageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\exception\GlobalExceptionHandler.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\SMSTemplate.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectMembersMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Platform.java +D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\TimeRequired.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\SmsVerifyCodeController.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectPageVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\RedisPrefixConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\common\ResponseVO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectJudgeMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\common\ResponseData.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ApproveDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\MentorDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\review\SchoolReviewVO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\UploadVodsVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\MathUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectMembersDO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectReviewPeriodDO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ProjectCollegeListDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ReviewScoreDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\MessageController.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\review\FinalsReviewVO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectMemberVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelColumnUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\GetCollegeInfoVO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\AdministerMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\PolyvConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SeedTrackProjectPageVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\JwtUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\model\SmsVerifyCodeDO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\message\MessagePageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WebConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectReviewPeriodMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\util\EhCacheUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\SmsVerifyCodeMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\RecentVodVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\MessageService.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SeedTrackProjectDetailVO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\UpdateProjectDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\GetSeedTrackMatchPageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ReviewListDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ProjectListPageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\period\ProjectReviewPeriodDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\ExcelFieldVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RemoteProperties.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\CourseNotification.java +D:\code\ecutrack\src\main\java\com\subsidy\service\CollegeFileService.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RedisConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ImageCheckUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\AliyunSmsProperties.java +D:\code\ecutrack\src\main\java\com\subsidy\model\CollegeFileDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\RenSheJuConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\oss\UploadFileVO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectController.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\MatchCollegeVodsDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\AdministerServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\MyBeanUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\oss\GetSecretVO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\Base64Util.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectReviewServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ReviewListVO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectConsultController.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\VocationalNumVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\MemberType.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\match\MatchDictVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectJudgeServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\WxConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\college\CollegesVO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\TeacherService.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ReviewVocationalNumDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectService.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectConsultDO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\MessageMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\service\MatchDictService.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectDataOverview.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\GetVocationalProjectDetailDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\model\AdministerDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\EncryptUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\OneProjectVO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\VODConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\TeacherController.java +D:\code\ecutrack\src\main\java\com\subsidy\util\tree\NumberTree.java +D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectJudgeDO.java +D:\code\ecutrack\src\main\java\com\subsidy\util\MongoUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\service\AdministerService.java +D:\code\ecutrack\src\main\java\com\subsidy\util\DateFormatUtil.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewPageDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectConsultMapper.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectJudgeVO.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\TeamMemberDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\MyTomcat.java +D:\code\ecutrack\src\main\java\com\subsidy\model\TeacherDO.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\MessageServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ConstantUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\util\tree\SerialNumber.java +D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WechatConfig.java +D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectMembersServiceImpl.java +D:\code\ecutrack\src\main\java\com\subsidy\util\ExcelFormatUtils.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\ProjectJudgePageVO.java +D:\code\ecutrack\src\main\java\com\subsidy\controller\CollegesDictController.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\UploadVodsDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\common\constant\VodConstant.java +D:\code\ecutrack\src\main\java\com\subsidy\dto\project\EditStatusDTO.java +D:\code\ecutrack\src\main\java\com\subsidy\vo\administer\AdministerVO.java -- libgit2 0.25.0