puzhibing
2023-07-26 709a4a10be56952ead6340e4822fce41a66e47cd
Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/SuperSaveDriving into dev

# Conflicts:
# driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
# management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java
# management/guns-admin/src/main/resources/application.yml
# management/guns-admin/src/main/resources/redis.properties
# management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html
# management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
130个文件已修改
2个文件已删除
555个文件已添加
35586 ■■■■■ 已修改文件
driver/.idea/.name 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/compiler.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/encodings.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__antlr_antlr_2_7_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_alibaba_druid_1_1_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_alibaba_fastjson_1_2_47.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_alipay_sdk_alipay_sdk_java_4_8_10_ALL.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_generate_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_support_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_baomidou_mybatisplus_spring_boot_starter_1_0_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_afterburner_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_andrewoma_dexx_dexx_collections_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_vlsi_compactmap_compactmap_1_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_0_2_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_core_0_2_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_shangmi_0_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_google_guava_guava_20_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_google_inject_guice_4_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_6_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_google_zxing_core_3_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_bundle_3_23_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_ibeetl_beetl_2_8_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_eureka_eureka_client_1_9_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_eureka_eureka_core_1_9_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_javanica_1_5_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_metrics_event_stream_1_5_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_serialization_1_5_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_eventbus_0_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_infix_0_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_eureka_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_2_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_netflix_servo_servo_core_0_12_21.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_8_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_tencent_kona_kona_crypto_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_tencent_kona_kona_pkix_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_tencent_kona_kona_provider_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__com_zaxxer_HikariCP_2_7_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_collections_commons_collections_3_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_jxpath_commons_jxpath_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__commons_logging_commons_logging_1_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_buffer_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_codec_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_codec_http_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_common_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_resolver_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_transport_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_transport_native_epoll_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_reactivex_rxjava_1_3_8.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_reactivex_rxjava_reactive_streams_1_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_inject_javax_inject_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__joda_time_joda_time_2_9_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__junit_junit_4_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_7_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__net_sf_ehcache_ehcache_core_2_6_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_abego_treelayout_org_abego_treelayout_core_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_antlr_antlr4_annotations_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_commons_commons_math_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_ehcache_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_7_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_apache_velocity_velocity_1_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_assertj_assertj_core_3_9_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_56.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_62.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk18on_1_72.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_3_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_3_1_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_codehaus_woodstox_woodstox_core_asl_4_4_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_ehcache_ehcache_3_3_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_gavaghan_geodesy_1_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_11_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mockito_mockito_core_2_15_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mongodb_bson_3_6_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mongodb_mongodb_driver_3_6_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mongodb_mongodb_driver_core_3_6_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_mongodb_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_archaius_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_core_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_client_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_ribbon_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_client_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_2_0_1_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_0_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_data_spring_data_mongodb_2_0_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_5_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_aop_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_beans_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_context_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_context_support_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_core_5_0_8_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_expression_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_jcl_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_jdbc_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_test_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_tx_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_web_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_springframework_spring_webmvc_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_5_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__redis_clients_jedis_2_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__stax_stax_api_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/misc.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/modules.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/guns-admin.iml 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/core/common/constant/JwtConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java 175 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DivisionRecordMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/YouTuiDriverMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CashWithdrawalMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DivisionRecordMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/YouTuiDriverMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Agent.java 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CashWithdrawal.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DivisionRecord.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/RechargeRecord.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICashWithdrawalService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDivisionRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IYouTuiDriverService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java 467 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DivisionRecordServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverBankServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java 1427 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/config/ChannelConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Complete.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PamentOrderUser.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PaymentOrder.java 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PaymentOrderGood.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryOrder.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Receive.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/ReceiveGood.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/ReceiveUser.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Transfer.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Withdraw.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/TaskUtil.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/WeChatUtil.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/AES.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/AesException.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/ByteGroup.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/PKCS7Encoder.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/SHA1.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WXBizMsgCrypt.java 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WXCore.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java 415 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WxPKCS7Encoder.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/XMLParse.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/Category.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/Code2Session.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/KeywordEnum.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/MessageTemplate.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/PubTemplateKeywords.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/PubTemplatetitles.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverInfoWarpper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPriceWarpper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/PushOrderInfoWarpper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/resources/application.yml 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-core/guns-core.iml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-generator/guns-generator.iml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-parent.iml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/.name 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/artifacts/guns_admin_war.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/artifacts/guns_admin_war_exploded.xml 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/compiler.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/encodings.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__c3p0_c3p0_0_9_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__cn_jpush_api_jiguang_common_1_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__cn_jpush_api_jpush_client_3_2_17.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__cn_rongcloud_im_server_sdk_java_3_0_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_alibaba_druid_1_1_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_alibaba_fastjson_1_2_47.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_2_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_generate_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_support_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_baomidou_mybatisplus_spring_boot_starter_1_0_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_06.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_core_0_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_shangmi_0_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_google_guava_guava_20_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_6_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_google_zxing_core_3_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_3_19_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_ibeetl_beetl_2_8_5.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_jamesmurty_utils_java_xmlbuilder_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_8_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_squareup_okio_okio_1_14_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_tencent_kona_kona_crypto_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_tencent_kona_kona_pkix_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_tencent_kona_kona_provider_1_0_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_zaxxer_HikariCP_2_7_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_collections_commons_collections_3_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_io_commons_io_2_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__de_rototor_pdfbox_graphics2d_0_30.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_lettuce_lettuce_core_5_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_all_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_buffer_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_codec_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_common_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_handler_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_resolver_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_netty_netty_transport_4_1_23_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_projectreactor_reactor_core_3_1_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__junit_junit_4_12.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_7_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_sf_ehcache_ehcache_core_2_6_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_abego_treelayout_org_abego_treelayout_core_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_antlr_antlr4_annotations_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_ant_ant_1_8_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_8_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_10.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_pdfbox_fontbox_2_0_22.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_pdfbox_pdfbox_2_0_22.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_examples_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_excelant_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_0_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_poi_poi_scratchpad_3_9.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_santuario_xmlsec_2_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_ehcache_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_32.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_velocity_velocity_1_7.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_all_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_extension_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gui_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_slideshow_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_ext_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgbrowser_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgpp_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgrasterizer_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_swing_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ttf2svg_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_assertj_assertj_core_3_9_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_68.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_68.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk18on_1_72.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_4_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_ehcache_ehcache_3_3_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_11_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_jdom_jdom_1_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_mockito_mockito_core_2_15_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_2_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_4_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_0_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_0_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_0_6_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_aop_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_beans_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_context_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_context_support_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_core_5_0_8_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_expression_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_jcl_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_jdbc_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_oxm_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_test_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_tx_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_web_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_springframework_spring_webmvc_5_0_5_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_5_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__redis_clients_jedis_2_9_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__stax_stax_api_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xalan_serializer_2_7_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xalan_xalan_2_7_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/misc.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/modules.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/guns-admin (1).iml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/guns-admin.iml 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/pom.xml 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ApiController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java 728 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java 1900 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/AccountChangeDetailMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/RechargeRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/AccountChangeDetailMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RechargeRecordMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/AccountChangeDetail.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/RechargeRecord.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IRechargeRecordService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/RechargeRecordServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/config/ChannelConfig.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/BindAccount.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Deposit.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/ImageUpload.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/InterfaceRequest.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/InterfaceResponse.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/QueryBalance.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/QueryOrder.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Register.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/UnbindAccount.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Withdraw.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/Base64.java 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/CacheUtils.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/RSAEncryptGeneration.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/RSASignature.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/StringUtil.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/TrhRequest.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/resources/application.yml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/resources/logback-spring.xml 334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/resources/redis.properties 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentArea.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html 358 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigBalanceRules.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigCommissionShareRules.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigDispatchRules.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/js/jquery.qrcode.js 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/js/qrcode.js 1237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent_info.js 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/user/user_info.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-core/guns-core.iml 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-generator/guns-generator.iml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-logs/error/log-error-2023-07-24.0.log 1041 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-logs/log_error.log 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-logs/log_total.log 988 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-parent.iml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
super_save_driving.sql 8365 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/core/common/constant/JwtConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/HtmlController.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/OrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RechargeRecordMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java 166 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/DivisionRecord.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IOrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java 309 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/DriverServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java 1767 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/config/ChannelConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/model/QueryOrder.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderInfoWarpper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPriceInfoWarpper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPriceWarpper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/resources/application.yml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zuul/src/main/resources/redis.properties 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/.idea/.name
New file
@@ -0,0 +1 @@
guns-parent
driver/.idea/compiler.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <annotationProcessing>
      <profile name="Maven default annotation processors profile" enabled="true">
        <sourceOutputDir name="target/generated-sources/annotations" />
        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
        <outputRelativeToContentRoot value="true" />
        <module name="guns-admin" />
        <module name="guns-core" />
        <module name="guns-generator" />
      </profile>
    </annotationProcessing>
    <bytecodeTargetLevel>
      <module name="guns-admin" target="1.8" />
      <module name="guns-core" target="1.8" />
      <module name="guns-generator" target="1.8" />
      <module name="guns-parent" target="1.8" />
    </bytecodeTargetLevel>
  </component>
</project>
driver/.idea/encodings.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding">
    <file url="file://$PROJECT_DIR$" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-admin" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-core" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-generator" charset="UTF-8" />
  </component>
</project>
driver/.idea/libraries/Maven__antlr_antlr_2_7_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: antlr:antlr:2.7.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: aopalliance:aopalliance:1.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: ch.qos.logback:logback-classic:1.2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: ch.qos.logback:logback-core:1.2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: cn.hutool:hutool-all:5.7.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_alibaba_druid_1_1_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.alibaba:druid:1.1.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_alibaba_fastjson_1_2_47.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.alibaba:fastjson:1.2.47">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_alipay_sdk_alipay_sdk_java_4_8_10_ALL.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.alipay.sdk:alipay-sdk-java:4.8.10.ALL">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alipay/sdk/alipay-sdk-java/4.8.10.ALL/alipay-sdk-java-4.8.10.ALL.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/alipay/sdk/alipay-sdk-java/4.8.10.ALL/alipay-sdk-java-4.8.10.ALL-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alipay/sdk/alipay-sdk-java/4.8.10.ALL/alipay-sdk-java-4.8.10.ALL-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_aliyun_aliyun_java_sdk_core_4_4_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.aliyun:aliyun-java-sdk-core:4.4.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/aliyun-java-sdk-core/4.4.3/aliyun-java-sdk-core-4.4.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/aliyun-java-sdk-core/4.4.3/aliyun-java-sdk-core-4.4.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/aliyun-java-sdk-core/4.4.3/aliyun-java-sdk-core-4.4.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-core:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_generate_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-generate:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_baomidou_mybatis_plus_support_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-support:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_baomidou_mybatisplus_spring_boot_starter_1_0_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml:classmate:1.3.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_afterburner_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.module:jackson-module-afterburner:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-afterburner/2.9.5/jackson-module-afterburner-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-afterburner/2.9.5/jackson-module-afterburner-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-afterburner/2.9.5/jackson-module-afterburner-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_andrewoma_dexx_dexx_collections_0_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.andrewoma.dexx:dexx-collections:0.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/andrewoma/dexx/dexx-collections/0.2/dexx-collections-0.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/andrewoma/dexx/dexx-collections/0.2/dexx-collections-0.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/andrewoma/dexx/dexx-collections/0.2/dexx-collections-0.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.jsqlparser:jsqlparser:1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.penggle:kaptcha:2.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_vlsi_compactmap_compactmap_1_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.vlsi.compactmap:compactmap:1.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/vlsi/compactmap/compactmap/1.2.1/compactmap-1.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/vlsi/compactmap/compactmap/1.2.1/compactmap-1.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/vlsi/compactmap/compactmap/1.2.1/compactmap-1.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_0_2_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.wechatpay-apiv3:wechatpay-java:0.2.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java/0.2.7/wechatpay-java-0.2.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java/0.2.7/wechatpay-java-0.2.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java/0.2.7/wechatpay-java-0.2.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_core_0_2_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.7/wechatpay-java-core-0.2.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.7/wechatpay-java-core-0.2.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.7/wechatpay-java-core-0.2.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_shangmi_0_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.code.gson:gson:2.8.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_google_guava_guava_20_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.guava:guava:20.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_google_inject_guice_4_1_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.inject:guice:4.1.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/4.1.0/guice-4.1.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/4.1.0/guice-4.1.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/4.1.0/guice-4.1.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_6_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.protobuf:protobuf-java:2.6.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_google_zxing_core_3_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.zxing:core:3.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_bundle_3_23_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_ibeetl_beetl_2_8_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.ibeetl:beetl:2.8.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.jayway.jsonpath:json-path:2.4.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.jhlabs:filters:2.0.235-1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.archaius:archaius-core:0.7.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/archaius/archaius-core/0.7.6/archaius-core-0.7.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/archaius/archaius-core/0.7.6/archaius-core-0.7.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/archaius/archaius-core/0.7.6/archaius-core-0.7.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_eureka_eureka_client_1_9_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.eureka:eureka-client:1.9.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-client/1.9.3/eureka-client-1.9.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-client/1.9.3/eureka-client-1.9.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-client/1.9.3/eureka-client-1.9.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_eureka_eureka_core_1_9_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.eureka:eureka-core:1.9.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-core/1.9.3/eureka-core-1.9.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-core/1.9.3/eureka-core-1.9.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/eureka/eureka-core/1.9.3/eureka-core-1.9.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.hystrix:hystrix-core:1.5.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-core/1.5.12/hystrix-core-1.5.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-core/1.5.12/hystrix-core-1.5.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-core/1.5.12/hystrix-core-1.5.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_javanica_1_5_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.hystrix:hystrix-javanica:1.5.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-javanica/1.5.12/hystrix-javanica-1.5.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-javanica/1.5.12/hystrix-javanica-1.5.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-javanica/1.5.12/hystrix-javanica-1.5.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_metrics_event_stream_1_5_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.hystrix:hystrix-metrics-event-stream:1.5.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-metrics-event-stream/1.5.12/hystrix-metrics-event-stream-1.5.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-metrics-event-stream/1.5.12/hystrix-metrics-event-stream-1.5.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-metrics-event-stream/1.5.12/hystrix-metrics-event-stream-1.5.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_hystrix_hystrix_serialization_1_5_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.hystrix:hystrix-serialization:1.5.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-serialization/1.5.12/hystrix-serialization-1.5.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-serialization/1.5.12/hystrix-serialization-1.5.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/hystrix/hystrix-serialization/1.5.12/hystrix-serialization-1.5.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_3_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-commons-util/0.3.0/netflix-commons-util-0.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-commons-util/0.3.0/netflix-commons-util-0.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-commons-util/0.3.0/netflix-commons-util-0.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_eventbus_0_3_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.netflix-commons:netflix-eventbus:0.3.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-eventbus/0.3.0/netflix-eventbus-0.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-eventbus/0.3.0/netflix-eventbus-0.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-eventbus/0.3.0/netflix-eventbus-0.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_infix_0_3_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.netflix-commons:netflix-infix:0.3.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-infix/0.3.0/netflix-infix-0.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-infix/0.3.0/netflix-infix-0.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-infix/0.3.0/netflix-infix-0.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-statistics/0.1.1/netflix-statistics-0.1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-statistics/0.1.1/netflix-statistics-0.1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/netflix-commons/netflix-statistics/0.1.1/netflix-statistics-0.1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon/2.2.5/ribbon-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon/2.2.5/ribbon-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon/2.2.5/ribbon-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon-core:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-core/2.2.5/ribbon-core-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-core/2.2.5/ribbon-core-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-core/2.2.5/ribbon-core-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_eureka_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon-eureka:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-eureka/2.2.5/ribbon-eureka-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-eureka/2.2.5/ribbon-eureka-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-eureka/2.2.5/ribbon-eureka-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon-httpclient:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-httpclient/2.2.5/ribbon-httpclient-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-httpclient/2.2.5/ribbon-httpclient-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-httpclient/2.2.5/ribbon-httpclient-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-loadbalancer/2.2.5/ribbon-loadbalancer-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-loadbalancer/2.2.5/ribbon-loadbalancer-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-loadbalancer/2.2.5/ribbon-loadbalancer-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_2_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.ribbon:ribbon-transport:2.2.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-transport/2.2.5/ribbon-transport-2.2.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-transport/2.2.5/ribbon-transport-2.2.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/ribbon/ribbon-transport/2.2.5/ribbon-transport-2.2.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_netflix_servo_servo_core_0_12_21.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.netflix.servo:servo-core:0.12.21">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/servo/servo-core/0.12.21/servo-core-0.12.21.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/servo/servo-core/0.12.21/servo-core-0.12.21-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/netflix/servo/servo-core/0.12.21/servo-core-0.12.21-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_8_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.squareup.okhttp3:okhttp:3.8.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_squareup_okio_okio_1_13_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.squareup.okio:okio:1.13.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.13.0/okio-1.13.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.13.0/okio-1.13.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.13.0/okio-1.13.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/contribs/jersey-apache-client4/1.19.1/jersey-apache-client4-1.19.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/contribs/jersey-apache-client4/1.19.1/jersey-apache-client4-1.19.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/contribs/jersey-apache-client4/1.19.1/jersey-apache-client4-1.19.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.sun.jersey:jersey-client:1.19.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-client/1.19.1/jersey-client-1.19.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-client/1.19.1/jersey-client-1.19.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-client/1.19.1/jersey-client-1.19.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.sun.jersey:jersey-core:1.19.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_tencent_kona_kona_crypto_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-crypto:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_tencent_kona_kona_pkix_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-pkix:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_tencent_kona_kona_provider_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-provider:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.thoughtworks.xstream:xstream:1.4.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__com_zaxxer_HikariCP_2_7_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.zaxxer:HikariCP:2.7.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-beanutils:commons-beanutils:1.9.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-codec:commons-codec:1.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_collections_commons_collections_3_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-collections:commons-collections:3.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-configuration:commons-configuration:1.8">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-configuration/commons-configuration/1.8/commons-configuration-1.8.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-configuration/commons-configuration/1.8/commons-configuration-1.8-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-configuration/commons-configuration/1.8/commons-configuration-1.8-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_jxpath_commons_jxpath_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-jxpath:commons-jxpath:1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-lang:commons-lang:2.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__commons_logging_commons_logging_1_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-logging:commons-logging:1.1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: dom4j:dom4j:1.6.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.jsonwebtoken:jjwt:0.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_buffer_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-buffer:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_codec_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_codec_http_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-http:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec-http/4.1.23.Final/netty-codec-http-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec-http/4.1.23.Final/netty-codec-http-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec-http/4.1.23.Final/netty-codec-http-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_common_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-common:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_resolver_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-resolver:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_transport_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_transport_native_epoll_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-native-epoll:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-epoll/4.1.23.Final/netty-transport-native-epoll-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-epoll/4.1.23.Final/netty-transport-native-epoll-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-epoll/4.1.23.Final/netty-transport-native-epoll-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-native-unix-common:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-unix-common/4.1.23.Final/netty-transport-native-unix-common-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-unix-common/4.1.23.Final/netty-transport-native-unix-common-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport-native-unix-common/4.1.23.Final/netty-transport-native-unix-common-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_reactivex_rxjava_1_3_8.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.reactivex:rxjava:1.3.8">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava/1.3.8/rxjava-1.3.8.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava/1.3.8/rxjava-1.3.8-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava/1.3.8/rxjava-1.3.8-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_reactivex_rxjava_reactive_streams_1_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.reactivex:rxjava-reactive-streams:1.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava-reactive-streams/1.2.1/rxjava-reactive-streams-1.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava-reactive-streams/1.2.1/rxjava-reactive-streams-1.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxjava-reactive-streams/1.2.1/rxjava-reactive-streams-1.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.reactivex:rxnetty:0.4.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty/0.4.9/rxnetty-0.4.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty/0.4.9/rxnetty-0.4.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty/0.4.9/rxnetty-0.4.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.reactivex:rxnetty-contexts:0.4.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-contexts/0.4.9/rxnetty-contexts-0.4.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-contexts/0.4.9/rxnetty-contexts-0.4.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-contexts/0.4.9/rxnetty-contexts-0.4.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.reactivex:rxnetty-servo:0.4.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-servo/0.4.9/rxnetty-servo-0.4.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-servo/0.4.9/rxnetty-servo-0.4.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/reactivex/rxnetty-servo/0.4.9/rxnetty-servo-0.4.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-core:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-schema:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-spi:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-spring-web:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger2:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger-common:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger-ui:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.swagger:swagger-annotations:1.5.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.swagger:swagger-models:1.5.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.annotation:javax.annotation-api:1.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_inject_javax_inject_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.inject:javax.inject:1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.servlet:javax.servlet-api:3.1.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.validation:validation-api:2.0.1.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.ws.rs:jsr311-api:1.1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.xml.bind:jaxb-api:2.3.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.xml.stream:stax-api:1.0-2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__joda_time_joda_time_2_9_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: joda-time:joda-time:2.9.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9.9/joda-time-2.9.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9.9/joda-time-2.9.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9.9/joda-time-2.9.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__junit_junit_4_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: junit:junit:4.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: mysql:mysql-connector-java:8.0.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_7_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.bytebuddy:byte-buddy:1.7.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:accessors-smart:1.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:json-smart:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__net_sf_ehcache_ehcache_core_2_6_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.sf.ehcache:ehcache-core:2.6.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_abego_treelayout_org_abego_treelayout_core_1_0_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_antlr_antlr4_annotations_4_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:antlr4-annotations:4.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:antlr4-runtime:4.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:antlr-runtime:3.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.4/antlr-runtime-3.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.4/antlr-runtime-3.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.4/antlr-runtime-3.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:stringtemplate:3.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-lang3:3.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_commons_commons_math_2_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-math:2.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math/2.2/commons-math-2.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math/2.2/commons-math-2.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math/2.2/commons-math-2.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_5_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-pool2:2.5.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.httpcomponents:httpclient:4.5.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.httpcomponents:httpcore:4.4.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-api:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-core:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-cache:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.7.0/shiro-cache-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.7.0/shiro-cache-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.7.0/shiro-cache-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-config-core:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.7.0/shiro-config-core-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.7.0/shiro-config-core-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.7.0/shiro-config-core-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-config-ogdl:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.7.0/shiro-config-ogdl-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.7.0/shiro-config-ogdl-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.7.0/shiro-config-ogdl-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-core:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.7.0/shiro-core-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.7.0/shiro-core-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.7.0/shiro-core-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-cipher:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.7.0/shiro-crypto-cipher-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.7.0/shiro-crypto-cipher-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.7.0/shiro-crypto-cipher-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-core:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.7.0/shiro-crypto-core-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.7.0/shiro-crypto-core-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.7.0/shiro-crypto-core-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-hash:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.7.0/shiro-crypto-hash-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.7.0/shiro-crypto-hash-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.7.0/shiro-crypto-hash-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_ehcache_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-ehcache:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.7.0/shiro-ehcache-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.7.0/shiro-ehcache-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.7.0/shiro-ehcache-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-event:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.7.0/shiro-event-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.7.0/shiro-event-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.7.0/shiro-event-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-lang:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.7.0/shiro-lang-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.7.0/shiro-lang-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.7.0/shiro-lang-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-spring:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.7.0/shiro-spring-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.7.0/shiro-spring-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.7.0/shiro-spring-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_7_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-web:1.7.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.7.0/shiro-web-1.7.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.7.0/shiro-web-1.7.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.7.0/shiro-web-1.7.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_apache_velocity_velocity_1_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.velocity:velocity:1.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.aspectj:aspectjweaver:1.8.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_assertj_assertj_core_3_9_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.assertj:assertj-core:3.9.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_56.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcpkix-jdk15on:1.56">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_62.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcprov-jdk15on:1.62">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.62/bcprov-jdk15on-1.62.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.62/bcprov-jdk15on-1.62-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.62/bcprov-jdk15on-1.62-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk18on_1_72.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcprov-jdk18on:1.72">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_3_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.codehaus.jettison:jettison:1.3.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.3.7/jettison-1.3.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.3.7/jettison-1.3.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.3.7/jettison-1.3.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_3_1_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.codehaus.woodstox:stax2-api:3.1.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_codehaus_woodstox_woodstox_core_asl_4_4_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_ehcache_ehcache_3_3_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ehcache:ehcache:3.3.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_gavaghan_geodesy_1_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.gavaghan:geodesy:1.1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/gavaghan/geodesy/1.1.3/geodesy-1.1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/gavaghan/geodesy/1.1.3/geodesy-1.1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/gavaghan/geodesy/1.1.3/geodesy-1.1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hamcrest:hamcrest-core:1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hamcrest:hamcrest-library:1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hdrhistogram:HdrHistogram:2.1.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hdrhistogram/HdrHistogram/2.1.9/HdrHistogram-2.1.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hdrhistogram/HdrHistogram/2.1.9/HdrHistogram-2.1.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hdrhistogram/HdrHistogram/2.1.9/HdrHistogram-2.1.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_11_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_ini4j_ini4j_0_5_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ini4j:ini4j:0.5.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ini4j/ini4j/0.5.4/ini4j-0.5.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/ini4j/ini4j/0.5.4/ini4j-0.5.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ini4j/ini4j/0.5.4/ini4j-0.5.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_jacoco_org_jacoco_agent_runtime_0_8_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jacoco/org.jacoco.agent/0.8.3/org.jacoco.agent-0.8.3-runtime.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/jacoco/org.jacoco.agent/0.8.3/org.jacoco.agent-0.8.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jacoco/org.jacoco.agent/0.8.3/org.jacoco.agent-0.8.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mapstruct:mapstruct:1.2.0.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mockito_mockito_core_2_15_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mockito:mockito-core:2.15.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mongodb_bson_3_6_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mongodb:bson:3.6.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.6.4/bson-3.6.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.6.4/bson-3.6.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.6.4/bson-3.6.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mongodb_mongodb_driver_3_6_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mongodb:mongodb-driver:3.6.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver/3.6.4/mongodb-driver-3.6.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver/3.6.4/mongodb-driver-3.6.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver/3.6.4/mongodb-driver-3.6.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mongodb_mongodb_driver_core_3_6_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mongodb:mongodb-driver-core:3.6.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.6.4/mongodb-driver-core-3.6.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.6.4/mongodb-driver-core-3.6.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.6.4/mongodb-driver-core-3.6.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mybatis:mybatis:3.4.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mybatis:mybatis-spring:1.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.objenesis:objenesis:2.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ow2.asm:asm:5.0.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.owasp.encoder:encoder:1.2.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.projectlombok:lombok:1.18.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.reactivestreams:reactive-streams:1.0.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.skyscreamer:jsonassert:1.5.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.slf4j:jul-to-slf4j:1.7.25">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.slf4j:slf4j-api:1.7.25">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_mongodb_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-data-mongodb:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-mongodb/2.0.4.RELEASE/spring-boot-starter-data-mongodb-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-mongodb/2.0.4.RELEASE/spring-boot-starter-data-mongodb-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-mongodb/2.0.4.RELEASE/spring-boot-starter-data-mongodb-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-test:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-commons:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-commons/2.0.1.RELEASE/spring-cloud-commons-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-commons/2.0.1.RELEASE/spring-cloud-commons-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-commons/2.0.1.RELEASE/spring-cloud-commons-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-context:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-context/2.0.1.RELEASE/spring-cloud-context-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-context/2.0.1.RELEASE/spring-cloud-context-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-context/2.0.1.RELEASE/spring-cloud-context-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_archaius_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-archaius/2.0.1.RELEASE/spring-cloud-netflix-archaius-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-archaius/2.0.1.RELEASE/spring-cloud-netflix-archaius-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-archaius/2.0.1.RELEASE/spring-cloud-netflix-archaius-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_core_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-netflix-core:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-core/2.0.1.RELEASE/spring-cloud-netflix-core-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-core/2.0.1.RELEASE/spring-cloud-netflix-core-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-core/2.0.1.RELEASE/spring-cloud-netflix-core-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_client_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-netflix-eureka-client:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-netflix-eureka-client-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-netflix-eureka-client-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-netflix-eureka-client-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_ribbon_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-ribbon/2.0.1.RELEASE/spring-cloud-netflix-ribbon-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-ribbon/2.0.1.RELEASE/spring-cloud-netflix-ribbon-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-netflix-ribbon/2.0.1.RELEASE/spring-cloud-netflix-ribbon-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-starter:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter/2.0.1.RELEASE/spring-cloud-starter-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter/2.0.1.RELEASE/spring-cloud-starter-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter/2.0.1.RELEASE/spring-cloud-starter-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-archaius/2.0.1.RELEASE/spring-cloud-starter-netflix-archaius-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-archaius/2.0.1.RELEASE/spring-cloud-starter-netflix-archaius-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-archaius/2.0.1.RELEASE/spring-cloud-starter-netflix-archaius-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_client_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-starter-netflix-eureka-client-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-starter-netflix-eureka-client-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-eureka-client/2.0.1.RELEASE/spring-cloud-starter-netflix-eureka-client-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-hystrix/2.0.1.RELEASE/spring-cloud-starter-netflix-hystrix-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-hystrix/2.0.1.RELEASE/spring-cloud-starter-netflix-hystrix-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-hystrix/2.0.1.RELEASE/spring-cloud-starter-netflix-hystrix-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_2_0_1_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.0.1.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-ribbon/2.0.1.RELEASE/spring-cloud-starter-netflix-ribbon-2.0.1.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-ribbon/2.0.1.RELEASE/spring-cloud-starter-netflix-ribbon-2.0.1.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-starter-netflix-ribbon/2.0.1.RELEASE/spring-cloud-starter-netflix-ribbon-2.0.1.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_0_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.data:spring-data-commons:2.0.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_data_spring_data_mongodb_2_0_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.data:spring-data-mongodb:2.0.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-mongodb/2.0.6.RELEASE/spring-data-mongodb-2.0.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-mongodb/2.0.6.RELEASE/spring-data-mongodb-2.0.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-mongodb/2.0.6.RELEASE/spring-data-mongodb-2.0.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_5_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.security:spring-security-crypto:5.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-crypto/5.0.4.RELEASE/spring-security-crypto-5.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-crypto/5.0.4.RELEASE/spring-security-crypto-5.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-crypto/5.0.4.RELEASE/spring-security-crypto-5.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.security:spring-security-rsa:1.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-rsa/1.0.5.RELEASE/spring-security-rsa-1.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-rsa/1.0.5.RELEASE/spring-security-rsa-1.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/security/spring-security-rsa/1.0.5.RELEASE/spring-security-rsa-1.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_aop_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-aop:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_beans_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-beans:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_context_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-context:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_context_support_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_core_5_0_8_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-core:5.0.8.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_expression_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-expression:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_jcl_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_jdbc_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_test_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-test:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_tx_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-tx:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_web_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-web:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_springframework_spring_webmvc_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_5_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.xmlunit:xmlunit-core:2.5.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.yaml:snakeyaml:1.19">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__redis_clients_jedis_2_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: redis.clients:jedis:2.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__stax_stax_api_1_0_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: stax:stax-api:1.0.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xml-apis:xml-apis:1.4.01">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xmlpull:xmlpull:1.1.3.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xpp3:xpp3_min:1.1.4c">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-sources.jar!/" />
    </SOURCES>
  </library>
</component>
driver/.idea/misc.xml
New file
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="MavenProjectsManager">
    <option name="originalFiles">
      <list>
        <option value="$PROJECT_DIR$/pom.xml" />
      </list>
    </option>
  </component>
  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/classes" />
  </component>
</project>
driver/.idea/modules.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/guns-admin/guns-admin.iml" filepath="$PROJECT_DIR$/guns-admin/guns-admin.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-core/guns-core.iml" filepath="$PROJECT_DIR$/guns-core/guns-core.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-generator/guns-generator.iml" filepath="$PROJECT_DIR$/guns-generator/guns-generator.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-parent.iml" filepath="$PROJECT_DIR$/guns-parent.iml" />
    </modules>
  </component>
</project>
driver/.idea/vcs.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
  </component>
</project>
driver/guns-admin/guns-admin.iml
New file
@@ -0,0 +1,260 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
    <facet type="web" name="Web">
      <configuration>
        <webroots />
        <sourceRoots>
          <root url="file://$MODULE_DIR$/src/main/java" />
          <root url="file://$MODULE_DIR$/src/main/resources" />
          <root url="file://$MODULE_DIR$/src/main/webapp" />
        </sourceRoots>
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/webapp" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.56" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-core:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-eureka-client:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.eureka:eureka-client:1.9.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.jettison:jettison:1.3.7" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: stax:stax-api:1.0.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-eventbus:0.3.0" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-infix:0.3.0" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-jxpath:commons-jxpath:1.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: joda-time:joda-time:2.9.9" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:antlr-runtime:3.4" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: antlr:antlr:2.7.7" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-math:2.2" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.ws.rs:jsr311-api:1.1.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.inject:guice:4.1.0" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: aopalliance:aopalliance:1.0" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.vlsi.compactmap:compactmap:1.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.andrewoma.dexx:dexx-collections:0.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.eureka:eureka-core:1.9.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.2.5" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.2.5" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-codec-http:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-codec:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-common:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-buffer:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-unix-common:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.2.5" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.2.5" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.2.5" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-eureka:2.2.5" level="project" />
    <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.10" level="project" />
    <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
    <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.0.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.12" level="project" />
    <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-serialization:1.5.12" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.module:jackson-module-afterburner:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-metrics-event-stream:1.5.12" level="project" />
    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica:1.5.12" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
    <orderEntry type="library" name="Maven: io.reactivex:rxjava-reactive-streams:1.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
    <orderEntry type="module" module-name="guns-core" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-support:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.10" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
    <orderEntry type="module" module-name="guns-generator" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generate:2.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" />
    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.7.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-ehcache:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.11" level="project" />
    <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: com.github.penggle:kaptcha:2.3.2" level="project" />
    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235-1" level="project" />
    <orderEntry type="library" name="Maven: com.google.zxing:core:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: com.ibeetl:beetl:2.8.5" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.2" level="project" />
    <orderEntry type="library" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-annotations:4.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.8.10.ALL" level="project" />
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
    <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.4.3" level="project" />
    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.6" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.0" level="project" />
    <orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.3" level="project" />
    <orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
    <orderEntry type="library" name="Maven: org.gavaghan:geodesy:1.1.3" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.20" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-mongodb:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongodb-driver:3.6.4" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:bson:3.6.4" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-core:3.6.4" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-mongodb:2.0.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.0.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java:0.2.7" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.7" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okio:okio:1.13.0" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-crypto:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.bouncycastle:bcprov-jdk18on:1.72" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-pkix:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-provider:1.0.3" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.7" level="project" />
  </component>
</module>
driver/guns-admin/src/main/java/com/supersavedriving/driver/core/common/constant/JwtConstants.java
@@ -12,7 +12,7 @@
    String SECRET = "defaultSecret";
    Long EXPIRATION = 604800L;
    Long EXPIRATION = 94608000L;
    String AUTH_PATH = "/gunsApi/auth";
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java
@@ -1,13 +1,15 @@
package com.supersavedriving.driver.modular.system.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.supersavedriving.driver.modular.system.model.Driver;
import com.supersavedriving.driver.modular.system.model.DriverBank;
import com.supersavedriving.driver.modular.system.model.Edition;
import com.supersavedriving.driver.modular.system.model.JoiningRequirements;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.MallBook.model.Register;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature;
import com.supersavedriving.driver.modular.system.util.PayMoneyUtil;
import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil;
import com.supersavedriving.driver.modular.system.util.huawei.SMSUtil;
@@ -25,10 +27,7 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -391,7 +390,7 @@
    @ResponseBody
    @PostMapping("/api/driver/queryDriverInfo")
//    @ServiceLog(name = "获取司机个人信息", url = "/api/driver/queryDriverInfo")
    @ApiOperation(value = "获取司机个人信息", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "获取司机个人信息【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
@@ -491,8 +490,8 @@
    @ResponseBody
    @PostMapping("/api/driver/queryCommissionList")
//    @ServiceLog(name = "获取佣金记录", url = "/api/driver/queryCommissionList")
    @ApiOperation(value = "获取佣金记录", tags = {"司机端-个人中心"}, notes = "")
//    @ServiceLog(name = "获取收入记录", url = "/api/driver/queryCommissionList")
    @ApiOperation(value = "获取收入记录", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"),
            @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"),
@@ -588,15 +587,16 @@
    @ResponseBody
    @PostMapping("/api/driver/withdrawCash")
//    @ServiceLog(name = "司机提现操作", url = "/api/driver/withdrawCash")
    @ApiOperation(value = "司机提现操作", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "司机提现操作【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "类型(1=余额提现,2=佣金提现)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "银行卡id", name = "bankId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "提现金额", name = "money", required = true, dataType = "double"),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResponseWarpper withdrawCash(Integer type, Double money){
        if(null == type){
            return ResponseWarpper.success(ResultUtil.paranErr("type"));
    public ResponseWarpper withdrawCash(Integer type, Integer bankId, Double money){
        if(null == bankId){
            return ResponseWarpper.success(ResultUtil.paranErr("bankId"));
        }
        if(null == money){
            return ResponseWarpper.success(ResultUtil.paranErr("money"));
@@ -606,7 +606,7 @@
            if(null == uid){
                return ResponseWarpper.tokenErr();
            }
            ResultUtil resultUtil = cashWithdrawalService.withdrawCash(uid, type, money);
            ResultUtil resultUtil = cashWithdrawalService.withdrawCash(uid, type, bankId, money);
            return ResponseWarpper.success(resultUtil);
        }catch (Exception e){
            e.printStackTrace();
@@ -621,7 +621,7 @@
    @ApiOperation(value = "获取司机钱包明细", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"),
            @ApiImplicitParam(value = "类型(1=收入,3=充值,4=支出,7=优惠券,8=保险)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "类型(3=充值,8=保险,9=订单信息费)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"),
            @ApiImplicitParam(value = "页条数", name = "pageSize", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
@@ -675,26 +675,65 @@
    }
    @ResponseBody
    @PostMapping("/base/driver/balanceRecharge1")
//    @ServiceLog(name = "账户余额充值(跳小程序支付)", url = "/api/driver/balanceRecharge")
    @ApiOperation(value = "账户余额充值(跳小程序支付)", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "小程序code", name = "jscode", required = true, dataType = "string"),
            @ApiImplicitParam(value = "司机id", name = "driverId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "充值金额", name = "amount", required = true, dataType = "double"),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResponseWarpper balanceRecharge1(String jscode, Integer driverId, Double amount){
        if(null == jscode){
            return ResponseWarpper.success(ResultUtil.paranErr("jscode"));
        }
        if(null == driverId){
            return ResponseWarpper.success(ResultUtil.paranErr("driverId"));
        }
        if(null == amount){
            return ResponseWarpper.success(ResultUtil.paranErr("amount"));
        }
        try {
            ResultUtil resultUtil = driverService.balanceRecharge1(driverId, jscode, amount);
            return ResponseWarpper.success(resultUtil);
        }catch (Exception e){
            e.printStackTrace();
            return new ResponseWarpper(500, e.getMessage());
        }
    }
    /**
     * 账户余额充值支付回调
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/driver/balanceRechargeCallback")
    public void balanceRechargeCallback(HttpServletRequest request, HttpServletResponse response){
    public void balanceRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
                String out_trade_no = map.get("out_trade_no");
                String transaction_id = map.get("transaction_id");
                String result = map.get("result");
                String orderId = out_trade_no.substring(17);
                driverService.balanceRechargeCallback(out_trade_no, transaction_id);
            // 验签
            boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign());
            if (verify) {//验签成功业务处理逻辑
                if(!"0000".equals(interfaceResponse.getCode())){
                    System.err.println("充值回调异常:" + interfaceResponse.getMsg());
                    return;
                }
                JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
                String merOrderId = jsonObject.getString("merOrderId");
                String out_trade_no = jsonObject.getString("parameter1");
                driverService.balanceRechargeCallback(out_trade_no, merOrderId);
                response.setStatus(200);
                PrintWriter out = response.getWriter();
                out.print(result);
                out.print("OK");
                out.flush();
                out.close();
            } else {//验签失败业务处理逻辑
                System.err.println("支付回调验签失败");
            }
        }catch (Exception e){
            e.printStackTrace();
@@ -902,7 +941,7 @@
    @ResponseBody
    @PostMapping("/api/driver/microenterprise")
//    @ServiceLog(name = "绑定商户", url = "/api/driver/microenterprise")
    @ApiOperation(value = "绑定商户", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "绑定商户【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "姓名", name = "name", required = true, dataType = "String"),
            @ApiImplicitParam(value = "身份证号码", name = "IDCode", required = true, dataType = "String"),
@@ -915,7 +954,7 @@
            if(null == uid){
                return ResponseWarpper.tokenErr();
            }
            ResultUtil resultUtil = driverService.microenterprise(uid, name, IDCode, phone);
            ResultUtil resultUtil = driverService.microenterprise(uid, name, IDCode, phone, "/base/driver/microenterpriseCallback");
            return ResponseWarpper.success(resultUtil);
        }catch (Exception e){
            e.printStackTrace();
@@ -924,12 +963,46 @@
    }
    /**
     * 注册商户回调
     */
    @ResponseBody
    @PostMapping("/base/driver/microenterpriseCallback")
    public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            if("0000".equals(interfaceResponse.getCode())) {
                JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
                String status = jsonObject.getString("status");
                String parameter1 = jsonObject.getString("parameter1");
                Driver driver = driverService.selectById(parameter1);
                if ("2".equals(status)) {
                    System.err.println("注册代理商子商户失败");
                }
                if ("0".equals(status)) {
                    System.err.println("注册代理商子商户处理中");
                }
                if ("1".equals(status)) {
                    String userId = jsonObject.getString("userId");
                    driver.setMerchantNumber(userId);
                    driverService.updateById(driver);
                    response.setStatus(200);
                    PrintWriter out = response.getWriter();
                    out.print("OK");
                    out.flush();
                    out.close();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @ResponseBody
    @PostMapping("/api/driver/queryBank")
//    @ServiceLog(name = "获取绑定的银行卡", url = "/api/driver/queryBank")
    @ApiOperation(value = "获取绑定的银行卡", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "获取绑定的银行卡【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
@@ -940,7 +1013,7 @@
                return ResponseWarpper.tokenErr();
            }
            DriverBank driverId = driverBankService.selectOne(new EntityWrapper<DriverBank>().eq("driverId", uid));
            return ResponseWarpper.success(driverId);
            return ResponseWarpper.success(null == driverId ? new DriverBank() : driverId);
        }catch (Exception e){
            e.printStackTrace();
            return new ResponseWarpper(500, e.getMessage());
@@ -951,7 +1024,7 @@
    @ResponseBody
    @PostMapping("/api/driver/addDriverBank")
//    @ServiceLog(name = "绑定银行卡", url = "/api/driver/addDriverBank")
    @ApiOperation(value = "绑定银行卡", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "绑定银行卡【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "姓名", name = "name", required = true, dataType = "String"),
            @ApiImplicitParam(value = "身份证号码", name = "IDCode", required = true, dataType = "String"),
@@ -977,7 +1050,7 @@
    @ResponseBody
    @PostMapping("/api/driver/delDriverBank")
//    @ServiceLog(name = "解绑银行卡", url = "/api/driver/delDriverBank")
    @ApiOperation(value = "解绑银行卡", tags = {"司机端-个人中心"}, notes = "")
    @ApiOperation(value = "解绑银行卡【1.1】", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "银行卡id", name = "id", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
@@ -995,4 +1068,44 @@
            return new ResponseWarpper(500, e.getMessage());
        }
    }
    /**
     * 提现分账的回调
     */
    @ResponseBody
    @PostMapping("/base/driver/withdrawCashFZCallback")
    public void withdrawCashFZCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            cashWithdrawalService.withdrawCashFZCallback(interfaceResponse);
            response.setStatus(200);
            PrintWriter out = response.getWriter();
            out.print("OK");
            out.flush();
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 提现确认收货后的结算回调
     */
    @ResponseBody
    @PostMapping("/base/driver/withdrawCashCallback")
    public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            cashWithdrawalService.withdrawCashCallback(interfaceResponse);
            response.setStatus(200);
            PrintWriter out = response.getWriter();
            out.print("OK");
            out.flush();
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
@@ -1,8 +1,17 @@
package com.supersavedriving.driver.modular.system.api;
import com.alibaba.fastjson.JSON;
import com.supersavedriving.driver.modular.system.model.Driver;
import com.alibaba.fastjson.JSONObject;
import com.supersavedriving.driver.modular.system.model.DivisionRecord;
import com.supersavedriving.driver.modular.system.model.Order;
import com.supersavedriving.driver.modular.system.model.RechargeRecord;
import com.supersavedriving.driver.modular.system.service.IDivisionRecordService;
import com.supersavedriving.driver.modular.system.service.IRechargeRecordService;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
import com.supersavedriving.driver.modular.system.util.MallBook.model.Receive;
import com.supersavedriving.driver.modular.system.util.MallBook.model.ReceiveUser;
import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil;
import com.supersavedriving.driver.modular.system.util.rongyun.model.CloudRecordingCallback;
import com.supersavedriving.driver.modular.system.warpper.*;
@@ -16,20 +25,19 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 订单控制器
@@ -40,6 +48,8 @@
@RequestMapping("")
public class OrderController {
    Logger logger = LoggerFactory.getLogger(OrderController.class);
    @Autowired
    private IOrderService orderService;
@@ -47,7 +57,10 @@
    private IDriverService driverService;
    @Autowired
    private RongYunUtil rongYunUtil;
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IDivisionRecordService divisionRecordService;
@@ -409,7 +422,39 @@
    }
    /**
     * 转账回调
     * @param execute
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/order/zhaunzhangCallback")
    public void zhaunzhangCallback(@RequestBody InterfaceResponse execute, HttpServletResponse response){
        try {
            if("0000".equals(execute.getCode())){
                JSONObject jsonObject = JSON.parseObject(execute.getResult());
                Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败
                if(2 == status){
                    System.err.println("转账失败");
                    return;
                }
                String parameter1 = jsonObject.getString("parameter1");
                RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1);
                response.setStatus(200);
                PrintWriter out = response.getWriter();
                out.print("OK");
                out.flush();
                out.close();
            }else{
                System.err.println("转账失败:" + execute.getMsg());
                return;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @ResponseBody
    @PostMapping("/api/order/queryDriverOrderList")
@@ -520,4 +565,81 @@
            return new ResponseWarpper(500, e.getMessage());
        }
    }
    /**
     * 异步分账回调
     */
    @ResponseBody
    @PostMapping("/base/order/ledgerCallback")
    public void ledgerCallback(@RequestBody InterfaceResponse execute, HttpServletResponse response){
        try{
            // 验签
            boolean verify = RSASignature.validate(execute.content(), execute.getSign());
            if (verify) {//验签成功业务处理逻辑
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject = JSON.parseObject(execute.getResult());
                    Integer status = jsonObject.getInteger("status");
                    if(2 == status){
                        logger.warn("异步分账回调异常");
                        return;
                    }
                    String merOrderId = jsonObject.getString("merOrderId");
                    String divisionRecordId = jsonObject.getString("parameter1");
                    DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
                    if(divisionRecord.getState() == 2){
                        response.setStatus(200);
                        PrintWriter out = response.getWriter();
                        out.print("OK");
                        out.flush();
                        out.close();
                        return;
                    }
                    divisionRecord.setMerOrderId(merOrderId);
                    divisionRecord.setPayTime(new Date());
                    divisionRecord.setState(2);
                    divisionRecordService.updateById(divisionRecord);
                    //确认收货
                    new Timer().schedule(new TimerTask() {
                        @Override
                        public void run() {
                            Receive receive = new Receive();//确认收货
                            receive.setOriginalMerOrderId(merOrderId);
                            receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                            List<ReceiveUser> splitList = new ArrayList<>();
                            ReceiveUser receiveUser = new ReceiveUser();
                            receiveUser.setSplitUserId(divisionRecord.getMerchantNumber());
                            receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                            splitList.add(receiveUser);
                            receive.setSplitList(splitList);
                            TrhRequest<Receive> request1 = new TrhRequest();
                            InterfaceResponse execute = request1.execute(receive, Receive.SERVICE_CODE);
                            if(!"0000".equals(execute.getCode())){
                                logger.warn("确认收货" + execute.getMsg());
                            }
                            JSONObject jsonObject = JSON.parseObject(execute.getResult());
                            String status = jsonObject.getString("status");
                            if("2".equals(status)){
                                logger.warn("确认收货失败");
                            }
                            if("0".equals(status)){
                                logger.warn("确认收货处理中");
                            }
                        }
                    }, 60000);
                    response.setStatus(200);
                    PrintWriter out = response.getWriter();
                    out.print("OK");
                    out.flush();
                    out.close();
                }
            } else {//验签失败业务处理逻辑
                logger.warn("支付回调验签失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java
@@ -25,7 +25,7 @@
        String appid = req.getParameter("appid");
        String sign = req.getParameter("sign");
        ResultUtil resultUtil = authService.checkSyncAuth(appid, sign, req);
        if (resultUtil.getCode() != 200) {
        if (resultUtil.getCode() != 10000) {
            res.setStatus(HttpStatus.OK.value());
            res.setHeader("Content-type", "text/html;charset=UTF-8");
            res.getWriter().print(JSON.toJSONString(resultUtil));//Res.Failure("req timeout, please try again")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DivisionRecordMapper.java
New file
@@ -0,0 +1,11 @@
package com.supersavedriving.driver.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.supersavedriving.driver.modular.system.model.DivisionRecord;
/**
 * @author zhibing.pu
 * @date 2023/5/6 16:41
 */
public interface DivisionRecordMapper extends BaseMapper<DivisionRecord> {
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/YouTuiDriverMapper.java
@@ -46,4 +46,10 @@
     * @return
     */
    List<DriverYouTuiWarpper> queryAllYouTui(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);
    /**
     * 修改状态
     */
    void editState();
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
@@ -43,7 +43,7 @@
        UNIX_TIMESTAMP(createTime) * 1000 as createTime,
        (newData - oldData) as money,
        newData as balance
        from t_account_change_detail where userType = 2 and userId = #{driverId}
        from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId}
        <if test="null != time and '' != time">
            and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
        </if>
@@ -57,7 +57,7 @@
        from (
            select
            (newData - oldData) as money
            from t_account_change_detail where userType = 2 and userId = #{driverId}
            from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId}
            <if test="null != time and '' != time">
                and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
            </if>
@@ -72,7 +72,7 @@
        UNIX_TIMESTAMP(createTime) * 1000 as createTime,
        (newData - oldData) as amount,
        newData as balance
        from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (1, 3, 4, 7, 8)
        from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (3, 8, 9)
        <if test="null != time and '' != time">
            and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
        </if>
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CashWithdrawalMapper.xml
@@ -9,6 +9,7 @@
        <result column="userDriverId" property="userDriverId"/>
        <result column="code" property="code"/>
        <result column="businessType" property="businessType"/>
        <result column="bankId" property="bankId"/>
        <result column="amount" property="amount"/>
        <result column="state" property="state"/>
        <result column="orderNumber" property="orderNumber"/>
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DivisionRecordMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supersavedriving.driver.modular.system.dao.DivisionRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.DivisionRecord">
        <id column="id" property="id"/>
        <result column="userType" property="userType"/>
        <result column="userId" property="userId"/>
        <result column="orderId" property="orderId"/>
        <result column="merOrderId" property="merOrderId"/>
        <result column="sourceType" property="sourceType"/>
        <result column="amount" property="amount"/>
        <result column="merchantNumber" property="merchantNumber"/>
        <result column="state" property="state"/>
        <result column="payTime" property="payTime"/>
        <result column="createTime" property="createTime"/>
    </resultMap>
</mapper>
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml
@@ -111,7 +111,7 @@
        a.estimatedMileage,
        a.estimatedTime,
        a.startPrice,
        a.waitTime,
        a.waitTime + a.outWaitTime as waitTime,
        a.actualMileage,
        a.state,
        (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(a.startTime)) / 60 as travelTime
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml
@@ -15,5 +15,6 @@
        <result column="orderNumber" property="orderNumber" />
        <result column="createTime" property="createTime" />
        <result column="agentId" property="agentId" />
        <result column="surplusDividedAmount" property="surplusDividedAmount"/>
    </resultMap>
</mapper>
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/YouTuiDriverMapper.xml
@@ -67,4 +67,9 @@
        content
        from t_you_tui where status = 1 order by createTime desc limit #{pageNum}, #{pageSize}
    </select>
    <update id="editState">
        update t_you_tui_driver set state = 3 where failureTime &lt;= now() and state != 3
    </update>
</mapper>
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Agent.java
@@ -20,66 +20,180 @@
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 负责人姓名
     */
    @TableField("principal")
    @TableField(value = "principal")
    private String principal;
    /**
     * 负责人电话
     */
    @TableField("principalPhone")
    @TableField(value = "principalPhone")
    private String principalPhone;
    /**
     * 邮箱
     */
    @TableField("email")
    @TableField(value = "email")
    private String email;
    /**
     * 代理区域省名称
     */
    @TableField("provinceName")
    private String provinceName;
    /**
     * 代理区域省编号
     */
    @TableField("provinceCode")
    @TableField(value = "provinceCode")
    private String provinceCode;
    /**
     * 代理区域省名称
     */
    @TableField(value = "provinceName")
    private String provinceName;
    /**
     * 代理区域市编号
     */
    @TableField("cityCode")
    @TableField(value = "cityCode")
    private String cityCode;
    /**
     * 代理区域市名称
     */
    @TableField("cityName")
    @TableField(value = "cityName")
    private String cityName;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("status")
    @TableField(value = "status")
    private Integer status;
    /**
     * 添加时间
     */
    @TableField("createTime")
    @TableField(value = "createTime")
    private Date createTime;
    /**
     * 开户银行
     */
    @TableField("bankDeposit")
    private String bankDeposit;
    /**
     * 银行账号
     */
    @TableField("bankAccount")
    private String bankAccount;
    /**
     * 客服电话
     */
    @TableField("serviceCalls")
    @TableField(value = "serviceCalls")
    private String serviceCalls;
    /**
     * 商户类型(1=个体工商户,2=企业)
     */
    @TableField("userType")
    private Integer userType;
    /**
     * 公司名称
     */
    @TableField("merchantName")
    private String merchantName;
    /**
     * 经营范围
     */
    @TableField("businessScope")
    private String businessScope;
    /**
     * 统一社会信用码
     */
    @TableField("socialCreditCode")
    private String socialCreditCode;
    /**
     * 统一社会信用证有效期
     */
    @TableField("socialCreditCodeExpires")
    private Date socialCreditCodeExpires;
    /**
     * 企业注册省编号
     */
    @TableField("provCodeEnterprise")
    private String provCodeEnterprise;
    /**
     * 企业注册市编号
     */
    @TableField("cityCodeEnterprise")
    private String cityCodeEnterprise;
    /**
     * 企业注册区编号
     */
    @TableField("areaCodeEnterprise")
    private String areaCodeEnterprise;
    /**
     * 企业注册详细地址
     */
    @TableField("address")
    private String address;
    /**
     * 法人姓名
     */
    @TableField("legalPerson")
    private String legalPerson;
    /**
     * 法人身份证号码
     */
    @TableField("merchantIDCode")
    private String merchantIDCode;
    /**
     * 法人身份证有效期
     */
    @TableField("certIdExpires")
    private Date certIdExpires;
    /**
     * 法人手机号
     */
    @TableField("legalPhone")
    private String legalPhone;
    /**
     * 附件编号
     */
    @TableField("fileNo")
    private String fileNo;
    /**
     * 结算账户名
     */
    @TableField("cardName")
    private String cardName;
    /**
     * 结算账户号
     */
    @TableField("cardNo")
    private String cardNo;
    /**
     * 银行账户类型(1=对公,2=对私)
     */
    @TableField("bankAcctType")
    private Integer bankAcctType;
    /**
     * 银行预留手机号
     */
    @TableField("phone")
    private String phone;
    /**
     * 开户行编号
     */
    @TableField("bankCode")
    private String bankCode;
    /**
     * 开户行地区省编号
     */
    @TableField("provCodeBank")
    private String provCodeBank;
    /**
     * 开户行地区市编号
     */
    @TableField("cityCodeBank")
    private String cityCodeBank;
    /**
     * 开户行地区区编号
     */
    @TableField("areaCodeBank")
    private String areaCodeBank;
    /**
     * 商户号
     */
    @TableField("merchantNumber")
    private String merchantNumber;
    /**
     * 商户状态(0=审核中,1=已成功,2=审核失败)
     */
    @TableField("merchantStatus")
    private Integer merchantStatus;
    /**
     * 结算账户状态(0=审核中,1=已成功,2=审核失败)
     */
    @TableField("bankStatus")
    private Integer bankStatus;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CashWithdrawal.java
@@ -42,6 +42,11 @@
    @TableField("businessType")
    private Integer businessType;
    /**
     * 银行卡id
     */
    @TableField("bankId")
    private Integer bankId;
    /**
     * 提现金额
     */
    @TableField("amount")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java
@@ -86,10 +86,10 @@
     * 优惠券数量
     */
    @TableField("coupon_count")
    private Integer couponCount;
    private Long couponCount;
    /**
     * 剩余数量
     */
    @TableField("remaining_quantity")
    private Integer remainingQuantity;
    private Long remainingQuantity;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DivisionRecord.java
New file
@@ -0,0 +1,78 @@
package com.supersavedriving.driver.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @date 2023/5/6 15:54
 */
@Data
@TableName("t_division_record")
public class DivisionRecord {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户类型(1=司机,2=代理商,3=平台)
     */
    @TableField("userType")
    private Integer userType;
    /**
     * 用户id
     */
    @TableField("userId")
    private Integer userId;
    /**
     * 分账业务订单id
     */
    @TableField("orderId")
    private Long orderId;
    /**
     * 充值记录id
     */
    @TableField("rechargeRecordId")
    private Integer rechargeRecordId;
    /**
     * 第三方分账业务订单id
     */
    @TableField("merOrderId")
    private String merOrderId;
    /**
     * 业务来源(1=订单业务,2=平台充值)
     */
    @TableField("sourceType")
    private Integer sourceType;
    /**
     * 分账金额
     */
    @TableField("amount")
    private Double amount;
    /**
     * 收款商户号
     */
    @TableField("merchantNumber")
    private String merchantNumber;
    /**
     * 分账状态(1=分账中,2=分账成功)
     */
    @TableField("state")
    private Integer state;
    /**
     * 分账时间
     */
    @TableField("payTime")
    private Date payTime;
    /**
     * 添加时间
     */
    @TableField("createTime")
    private Date createTime;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java
@@ -163,7 +163,7 @@
    @TableField("overLongDistancePrice")
    private Double overLongDistancePrice;
    /**
     * 等待时长(分钟)
     * 等待时长(s)
     */
    @TableField("waitTime")
    private Integer waitTime;
@@ -173,7 +173,7 @@
    @TableField("waitTimePrice")
    private Double waitTimePrice;
    /**
     * 超出等待时长(分钟)
     * 超出等待时长(s)
     */
    @TableField("outWaitTime")
    private Integer outWaitTime;
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/RechargeRecord.java
@@ -9,6 +9,7 @@
import java.util.Date;
/**
 * 系统充值记录
 * @author zhibing.pu
 * @date 2023/3/21 23:08
 */
@@ -22,7 +23,7 @@
    @TableField("id")
    private Integer id;
    /**
     * 数据类型(1=用户,2=司机,3=代理商)
     * 数据类型(1=用户,2=司机,3=代理商,4=平台)
     */
    @TableField("type")
    private Integer type;
@@ -71,4 +72,9 @@
     */
    @TableField("agentId")
    private Integer agentId;
    /**
     * 剩余待分账金额
     */
    @TableField("surplusDividedAmount")
    private Double surplusDividedAmount;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICashWithdrawalService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.service.IService;
import com.supersavedriving.driver.modular.system.model.CashWithdrawal;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
@@ -14,10 +15,24 @@
    /**
     * 司机提现申请
     * @param type
     * @param bankId
     * @param money
     * @return
     * @throws Exception
     */
    ResultUtil withdrawCash(Integer driverId, Integer type, Double money) throws Exception;
    ResultUtil withdrawCash(Integer driverId, Integer type, Integer bankId, Double money) throws Exception;
    /**
     * 提现异步回调
     * @param interfaceResponse
     */
    void withdrawCashFZCallback(InterfaceResponse interfaceResponse);
    /**
     * 提现确认收货后的结算回调
     * @param interfaceResponse
     */
    void withdrawCashCallback(InterfaceResponse interfaceResponse);
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDivisionRecordService.java
New file
@@ -0,0 +1,11 @@
package com.supersavedriving.driver.modular.system.service;
import com.baomidou.mybatisplus.service.IService;
import com.supersavedriving.driver.modular.system.model.DivisionRecord;
/**
 * @author zhibing.pu
 * @date 2023/5/6 16:42
 */
public interface IDivisionRecordService extends IService<DivisionRecord> {
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverService.java
@@ -131,6 +131,17 @@
    ResultUtil balanceRecharge(Integer uid, Double amount) throws Exception;
    /**
     * 司机账户余额充值
     * @param driverId
     * @param amount
     * @return
     * @throws Exception
     */
    ResultUtil balanceRecharge1(Integer driverId, String jscode, Double amount) throws Exception;
    /**
     * 支付回调通知处理
     * @param out_trade_no
@@ -185,5 +196,5 @@
     * @return
     * @throws Exception
     */
    ResultUtil microenterprise(Integer uid, String name, String number, String phone) throws Exception;
    ResultUtil microenterprise(Integer uid, String name, String number, String phone, String notifyUrl) throws Exception;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverWorkService.java
@@ -24,4 +24,10 @@
     * @throws Exception
     */
    ResultUtil driverOffWork(Integer driverId, Long onlineTime) throws Exception;
    /**
     * 定时任务检查司机余额是否充足
     */
    void taskDriverOffWork();
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderPositionService.java
@@ -24,4 +24,8 @@
     * @throws Exception
     */
    List<OrderPositionWarpper> queryPosition(Integer orderId, Integer orderType) throws Exception;
    void initMap(Long orderId) throws Exception;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
@@ -38,7 +38,7 @@
     */
    ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception;
    Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city);
    /**
     * 获取大厅订单列表
     * @param uid
@@ -70,6 +70,14 @@
     * @throws Exception
     */
    ResultUtil receiveOrder(Integer uid, Long orderId) throws Exception;
    /**
     * 推送服务中的数据
     * @param orderId
     */
    void pushOrderInfo(Long orderId);
    /**
@@ -203,4 +211,11 @@
     * 主动完成线下收款
     */
    void completeCollection();
    ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, Integer rechargeRecordId, String merOrderId, Double amount, Integer sourceType);
    void saveRevenue(Order order) throws Exception;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IYouTuiDriverService.java
@@ -53,4 +53,11 @@
     * @throws Exception
     */
    ResultUtil redeemBenefits(Integer driverId, Integer id) throws Exception;
    /**
     * 修改状态
     * @throws Exception
     */
    void editState() throws Exception;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -7,10 +7,10 @@
import com.supersavedriving.driver.modular.system.dao.AccountChangeDetailMapper;
import com.supersavedriving.driver.modular.system.model.AccountChangeDetail;
import com.supersavedriving.driver.modular.system.model.Driver;
import com.supersavedriving.driver.modular.system.model.RechargeRecord;
import com.supersavedriving.driver.modular.system.model.SystemConfig;
import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
import com.supersavedriving.driver.modular.system.service.IDriverService;
import com.supersavedriving.driver.modular.system.service.ISystemConfigService;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
import com.supersavedriving.driver.modular.system.util.UUIDUtil;
import com.supersavedriving.driver.modular.system.warpper.BalanceDetailWarpper;
import com.supersavedriving.driver.modular.system.warpper.CommissionDetailListWarpper;
@@ -19,6 +19,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
@@ -35,6 +37,12 @@
    @Autowired
    private ISystemConfigService systemConfigService;
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IOrderService orderService;
@@ -119,129 +127,69 @@
        Double num1 = jsonObject.getDouble("num1");
        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1));
        for (Driver driver : drivers) {
            Double couponBalance = driver.getCouponBalance();
            Double backgroundBalance = driver.getBackgroundBalance();
            Double balance = driver.getBalance();
            Double commission = driver.getCommission();
            double all = couponBalance + backgroundBalance + balance + commission;
            if(num1 > all){
            double all = backgroundBalance + balance;
            if(num1.compareTo(all) > 0){
                continue;
            }
            double d = num1.doubleValue();
            if(backgroundBalance > 0 && backgroundBalance < d){
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(driver.getId());
                accountChangeDetail.setType(1);
                accountChangeDetail.setChangeType(8);
                accountChangeDetail.setOldData(driver.getBackgroundBalance());
                accountChangeDetail.setNewData(0D);
                accountChangeDetail.setExplain("收取保险费");
                accountChangeDetail.setCreateTime(new Date());
                this.insert(accountChangeDetail);
                d -= backgroundBalance;
                driver.setBackgroundBalance(0D);
            }
            if(backgroundBalance > 0 && backgroundBalance >= d){
            }else if(backgroundBalance >= d){
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(driver.getId());
                accountChangeDetail.setType(1);
                accountChangeDetail.setChangeType(8);
                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                accountChangeDetail.setExplain("收取保险费");
                accountChangeDetail.setCreateTime(new Date());
                this.insert(accountChangeDetail);
                d = 0;
            }
            if(d > 0){
                if(couponBalance > 0 && couponBalance < d){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver.getId());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(8);
                    accountChangeDetail.setOldData(driver.getCouponBalance());
                    accountChangeDetail.setNewData(0D);
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d -= couponBalance;
                    driver.setCouponBalance(0D);
                }
                if(couponBalance > 0 && couponBalance >= d){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver.getId());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(8);
                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setCouponBalance(driver.getCouponBalance() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                }
            }
            if(d > 0){
                if(commission > 0 && commission < d){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver.getId());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(8);
                    accountChangeDetail.setOldData(driver.getCommission());
                    accountChangeDetail.setNewData(0D);
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d -= commission;
                    driver.setCommission(0D);
                }
                if(commission > 0 && commission >= d){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver.getId());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(8);
                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setCommission(driver.getCommission() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                }
            }
            if(d > 0){
                if(balance > 0 && balance < d){
                    continue;
                }
                if(balance > 0 && balance >= d){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver.getId());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(8);
                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setBalance(driver.getBalance() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                        if(surplusDividedAmount.compareTo(d) >= 0){
                            ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), d, 1);
                            if(fengzhang.getCode() == 10000){
                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                rechargeRecordService.updateById(rechargeRecord);
                            }
                            break;
                        }else{
                            ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1);
                            if(fengzhang.getCode() == 10000){
                                rechargeRecord.setSurplusDividedAmount(0d);
                                rechargeRecordService.updateById(rechargeRecord);
                                d = new BigDecimal(d).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                            }else{
                                break;
                            }
                        }
                    }
                }
            }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
@@ -1,22 +1,26 @@
package com.supersavedriving.driver.modular.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.dao.CashWithdrawalMapper;
import com.supersavedriving.driver.modular.system.model.AccountChangeDetail;
import com.supersavedriving.driver.modular.system.model.CashWithdrawal;
import com.supersavedriving.driver.modular.system.model.Driver;
import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
import com.supersavedriving.driver.modular.system.service.ICashWithdrawalService;
import com.supersavedriving.driver.modular.system.service.IDriverService;
import com.supersavedriving.driver.modular.system.model.*;
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.PayMoneyUtil;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
import com.supersavedriving.driver.modular.system.util.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
/**
 * @author zhibing.pu
@@ -34,6 +38,15 @@
    @Autowired
    private IAccountChangeDetailService accountChangeDetailService;
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IDivisionRecordService divisionRecordService;
    @Value("${callbackPath}")
    private String callbackPath;
@@ -42,26 +55,30 @@
    /**
     * 司机提现操作
     * @param driverId
     * @param type
     * @param bankId
     * @param money
     * @return
     * @throws Exception
     */
    @Override
    public ResultUtil withdrawCash(Integer driverId, Integer type, Double money) throws Exception {
    public ResultUtil withdrawCash(Integer driverId, Integer type, Integer bankId, Double money) throws Exception {
        Driver driver = driverService.selectById(driverId);
        if(type == 1 && (null == driver.getBalance() || driver.getBalance() < money)){
            return ResultUtil.error("账户余额不足");
        if(type == 1 && (null == driver.getBalance() || driver.getBalance().compareTo(money) < 0)){
            return ResultUtil.error("余额不足");
        }
        if(type == 2 && (null == driver.getCommission() || driver.getCommission() < money)){
            return ResultUtil.error("佣金余额不足");
        if(type == 2 && (null == driver.getCommission() || driver.getCommission().compareTo(money) < 0)){
            return ResultUtil.error("收入余额不足");
        }
        if(ToolUtil.isEmpty(driver.getMerchantNumber())){
            return ResultUtil.error("请先注册商户号");
        }
        CashWithdrawal cashWithdrawal = new CashWithdrawal();
        cashWithdrawal.setType(2);
        cashWithdrawal.setUserDriverId(driverId);
        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        cashWithdrawal.setBusinessType(type == 1 ? 12 : 11);
        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        cashWithdrawal.setBusinessType(type == 2 ? 11 : 12);
        cashWithdrawal.setBankId(bankId);
        cashWithdrawal.setAmount(money);
        cashWithdrawal.setState(1);
        cashWithdrawal.setCreateTime(new Date());
@@ -69,37 +86,419 @@
        //增加记录
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setUserType(2);
        accountChangeDetail.setUserId(driver.getId());
        accountChangeDetail.setType(1);
        accountChangeDetail.setChangeType(type == 1 ? 4 : 6);
        if(type == 1){
            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            driver.setBalance(driver.getBalance() - money);
            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setExplain("账户余额提现");
            accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }else{
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driver.setCommission(new BigDecimal(driver.getCommission()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        }
        if(type == 2){
            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            driver.setCommission(driver.getCommission() - money);
            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setExplain("佣金余额提现");
        }
        accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现");
        driverService.updateById(driver);
        accountChangeDetailService.saveData(accountChangeDetail);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String outDetailNo = sdf.format(new Date()) + cashWithdrawal.getId();
        String s = payMoneyUtil.weixinTransferMoney(outDetailNo, money, driver.getOpenid(), driver.getName(), "【超省新代驾】提现付款!");
        if(ToolUtil.isEmpty(s)){
            return ResultUtil.error("提现异常,请联系管理员");
        if(type == 1){//余额提现,调用分账接口 -->确认收货--->提现
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2)
                    .eq("userId", driver.getId()).eq("payType", 1).eq("payStatus", 2).gt("surplusDividedAmount", 0));
            for (RechargeRecord rechargeRecord : rechargeRecords) {
                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                if(surplusDividedAmount.compareTo(money) >= 0){//够分账
                    ResultUtil fenzhang = fenzhang(driver, rechargeRecord, cashWithdrawal, 3, money);
                    if(fenzhang.getCode() == 10000){
                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
                        rechargeRecordService.updateById(rechargeRecord);
                        break;
                    }else{
                        return fenzhang;
                    }
                }else{
                    ResultUtil fenzhang = fenzhang(driver, rechargeRecord, cashWithdrawal, 3, surplusDividedAmount);
                    if(fenzhang.getCode() == 10000){
                        rechargeRecord.setSurplusDividedAmount(0D);
                        rechargeRecordService.updateById(rechargeRecord);
                        money -= surplusDividedAmount;
                    }else{
                        return fenzhang;
                    }
                }
            }
        }else{//佣金提现,直接提现到银行卡
            Double finalMoney = money;
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    Withdraw withdraw = new Withdraw();
                    withdraw.setUserId(driver.getMerchantNumber());
                    withdraw.setAmount(new BigDecimal(finalMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                    withdraw.setOrderName("账户余额提现");
                    withdraw.setRemark("账户余额提现");
                    withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
                    withdraw.setParameter1(cashWithdrawal.getId().toString());
                    TrhRequest<Withdraw> request1 = new TrhRequest();
                    InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
                    if("0000".equals(execute.getCode())){
                        JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                        String merOrderId1 = jsonObject1.getString("merOrderId");
                        Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                        if(1 == status){
                            cashWithdrawal.setOrderNumber(merOrderId1);
                            cashWithdrawal.setState(2);
                            CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
                        }
                        if(2 == status){
                            System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                        }
                    }else{
                        System.err.println("结算接口异常【提现】:" + execute.getMsg());
                    }
                }
            }, 60000);
        }
        cashWithdrawal.setState(2);
        cashWithdrawal.setOrderNumber(s);
        this.updateById(cashWithdrawal);
        return ResultUtil.success();
    }
    /**
     * 司机提现,现将支付的订单进行分账
     * @param driver
     * @param amount
     * @param cashWithdrawal
     * @return
     */
    public ResultUtil fenzhang(Driver driver, Double amount, CashWithdrawal cashWithdrawal, Integer payType){
        List<RechargeRecord> rechargeRecords = new ArrayList<>();
        if(payType == 1){//司机充值
            rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2)
                    .eq("userId", driver.getId()).eq("payType", 1).eq("payStatus", 2).gt("surplusDividedAmount", 0));
        }
        if(payType == 2){//平台充值(补贴金额)
            rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>()
                   .eq("payType", 2).eq("payStatus", 2).gt("surplusDividedAmount", 0));
        }
        for (RechargeRecord rechargeRecord : rechargeRecords) {
            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
            if(surplusDividedAmount.compareTo(amount) >= 0){//够分账
                DivisionRecord divisionRecord = new DivisionRecord();
                divisionRecord.setUserType(1);
                divisionRecord.setUserId(driver.getId());
                divisionRecord.setOrderId(rechargeRecord.getId().longValue());
                divisionRecord.setSourceType(payType == 1 ? 3 : 2);
                divisionRecord.setAmount(amount);
                divisionRecord.setMerchantNumber(driver.getMerchantNumber());
                divisionRecord.setState(1);
                divisionRecord.setCreateTime(new Date());
                divisionRecordService.insert(divisionRecord);
                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - amount);
                rechargeRecordService.updateById(rechargeRecord);
                Complete complete = new Complete();
                complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
                complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
                complete.setParameter1(divisionRecord.getId().toString());
                complete.setParameter2(rechargeRecord.getId() + "_" + cashWithdrawal.getId());
                //分账方列表
                List<PamentOrderUser> splitList = new ArrayList<>();
                PamentOrderUser pamentOrderUser = new PamentOrderUser();
                pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
                pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                pamentOrderUser.setSplitType("1");
                splitList.add(pamentOrderUser);
                complete.setSplitList(splitList);
                TrhRequest<Complete> request = new TrhRequest();
                InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject = JSON.parseObject(execute.getResult());
                    Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
                    String merOrderId = jsonObject.getString("merOrderId");
                    if(2 == status){
                        System.err.println("司机提现分账失败:" + execute.getMsg());
                        break;
                    }
                    if(1 == status){
                        divisionRecord.setMerOrderId(merOrderId);
                        divisionRecord.setPayTime(new Date());
                        divisionRecord.setState(2);
                        divisionRecordService.updateById(divisionRecord);
                        //间隔10秒开始调用确认收货后开始提现
                        new Timer().schedule(new TimerTask() {//确认收货和提现
                            @Override
                            public void run() {
                                confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                            }
                        }, 60000);
                    }
                }else{
                    System.err.println("司机提现分账处理异常 :" + execute.getMsg());
                    return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
                }
            }else{//不够分账
                DivisionRecord divisionRecord = new DivisionRecord();
                divisionRecord.setUserType(1);
                divisionRecord.setUserId(driver.getId());
                divisionRecord.setOrderId(rechargeRecord.getId().longValue());
                divisionRecord.setSourceType(payType == 1 ? 3 : 2);
                divisionRecord.setAmount(surplusDividedAmount);
                divisionRecord.setMerchantNumber(driver.getMerchantNumber());
                divisionRecord.setState(1);
                divisionRecord.setCreateTime(new Date());
                divisionRecordService.insert(divisionRecord);
                rechargeRecord.setSurplusDividedAmount(0D);
                rechargeRecordService.updateById(rechargeRecord);
                Complete complete = new Complete();
                complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
                complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
                complete.setParameter1(divisionRecord.getId().toString());
                //分账方列表
                List<PamentOrderUser> splitList = new ArrayList<>();
                PamentOrderUser pamentOrderUser = new PamentOrderUser();
                pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
                pamentOrderUser.setSplitAmount(new BigDecimal(surplusDividedAmount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                pamentOrderUser.setSplitType("1");
                splitList.add(pamentOrderUser);
                complete.setSplitList(splitList);
                TrhRequest<Complete> request = new TrhRequest();
                InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject = JSON.parseObject(execute.getResult());
                    Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
                    String merOrderId = jsonObject.getString("merOrderId");
                    if(2 == status){
                        System.err.println("司机提现分账失败:" + execute.getMsg());
                        break;
                    }
                    if(1 == status){
                        divisionRecord.setMerOrderId(merOrderId);
                        divisionRecord.setPayTime(new Date());
                        divisionRecord.setState(2);
                        divisionRecordService.updateById(divisionRecord);
                        //间隔10秒开始调用确认收货后开始提现
                        new Timer().schedule(new TimerTask() {//确认收货和提现
                            @Override
                            public void run() {
                                confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                            }
                        }, 60000);
                    }
                }else{
                    System.err.println("司机提现分账处理异常 :" + execute.getMsg());
                    return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
                }
                amount -= surplusDividedAmount;
            }
        }
        return ResultUtil.success();
    }
    public ResultUtil fenzhang(Driver driver, RechargeRecord rechargeRecord, CashWithdrawal cashWithdrawal, Integer sourceType, Double amount){
        DivisionRecord divisionRecord = new DivisionRecord();
        divisionRecord.setUserType(1);
        divisionRecord.setUserId(driver.getId());
        divisionRecord.setOrderId(rechargeRecord.getId().longValue());
        divisionRecord.setSourceType(sourceType);
        divisionRecord.setAmount(amount);
        divisionRecord.setMerchantNumber(driver.getMerchantNumber());
        divisionRecord.setState(1);
        divisionRecord.setCreateTime(new Date());
        divisionRecordService.insert(divisionRecord);
        Complete complete = new Complete();
        complete.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
        complete.setNotifyUrl(callbackPath + "/base/driver/withdrawCashFZCallback");
        complete.setParameter1(divisionRecord.getId().toString());
        //分账方列表
        List<PamentOrderUser> splitList = new ArrayList<>();
        PamentOrderUser pamentOrderUser = new PamentOrderUser();
        pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        pamentOrderUser.setSplitType("1");
        splitList.add(pamentOrderUser);
        complete.setSplitList(splitList);
        TrhRequest<Complete> request = new TrhRequest();
        InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
            String merOrderId = jsonObject.getString("merOrderId");
            if(2 == status){
                System.err.println("司机提现分账失败:" + execute.getMsg());
                return ResultUtil.error("司机提现分账失败 :" + execute.getMsg());
            }
            if(1 == status){
                divisionRecord.setMerOrderId(merOrderId);
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                //间隔10秒开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                    }
                }, 60000);
            }
        }else{
            System.err.println("司机提现分账处理异常 :" + execute.getMsg());
            return ResultUtil.error("司机提现分账处理异常 :" + execute.getMsg());
        }
        return ResultUtil.success();
    }
    /**
     * 分账后的确认收货和提现操作
     * @param driver
     * @param rechargeRecord
     * @param divisionRecord
     * @param cashWithdrawal
     */
    public void confirmReceipt(Driver driver, RechargeRecord rechargeRecord, DivisionRecord divisionRecord, CashWithdrawal cashWithdrawal){
        Receive receive = new Receive();
        receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
        receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        List<ReceiveUser> splitList = new ArrayList<>();
        ReceiveUser receiveUser = new ReceiveUser();
        receiveUser.setSplitUserId(driver.getMerchantNumber());
        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        splitList.add(receiveUser);
        receive.setSplitList(splitList);
        TrhRequest<Receive> request = new TrhRequest();
        InterfaceResponse execute1 = request.execute(receive, Receive.SERVICE_CODE);//确认收货
        if("0000".equals(execute1.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute1.getResult());
            String merOrderId = jsonObject.getString("merOrderId");
            if(ToolUtil.isNotEmpty(merOrderId)){
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        Withdraw withdraw = new Withdraw();
                        withdraw.setUserId(driver.getMerchantNumber());
                        withdraw.setAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                        withdraw.setOrderName("账户余额提现");
                        withdraw.setRemark("账户余额提现");
                        withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
                        withdraw.setParameter1(cashWithdrawal.getId().toString());
                        TrhRequest<Withdraw> request1 = new TrhRequest();
                        InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
                        if("0000".equals(execute.getCode())){
                            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                            String merOrderId1 = jsonObject1.getString("merOrderId");
                            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                            if(1 == status){
                                cashWithdrawal.setOrderNumber(merOrderId1);
                                cashWithdrawal.setState(2);
                                CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
                            }
                            if(2 == status){
                                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                            }
                        }else{
                            System.err.println("结算接口异常【提现】:" + execute.getMsg());
                        }
                    }
                }, 60000);
            }
        }else{
            System.err.println("分账确认收货异常【提现】:" + execute1.getMsg());
        }
    }
    /**
     * 提现分账的异步回调
     * @param interfaceResponse
     */
    @Override
    public void withdrawCashFZCallback(InterfaceResponse interfaceResponse) {
        if("0000".equals(interfaceResponse.getCode())){
            JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
            Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
            String merOrderId = jsonObject.getString("merOrderId");
            if(2 == status){
                System.err.println("司机提现分账失败:" + interfaceResponse.getMsg());
                return;
            }
            if(1 == status){
                String parameter1 = jsonObject.getString("parameter1");
                String parameter2 = jsonObject.getString("parameter2");
                DivisionRecord divisionRecord = divisionRecordService.selectById(parameter1);
                if(divisionRecord.getState() == 2){
                    return;
                }
                divisionRecord.setMerOrderId(merOrderId);
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                Driver driver = driverService.selectById(divisionRecord.getUserId());
                String[] s = parameter2.split("_");
                RechargeRecord rechargeRecord = rechargeRecordService.selectById(s[0]);
                CashWithdrawal cashWithdrawal = this.selectById(s[1]);
                //间隔10秒开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                    }
                }, 60000);
            }
        }else{
            System.err.println("司机提现分账异常:" + interfaceResponse.getMsg());
        }
    }
    /**
     * 提现确认收货后的结算回调
     * @param interfaceResponse
     */
    @Override
    public void withdrawCashCallback(InterfaceResponse interfaceResponse) {
        if("0000".equals(interfaceResponse.getCode())){
            JSONObject jsonObject1 = JSON.parseObject(interfaceResponse.getResult());
            String merOrderId1 = jsonObject1.getString("merOrderId");
            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
            if(1 == status){
                String parameter1 = jsonObject1.getString("parameter1");
                CashWithdrawal cashWithdrawal = this.selectById(parameter1);
                cashWithdrawal.setOrderNumber(merOrderId1);
                cashWithdrawal.setState(2);
                this.updateById(cashWithdrawal);
            }
            if(2 == status){
                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
            }
        }else{
            System.err.println("结算接口异常【提现】:" + interfaceResponse.getMsg());
        }
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DivisionRecordServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.supersavedriving.driver.modular.system.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.driver.modular.system.dao.DivisionRecordMapper;
import com.supersavedriving.driver.modular.system.model.DivisionRecord;
import com.supersavedriving.driver.modular.system.service.IDivisionRecordService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @date 2023/5/6 16:42
 */
@Service
public class DivisionRecordServiceImpl extends ServiceImpl<DivisionRecordMapper, DivisionRecord> implements IDivisionRecordService {
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverBankServiceImpl.java
@@ -64,7 +64,7 @@
        bindAccount.setPhone(phone);
        TrhRequest<BindAccount> request = new TrhRequest();
        InterfaceResponse execute = request.execute(bindAccount, BindAccount.SERVICE_CODE);
        if(!"0000".equals(execute.getResult())){
        if(!"0000".equals(execute.getCode())){
            return ResultUtil.error(execute.getMsg());
        }
        JSONObject jsonObject = JSON.parseObject(execute.getResult());
@@ -91,7 +91,7 @@
        TrhRequest<UnbindAccount> request = new TrhRequest<>();
        InterfaceResponse execute = request.execute(unbindAccount, UnbindAccount.SERVICE_CODE);
        if(!"0000".equals(execute.getResult())){
        if(!"0000".equals(execute.getCode())){
            return ResultUtil.error(execute.getMsg());
        }
        JSONObject jsonObject = JSON.parseObject(execute.getResult());
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -13,11 +13,12 @@
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.dao.DriverMapper;
import com.supersavedriving.driver.modular.system.util.*;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
import com.supersavedriving.driver.modular.system.util.MallBook.model.Register;
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil;
import com.supersavedriving.driver.modular.system.util.weChat.WeChatUtil;
import com.supersavedriving.driver.modular.system.util.weChat.model.Code2Session;
import com.supersavedriving.driver.modular.system.warpper.*;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
@@ -40,8 +41,12 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 司机
@@ -101,6 +106,18 @@
    @Autowired
    private PushUtil pushUtil;
    @Autowired
    private WeChatUtil weChatUtil;
    @Value("${callbackPath}")
    private String callbackPath;
    @Value("${wx.appletsAppid}")
    private String appletsAppid;
    @Value("${alipay.appid}")
    private String appid;
    /**
@@ -134,7 +151,7 @@
        //新账号
        if(null == driver){
            driver = new Driver();
            driver.setCode(UUIDUtil.getNumberRandom(16));
            driver.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            try {
                driver = setDriverParamete(driver, driverRegisterWarpper);
            }catch (Exception e){
@@ -142,6 +159,29 @@
            }
            driver.setCreateTime(new Date());
            this.insert(driver);
            //司机邀请注册奖励
            if(null != driver.getInviterId()){
                Driver driver1 = this.selectById(driver.getInviterId());
                SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
                if(null != systemConfig){
                    Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7");
                    if(num7 > 0){
                        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                        accountChangeDetail.setUserType(2);
                        accountChangeDetail.setUserId(driver1.getId());
                        accountChangeDetail.setType(2);
                        accountChangeDetail.setChangeType(5);
                        accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
                        driver1.setIntegral(driver1.getIntegral() + num7);
                        accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
                        accountChangeDetail.setExplain("邀请司机注册奖励");
                        accountChangeDetailService.saveData(accountChangeDetail);
                        this.updateById(driver1);
                    }
                }
            }
        }
        return ResultUtil.success();
    }
@@ -161,6 +201,10 @@
        driver.setIdcardBack(driverRegisterWarpper.getIdcardBack());
        driver.setIdcardFront(driverRegisterWarpper.getIdcardFront());
        driver.setDriverLicense(driverRegisterWarpper.getDriverLicense());
        if(ToolUtil.isNotEmpty(driverRegisterWarpper.getFirstCertificateTime())){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            driver.setFirstCertificateTime(sdf.parse(driverRegisterWarpper.getFirstCertificateTime()));
        }
        //注册地
        String code = driverRegisterWarpper.getCode();
        BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("districtCode", code).eq("status", 1));
@@ -178,8 +222,10 @@
        driver.setCityCode(branchOffice.getCityCode());
        driver.setAreaCode(branchOffice.getDistrictCode());
        driver.setAreaName(branchOffice.getDistrictName());
        driver.setInviterType(driverRegisterWarpper.getInviterType());
        driver.setInviterId(driverRegisterWarpper.getInviterId());
        if(null != driverRegisterWarpper.getInviterId()){
            driver.setInviterType(driverRegisterWarpper.getInviterType());
            driver.setInviterId(driverRegisterWarpper.getInviterId());
        }
        driver.setApprovalStatus(1);
        driver.setApprovalNotes("");
        driver.setApprovalTime(null);
@@ -200,6 +246,9 @@
     */
    @Override
    public ResultUtil<TokenWarpper> driverLogin(String receiver, String phone, String code) throws Exception {
        if(ToolUtil.isEmpty(receiver)){
            receiver = "+86";
        }
        String value = redisUtil.getValue(receiver + phone);
        if(!"12345".equals(code) && ToolUtil.isEmpty(value)){
            return ResultUtil.error("短信验证码无效");
@@ -324,8 +373,8 @@
            if(token.length() > 16){
                key = token.substring(token.length() - 16);
            }
            redisUtil.setStrValue(key, driver.getId().toString(), 7 * 24 * 60 * 60);//7天
            redisUtil.setStrValue("DRIVER_" + phone, key, 7 * 24 * 60 * 60);//7天
            redisUtil.setStrValue(key, driver.getId().toString(), 94608000);//7天
            redisUtil.setStrValue("DRIVER_" + phone, key, 94608000);//7天
            //下线
            for (int i = 0; i < 5; i++) {
@@ -416,18 +465,24 @@
            //找到中心点
            GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(lon), Double.valueOf(lat));
            //构造半径
            Distance distanceR = new Distance(5D, Metrics.KILOMETERS);
            Distance distanceR = new Distance(10D, Metrics.KILOMETERS);
            //画圆
            Circle circle = new Circle(geoJsonPoint, distanceR);
            // 构造query对象
            Query query = Query.query(Criteria.where("location").withinSphere(circle));
            List<Location> locations = mongoTemplate.find(query, Location.class);
            locations.forEach(s -> {
                String value1 = redisUtil.getValue("DRIVER" + s.getDriverId());
                if(s.getDriverId().compareTo(uid) != 0 && ToolUtil.isNotEmpty(value1)){
                    list.add(s.getLocation().getX() + "," + s.getLocation().getY());
            List<Integer> collect = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
            List<Driver> drivers = this.selectBatchIds(collect);
            for (Driver driver : drivers) {
                String value1 = redisUtil.getValue("DRIVER" + driver.getId());
                if(ToolUtil.isEmpty(value1)){
                    continue;
                }
            });
                if(driver.getId().compareTo(uid) == 0){
                    continue;
                }
                list.add(value1 + "," + driver.getServerStatus());
            }
        }
        return ResultUtil.success(list);
    }
@@ -482,7 +537,7 @@
    @Override
    public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception {
        PromotionWarpper promotionWarpper = new PromotionWarpper();
        promotionWarpper.setUrl("http://121.37.15.157/share/driverShare/index.html?inviterId=" + uid);
        promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid);
        int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1));
        int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1));
        promotionWarpper.setTotal(user + driver);
@@ -531,7 +586,7 @@
            if(h > 0 && h > time){
                Driver driver = this.selectById(driverId);
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(driverId);
                accountChangeDetail.setType(2);
@@ -560,7 +615,8 @@
        DriverInfoWarpper driverInfo = new DriverInfoWarpper();
        BeanUtils.copyProperties(driver, driverInfo);
        driverInfo.setWithdrawBalance(driver.getBalance());
        driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
        driverInfo.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机充值+平台充值
        driverInfo.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(driver.getCouponBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入
        YouTuiDriver youTuiDriver = youTuiDriverService.selectOne(new EntityWrapper<YouTuiDriver>().eq("driverId", uid)
                .eq("state", 2).last(" and failureTime > now() order by failureTime limit 0, 1"));
        if(null != youTuiDriver){
@@ -639,7 +695,7 @@
        List<AccountChangeDetail> list = new ArrayList<>();
        for (Driver driver : drivers) {
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setCreateTime(new Date());
@@ -663,7 +719,7 @@
        Driver driver = this.selectById(uid);
        //调起微信
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3);
        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        RechargeRecord rechargeRecord = new RechargeRecord();
        rechargeRecord.setType(2);
        rechargeRecord.setUserId(uid);
@@ -675,84 +731,126 @@
        rechargeRecord.setAgentId(driver.getAgentId());
        rechargeRecordService.insert(rechargeRecord);
        PaymentOrder paymentOrder = new PaymentOrder();
        paymentOrder.setBizOrderId(out_trade_no);
        paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        paymentOrder.setOrderName("账户充值");
        paymentOrder.setPayType("WX_MINI");
        paymentOrder.setTransferType("0");
        paymentOrder.setAsynSplitFlag("1");
        paymentOrder.setAppid(appletsAppid);
        paymentOrder.setOpenid(driver.getOpenid());
        paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress());
        List<PaymentOrderGood> goodsDetail = new ArrayList<>();
        PaymentOrderGood paymentOrderGood = new PaymentOrderGood();
        paymentOrderGood.setGoodsName("充值");
        goodsDetail.add(paymentOrderGood);
        paymentOrder.setGoodsDetail(goodsDetail);
        paymentOrder.setFrontUrl(callbackPath + "/base/driver/balanceRechargeCallback");//前端回调地址
        paymentOrder.setNotifyUrl(callbackPath + "/base/driver/balanceRechargeCallback");
        paymentOrder.setParameter1(out_trade_no);
        ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/driver/balanceRechargeCallback", "APP");
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    int num = 1;
                    int wait = 0;
                    while (num <= 10){
                        int min = 5000;
                        wait += (min * num);
                        RechargeRecord rechargeRecord1 = rechargeRecordService.selectOne(new EntityWrapper<RechargeRecord>().eq("code", out_trade_no));
                        if(rechargeRecord1.getPayStatus() != 1){
                            return;
                        }
                        /**
                         * SUCCESS--支付成功
                         * REFUND--转入退款
                         * NOTPAY--未支付
                         * CLOSED--已关闭
                         * REVOKED--已撤销(刷卡支付)
                         * USERPAYING--用户支付中
                         * PAYERROR--支付失败(其他原因,如银行返回失败)
                         * ACCEPT--已接收,等待扣款
                         */
                        ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(out_trade_no, "");
                        if(resultUtil.getCode() == 200){
                            Map<String, String> map = resultUtil.getData();
                            String trade_type = map.get("trade_type");
                            String trade_state = map.get("trade_state");
                            String transaction_id = map.get("transaction_id");
                            if("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
                                rechargeRecordService.deleteById(rechargeRecord1.getId());
        TrhRequest<PaymentOrder> request = new TrhRequest();
        InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE);
        if(!"0000".equals(execute.getCode())){
            return ResultUtil.error(execute.getMsg());
        }
        JSONObject jsonObject = JSON.parseObject(execute.getResult());
        String status = jsonObject.getString("status");
        if("2".equals(status)){
            return ResultUtil.error("失败");
        }
        String merOrderId = jsonObject.getString("merOrderId");
        String payCode = jsonObject.getString("payCode");
        if(ToolUtil.isNotEmpty(payCode)){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        int num = 1;
                        int wait = 0;
                        while (num <= 10){
                            int min = 5000;
                            wait += (min * num);
                            RechargeRecord rechargeRecord1 = rechargeRecordService.selectOne(new EntityWrapper<RechargeRecord>().eq("code", out_trade_no));
                            if(rechargeRecord1.getPayStatus() != 1){
                                return;
                            }
                            if("SUCCESS".equals(trade_state)){
                                Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                accountChangeDetail.setUserType(2);
                                accountChangeDetail.setUserId(uid);
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                accountChangeDetail.setChangeType(3);
                                accountChangeDetail.setType(1);
                                accountChangeDetail.setCreateTime(new Date());
                                accountChangeDetail.setExplain("余额充值");
                                accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                driver1.setBalance(driver1.getBalance() + amount);
                                accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                DriverServiceImpl.this.updateById(driver1);
                                accountChangeDetailService.saveData(accountChangeDetail);
                            QueryOrder queryOrder = new QueryOrder();
                            queryOrder.setOriginalMerOrderId(merOrderId);
                            queryOrder.setQueryType("1");
                            TrhRequest<QueryOrder> request = new TrhRequest();
                            InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE);
                            if("0000".equals(execute1.getCode())){
                                JSONObject jsonObject1 = JSON.parseObject(execute1.getResult());
                                String status1 = jsonObject1.getString("status");
                                if("0".equals(status1)){//待处理
                                    Thread.sleep(wait);
                                    num++;
                                }
                                if("1".equals(status1)){//成功
                                    String merOrderId = jsonObject1.getString("merOrderId");
                                    Driver driver1 = DriverServiceImpl.this.selectById(rechargeRecord1.getUserId());
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setChangeType(3);
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setCreateTime(new Date());
                                    accountChangeDetail.setExplain("账户充值");
                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    DriverServiceImpl.this.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                rechargeRecord1.setPayTime(new Date());
                                rechargeRecord1.setPayStatus(2);
                                rechargeRecord1.setOrderNumber(transaction_id);
                                rechargeRecordService.updateById(rechargeRecord1);
                                return;
                            }
                            if("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)){
                                    rechargeRecord1.setPayTime(new Date());
                                    rechargeRecord1.setPayStatus(2);
                                    rechargeRecord1.setOrderNumber(merOrderId);
                                    rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount());
                                    rechargeRecordService.updateById(rechargeRecord1);
                                    break;
                                }
                                if("2".equals(status1) || 10 == num){//失败
                                    rechargeRecordService.deleteById(rechargeRecord1.getId());
                                    break;
                                }
                            }else{
                                Thread.sleep(wait);
                                num++;
                            }
                        }else{
                            Thread.sleep(wait);
                            num++;
                        }
                        if(10 == num){
                            rechargeRecordService.deleteById(rechargeRecord1.getId());
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
        return weixinpay;
            }).start();
        }
        return ResultUtil.success(payCode);
    }
    /**
     * 司机端跳小程序支付
     * @param driverId
     * @param jscode
     * @param amount
     * @return
     * @throws Exception
     */
    @Override
    public ResultUtil balanceRecharge1(Integer driverId, String jscode, Double amount) throws Exception {
        Code2Session code2Session = weChatUtil.code2Session(jscode);
        if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
            return ResultUtil.error(code2Session.getErrmsg());
        }
        String openid = code2Session.getOpenid();
        Driver driver = this.selectById(driverId);
        driver.setOpenid(openid);
        this.updateById(driver);
        return balanceRecharge(driverId, amount);
    }
    /**
     * 充值回调通知逻辑处理
@@ -769,20 +867,21 @@
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setUserType(2);
        accountChangeDetail.setUserId(rechargeRecord1.getUserId());
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setChangeType(3);
        accountChangeDetail.setType(1);
        accountChangeDetail.setCreateTime(new Date());
        accountChangeDetail.setExplain("余额充值");
        accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
        driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount());
        accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
        accountChangeDetail.setExplain("账户充值");
        accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
        this.updateById(driver1);
        accountChangeDetailService.saveData(accountChangeDetail);
        rechargeRecord1.setPayTime(new Date());
        rechargeRecord1.setPayStatus(2);
        rechargeRecord1.setOrderNumber(transaction_id);
        rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount());
        rechargeRecordService.updateById(rechargeRecord1);
    }
@@ -871,18 +970,19 @@
     * @throws Exception
     */
    @Override
    public ResultUtil microenterprise(Integer uid, String name, String number, String phone) throws Exception {
    public ResultUtil microenterprise(Integer uid, String name, String number, String phone, String notifyUrl) throws Exception {
        Driver driver = this.selectById(uid);
        Register registerVO = new Register();
        registerVO.setMerUserId("driver_" + uid);
        registerVO.setMerUserId(driver.getCode());//"driver_" + uid
        registerVO.setPhone(phone);
        registerVO.setUserType("0");
        registerVO.setUserName(name);
        registerVO.setCertId(number);
        registerVO.setNotifyUrl("");
        registerVO.setNotifyUrl(callbackPath + notifyUrl);
        registerVO.setParameter1(uid.toString());
        TrhRequest<Register> request = new TrhRequest();
        InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE);
        if(!"0000".equals(execute.getResult())){
        if(!"0000".equals(execute.getCode())){
            return ResultUtil.error(execute.getMsg());
        }
        JSONObject jsonObject = JSON.parseObject(execute.getResult());
@@ -891,6 +991,10 @@
            return ResultUtil.error("失败");
        }
        if("0".equals(status)){
            driver.setMerchantIDCode(number);
            driver.setMerchantName(name);
            driver.setMerchantPhone(phone);
            this.updateById(driver);
            return ResultUtil.error("处理中");
        }
        String userId = jsonObject.getString("userId");
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java
@@ -53,22 +53,25 @@
    @Override
    public ResultUtil driverWork(Integer driverId) throws Exception {
        Driver driver = driverService.selectById(driverId);
        if(ToolUtil.isEmpty(driver.getMerchantNumber())){
            return ResultUtil.error("请先注册商户号");
        }
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6));
        Double num1 = JSON.parseObject(systemConfig.getContent()).getDouble("num1");
        if(driver.getBalance() == null || driver.getBalance().compareTo(num1) < 0){
            return ResultUtil.error("账户余额不足,请先充值");
        }
        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
        Integer num5 = jsonObject.getInteger("num5");
        OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("oldDriverId", driverId)
                .eq("status", 1).isNotNull("successTime").orderBy("createTime desc limit 0, 1"));
        if(null != orderTransfer){
            int i = Double.valueOf((System.currentTimeMillis() - orderTransfer.getSuccessTime().getTime()) / 60000).intValue();
            if(num5 > i){
                return ResultUtil.error("暂时还无法上班,请" + (num5 - i) + "分钟后重试");
            }
        }
//        systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
//        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
//        Integer num5 = jsonObject.getInteger("num5");
//        OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("oldDriverId", driverId)
//                .eq("status", 1).isNotNull("successTime").orderBy("createTime desc limit 0, 1"));
//        if(null != orderTransfer){
//            int i = Double.valueOf((System.currentTimeMillis() - orderTransfer.getSuccessTime().getTime()) / 60000).intValue();
//            if(num5 > i){
//                return ResultUtil.error("暂时还无法上班,请" + (num5 - i) + "分钟后重试");
//            }
//        }
        DriverWork driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driverId).eq("status", 1));
        if(null != driverWork){
@@ -116,4 +119,20 @@
        driverService.updateById(driver);
        return ResultUtil.success();
    }
    @Override
    public void taskDriverOffWork() {
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6));
        Double num1 = JSON.parseObject(systemConfig.getContent()).getDouble("num1");
        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1).lt("balance", num1));
        for (Driver driver : drivers) {
            DriverWork driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver.getId()).eq("status", 1));
            if(null != driverWork){
                driverWork.setStatus(2);
                driverWork.setOffWorkTime(new Date());
                this.updateById(driverWork);
            }
        }
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java
@@ -48,6 +48,10 @@
    @Override
    public void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception {
        Integer orderId = driverPositionWarpper.getOrderId();
        Order order = orderService.selectById(orderId);
        if(order.getState() != 105 && order.getState() != 401){
            return;
        }
        Integer orderType = driverPositionWarpper.getOrderType();
        File file = new File(filePath + orderId + ".json");
        if(!file.exists()){
@@ -59,14 +63,22 @@
            OrderPositionWarpper orderPositionWarpper = orderPositionWarppers.get(orderPositionWarppers.size() - 1);
            saveOrderMileage(driverPositionWarpper, orderPositionWarpper);
        }
        //大于50米才存储有效定位数据
        //大于100米才存储有效定位数据
        if(orderPositionWarppers.size() > 0){
            OrderPositionWarpper orderPositionWarpper1 = orderPositionWarppers.get(orderPositionWarppers.size() - 1);
            String fromLonLat = driverPositionWarpper.getLon() + "," + driverPositionWarpper.getLat();
            String toLonLat = orderPositionWarpper1.getLon() + "," + orderPositionWarpper1.getLat();
            Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat);
            Double wgs84 = distance.get("WGS84");
            if(wgs84 >= 50){
//            long timeMillis = System.currentTimeMillis();
//            long time = orderPositionWarpper1.getInsertTime().getTime();
//            long t = timeMillis - time;
//            if(wgs84 >= 200 && t <= 8){//排除位置漂移
//                return;
//            }
            if(wgs84 >= 50){//5秒165米
                OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper();
                BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper);
                orderPositionWarpper.setInsertTime(new Date());
@@ -99,7 +111,15 @@
        Order order = orderService.selectById(driverPositionWarpper.getOrderId());
        Double wgs84 = distance.get("WGS84");
        Integer num = map.get(order.getId().toString());
        if(50 < wgs84){
//        long timeMillis = System.currentTimeMillis();
//        long time = orderPositionWarpper.getInsertTime().getTime();
//        long t = timeMillis - time;
//        if(wgs84 >= 200 && t <= 8){//排除位置漂移
//            return;
//        }
        if(50 < wgs84){//5秒165米
            order.setActualMileage(order.getActualMileage() + wgs84.intValue());
            orderService.updateById(order);
            map.put(order.getId().toString(), 0);
@@ -115,10 +135,14 @@
                }
            }
        }
        if(50 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据)
        if(50 >= wgs84 && 3 <= (null == num ? 0 : num)){//20秒(5秒上传一次数据)
            Integer integer = map.get(order.getId().toString());
            map.put(order.getId().toString(), null == integer ? 0 : integer++);
            map.put(order.getId().toString(), null == integer ? 0 : integer + 1);
            //进入等待状态
            if(order.getState() == 401){
                return;
            }
            ProcessOperationsWarpper processOperationsWarpper = new ProcessOperationsWarpper();
            processOperationsWarpper.setOrderId(order.getId());
            processOperationsWarpper.setState(401);
@@ -128,9 +152,9 @@
                e.printStackTrace();
            }
        }
        if(50 >= wgs84 && 12 > (null == num ? 0 : num)){
        if(50 >= wgs84 && 3 > (null == num ? 0 : num)){
            Integer integer = map.get(order.getId().toString());
            map.put(order.getId().toString(), null == integer ? 0 : integer++);
            map.put(order.getId().toString(), null == integer ? 0 : integer + 1);
        }
    }
@@ -168,4 +192,9 @@
    }
    @Override
    public void initMap(Long orderId) throws Exception {
        map.put(orderId.toString(), 0);
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -10,6 +10,8 @@
import com.supersavedriving.driver.modular.system.service.*;
import com.supersavedriving.driver.modular.system.util.*;
import com.supersavedriving.driver.modular.system.util.GaoDe.MapUtil;
import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
import com.supersavedriving.driver.modular.system.warpper.*;
import com.supersavedriving.driver.core.util.ToolUtil;
@@ -19,8 +21,11 @@
import com.supersavedriving.driver.modular.system.warpper.AddOrderWarpper;
import com.supersavedriving.driver.modular.system.warpper.HallOrderList;
import com.supersavedriving.driver.modular.system.warpper.OrderInfoWarpper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.geo.Circle;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Metrics;
@@ -31,7 +36,6 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@@ -44,6 +48,8 @@
*/
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
    Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
    @Autowired
    private IDriverWorkService driverWorkService;
@@ -96,7 +102,20 @@
    @Autowired
    private IUserToCouponService userToCouponService;
    private Map<String, Timer> timerMap = new HashMap<>();
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private IDivisionRecordService divisionRecordService;
    @Autowired
    private IAgentService agentService;
    @Autowired
    private IOrderPositionService orderPositionService;
    @Value("${callbackPath}")
    private String callbackPath;//支付回调网关地址
@@ -147,13 +166,26 @@
            driver.setServerStatus(2);
            order.setOrderTakingTime(new Date());
        }
        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3));
        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
        order.setSource(2);
        AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>().eq("phone", addOrderWarpper.getPhone()).eq("status", 1));
        if(null != appUser){
            order.setUserId(appUser.getId());
        }
        String startAddress = addOrderWarpper.getStartAddress();
        startAddress = startAddress.replaceAll("& #40;", "(");
        startAddress = startAddress.replaceAll("& #41;", ")");
        addOrderWarpper.setStartAddress(startAddress);
        if(ToolUtil.isNotEmpty(addOrderWarpper.getEndAddress())){
            String endAddress = addOrderWarpper.getEndAddress();
            endAddress = endAddress.replaceAll("& #40;", "(");
            endAddress = endAddress.replaceAll("& #41;", ")");
            addOrderWarpper.setEndAddress(endAddress);
        }
        order.setUserName(addOrderWarpper.getUserName());
        order.setUserPhone(addOrderWarpper.getPhone());
        order.setAgentId(driver.getAgentId());
@@ -181,14 +213,16 @@
                    .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
            city = null != weatherCity ? weatherCity.getId().toString() : "";
        }
        order.setCreateTime(new Date());
        order = getOrderPrice(1, d, 0, order, city);
        order.setState(null == order.getDriverId() ? 101 : 102);
        order.setStatus(1);
        order.setCreateTime(new Date());
        this.insert(order);
        driverService.updateById(driver);
        //推送状态
        if(null != order.getDriverId()){
            //推动订单数据
            redisUtil.addSetValue("orderService", order.getId().toString());
            pushUtil.pushOrderStatus(uid, 2, order.getId(), order.getStatus());
        }else{
            //开始推单
@@ -196,7 +230,7 @@
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushOrder(finalOrder);
                    pushOrder(finalOrder.getId());
                }
            }).start();
        }
@@ -228,7 +262,7 @@
        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
        JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard");
        JSONObject extraCost = jsonObject.getJSONObject("ExtraCost");
        Date date = new Date();
        Date date = order.getCreateTime();
        for (int i = 0; i < chargeStandard.size(); i++) {
            JSONObject jsonObject1 = chargeStandard.getJSONObject(i);
            String num1 = jsonObject1.getString("num1");
@@ -244,43 +278,61 @@
            Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11
            String[] split = num1.split(":");
            Integer hour1 = Integer.valueOf(split[0]);
            String[] split1 = num2.split(":");
            Integer hour2 = Integer.valueOf(split1[0]);
            Calendar s = Calendar.getInstance();
            s.setTime(date);
            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
            s.set(Calendar.HOUR_OF_DAY, hour1);
            s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
            s.set(Calendar.SECOND, 0);
            split = num2.split(":");
            Calendar e = Calendar.getInstance();
            e.setTime(date);
            e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
            e.set(Calendar.MINUTE, Integer.valueOf(split[1]));
            e.set(Calendar.HOUR_OF_DAY, hour2);
            e.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
            e.set(Calendar.SECOND, 0);
            if(hour1 > hour2){
                if(s.getTimeInMillis() > date.getTime()){
                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1);
                }else{
                    e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1);
                }
            }
            if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
                if(num3.compareTo(distance) >= 0){//起步里程内
                    order.setStartDistance(distance);//起步里程
                    order.setStartPrice(num4);//起步价
                }else{
                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程
                    BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN));
                    BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                    Double distance1 = distance;//原始里程
                    order.setStartDistance(num3);//起步里程
                    order.setStartPrice(num4);//起步价
                    order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                    order.setOverDriveDistance(new BigDecimal(distance1 - num3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出起步里程
                    distance = new BigDecimal(distance).setScale(0, RoundingMode.UP).doubleValue();//向上取整
                    BigDecimal divide = new BigDecimal(distance - num3).divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN);
                    BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                    order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费
                    //计算长途费
                    //计算长途费(超出长途起始公里,费用开始按照长途规则计算。)
                    if(distance.compareTo(num7) > 0){
                        order.setStartDistance(0D);//起步里程
                        order.setStartPrice(0D);//起步价
                        order.setOverDriveDistance(0D);//超出起步里程
                        order.setOverDrivePrice(0D);//超出起步里程费
                        order.setLongDistance(num7 + "-" + num8);//长途里程
                        order.setLongDistancePrice(num9);//长途费
                    }
                    //计算长途里程超出的部分
                    if(distance.compareTo(num8) > 0){
                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8));
                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN));
                        order.setOverLongDistance(new BigDecimal(distance1 - num8).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出长途里程
                        BigDecimal divide1 = new BigDecimal(distance - num8).divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN);
                        BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11));
                        order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                        order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费
                    }
                }
@@ -300,12 +352,12 @@
        Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额
        //等待费用
        if(waitTime.compareTo(num1) >= 0){
            order.setWaitTime(num1);//等待时长
        if(waitTime.compareTo(num1 * 60) >= 0){
            order.setWaitTime(num1 * 60);//等待时长
            order.setWaitTimePrice(num2);//等待费用
            Integer w = waitTime - num3;
            BigDecimal multiply = new BigDecimal(w).multiply(new BigDecimal(num4));
            Integer w = waitTime - (num1 * 60);
            BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4));
            order.setOutWaitTime(w);//等待时长超出分钟
            order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用
        }
@@ -316,6 +368,8 @@
            JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent());
            Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价
            if(1 == num11){
                boolean badWeather = WeatherUtil.isBadWeather(city);
                if(badWeather){
                    order.setBadWeatherDistance(num5);//恶劣天气公里
                    order.setBadWeatherPrice(num6);//恶劣天气费
                    if(distance.compareTo(num7) > 0){
@@ -372,7 +426,7 @@
        order.setLongDistancePrice(0D);//长途里程费
        order.setOverLongDistance(0D);//超出长途里程
        order.setOverLongDistancePrice(0d);//超出长途里程费
        order.setWaitTime(0);//等待时长
//        order.setWaitTime(0);//等待时长
        order.setWaitTimePrice(0D);//等待费
        order.setOutWaitTime(0);//超出等待时长
        order.setOutWaitTimePrice(0D);//超出等待时长费
@@ -390,30 +444,217 @@
    /**
     * 订单推送逻辑
     * @param order
     */
    public void pushOrder(Order order){
        /**
         * 1.先找最大推单范围内的优推司机 -》 距离最近
         * 没有1 - 》
         *      2.按照后台推送配置在范围内查找合适司机
         *        合适司:积分 > 评分 > 距离
         *      3.司机没有接单直接将订单置入大厅
         */
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
        if(null == systemConfig){
            return;
    public void pushOrder(Long orderId){
        try {
            Order order = this.selectById(orderId);
            /**
             * 1.先找最大推单范围内的优推司机 -》 距离最近
             * 没有1 - 》
             *      2.按照后台推送配置在范围内查找合适司机
             *        合适司:积分 > 评分 > 距离
             *      3.司机没有接单直接将订单置入大厅
             */
            boolean lock = redisUtil.lock(5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(5);
                    if(lock){
                        break;
                    }else{
                        num1++;
                    }
                }
            }
            if(!lock){
                order.setHallOrder(1);
                this.updateById(order);
                ExtraPushOrder(order);
                redisUtil.unlock();
            }
            SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
            if(null == systemConfig){
                redisUtil.unlock();
                return;
            }
            JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
            Double num3 = jsonObject.getDouble("num3");//推单最大范围
            Integer num4 = jsonObject.getInteger("num4");//接单时间
            String startLat = order.getStartLat();
            String startLng = order.getStartLng();
            //1
            //找到中心点
            GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
            Double num = num3 / 1000;//范围公里
            //构造半径
            Distance distanceR = new Distance(num, Metrics.KILOMETERS);
            //画圆
            Circle circle = new Circle(geoJsonPoint, distanceR);
            // 构造query对象
            Query query = Query.query(Criteria.where("location").withinSphere(circle));
            List<Location> locations = mongoTemplate.find(query, Location.class);
            List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
            Integer driver = null;
            YouTuiDriver youTuiDriver1 = null;
            if(driverIds.size() > 0){
                List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
                        .eq("state", 2).last(" and surplusQuantity > 0 and now() < endTime and now() < failureTime"));
                Double d = null;
                for (YouTuiDriver youTuiDriver : youTuiDrivers) {
                    String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
                    if(ToolUtil.isEmpty(value)){
                        continue;
                    }
                    Driver driver1 = driverService.selectById(youTuiDriver.getDriverId());
                    int count = this.selectCount(new EntityWrapper<Order>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1 || count > 0){
                        continue;
                    }
                    DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
                    if(null == driverWork){
                        continue;
                    }
                    Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                    Double wgs84 = distance.get("WGS84");
                    if(d == null || d.compareTo(wgs84) > 0){
                        d = wgs84;
                        driver = youTuiDriver.getDriverId();
                        youTuiDriver1 = youTuiDriver;
                    }
                }
            }
            if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
                youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
                youTuiDriverService.updateById(youTuiDriver1);
            }
            //开始范围查找
            if(null == driver){
                for (int i = 1; i < 4; i++) {
                    if(null != driver){
                        break;
                    }
                    num = jsonObject.getDouble("num" + i) / 1000;//范围公里
                    //构造半径
                    distanceR = new Distance(num, Metrics.KILOMETERS);
                    //画圆
                    circle = new Circle(geoJsonPoint, distanceR);
                    // 构造query对象
                    query = Query.query(Criteria.where("location").withinSphere(circle));
                    locations = mongoTemplate.find(query, Location.class);
                    driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
                    if(driverIds.size() > 0){
                        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
                                .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
                        if(drivers.size() == 0){
                            continue;
                        }
                        Integer integral = null;//积分
                        Double score = null;//评分
                        Double d = null;
                        for (Driver driver1 : drivers) {
                            String value = redisUtil.getValue("DRIVER" + driver1.getId());
                            if(ToolUtil.isEmpty(value)){
                                continue;
                            }
                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
                            if(null == driverWork){
                                continue;
                            }
                            int count = this.selectCount(new EntityWrapper<Order>().eq("driverId", driver1.getId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401)));
                            if(count > 0){
                                continue;
                            }
                            if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
                                integral = driver1.getIntegral();
                                score = driver1.getScore();
                                driver = driver1.getId();
                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                                Double wgs84 = distance.get("WGS84");
                                d = wgs84;
                                continue;
                            }
                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
                                integral = driver1.getIntegral();
                                score = driver1.getScore();
                                driver = driver1.getId();
                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                                Double wgs84 = distance.get("WGS84");
                                d = wgs84;
                                continue;
                            }
                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                                Double wgs84 = distance.get("WGS84");
                                if(d.compareTo(wgs84) > 0){
                                    d = wgs84;
                                    integral = driver1.getIntegral();
                                    score = driver1.getScore();
                                    driver = driver1.getId();
                                    continue;
                                }
                            }
                        }
                    }
                }
            }
            if(null != driver){
                //防止多笔订单推给一个司机
                Driver driver1 = driverService.selectById(driver);
                driver1.setServerStatus(2);
                driverService.updateById(driver1);
                pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
                //创建定时任务处理订单到大厅
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        Order order1 = OrderServiceImpl.this.selectById(order.getId());
                        if(order1.getState() != 101 && order1.getState() != 201 && order1.getState() != 301 && order1.getDriverId().compareTo(driver1.getId()) != 0){
                            driver1.setServerStatus(1);
                            driverService.updateById(driver1);
                        }
                        if(order1.getState() == 201 || order1.getState() == 301 || (order1.getState() == 101 && null == order1.getDriverId())){
                            driver1.setServerStatus(1);
                            driverService.updateById(driver1);
                        }
                        if(order1.getState() == 201 || (order1.getState() == 101 && null == order1.getDriverId())){
                            order1.setHallOrder(1);
                            OrderServiceImpl.this.updateById(order1);
                            ExtraPushOrder(order);
                        }
                    }
                }, num4 * 1000);
            }else{
                order.setHallOrder(1);
                this.updateById(order);
                ExtraPushOrder(order);
            }
            redisUtil.unlock();
        }catch (Exception e){
            e.printStackTrace();
            redisUtil.unlock();
        }
        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
        Double num3 = jsonObject.getDouble("num3");//推单最大范围
        Integer num4 = jsonObject.getInteger("num4");//接单时间
    }
    public void ExtraPushOrder(Order order){
        String startLat = order.getStartLat();
        String startLng = order.getStartLng();
        //1
        //找到中心点
        GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
        Double num = num3 / 1000;//范围公里
        Double num = 5D;//范围公里
        //构造半径
        Distance distanceR = new Distance(num, Metrics.KILOMETERS);
        //画圆
@@ -422,107 +663,26 @@
        Query query = Query.query(Criteria.where("location").withinSphere(circle));
        List<Location> locations = mongoTemplate.find(query, Location.class);
        List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
        Integer driver = null;
        YouTuiDriver youTuiDriver1 = null;
        if(driverIds.size() > 0){
            List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
                    .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime"));
            Double d = null;
            for (YouTuiDriver youTuiDriver : youTuiDrivers) {
                String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
                if(ToolUtil.isEmpty(value)){
                    continue;
                }
                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                Double wgs84 = distance.get("WGS84");
                if(d == null || d.compareTo(wgs84) > 0){
                    d = wgs84;
                    driver = youTuiDriver.getDriverId();
                    youTuiDriver1 = youTuiDriver;
                }
        if(driverIds.size() == 0){
            return;
        }
        List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1));
        driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList());
        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
                .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
        if(drivers.size() == 0){
            return;
        }
        for (Driver driver1 : drivers) {
            String value = redisUtil.getValue("DRIVER" + driver1.getId());
            if (ToolUtil.isEmpty(value)) {
                continue;
            }
        }
        if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
            youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
            youTuiDriverService.updateById(youTuiDriver1);
        }
        //开始范围查找
        if(null == driver){
            for (int i = 1; i < 4; i++) {
                if(null != driver){
                    break;
                }
                num = jsonObject.getDouble("num" + i) / 1000;//范围公里
                //构造半径
                distanceR = new Distance(num, Metrics.KILOMETERS);
                //画圆
                circle = new Circle(geoJsonPoint, distanceR);
                // 构造query对象
                query = Query.query(Criteria.where("location").withinSphere(circle));
                locations = mongoTemplate.find(query, Location.class);
                driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
                if(driverIds.size() > 0){
                    List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds));
                    if(drivers.size() == 0){
                        continue;
                    }
                    Integer integral = null;
                    Double score = null;
                    Double d = null;
                    for (Driver driver1 : drivers) {
                        if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
                            integral = driver1.getIntegral();
                            score = driver1.getScore();
                            driver = driver1.getId();
                            continue;
                        }
                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
                            integral = driver1.getIntegral();
                            score = driver1.getScore();
                            driver = driver1.getId();
                            continue;
                        }
                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
                            String value = redisUtil.getValue("DRIVER" + driver1.getId());
                            if(ToolUtil.isEmpty(value)){
                                continue;
                            }
                            Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
                            Double wgs84 = distance.get("WGS84");
                            if(d == null || d.compareTo(wgs84) > 0){
                                d = wgs84;
                                driver = driver1.getId();
                                continue;
                            }
                        }
                    }
                }
            }
        }
        if(null != driver){
            pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
            //创建定时任务处理订单到大厅
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    Order order1 = OrderServiceImpl.this.selectById(order.getId());
                    if(order1.getState() == 101 || order1.getState() == 201){
                        order1.setHallOrder(1);
                        OrderServiceImpl.this.updateById(order1);
                    }
                }
            }, num4 * 1000);
        }else{
            order.setHallOrder(1);
            this.updateById(order);
            pushUtil.pushGrabOrderExtras(driver1.getId(), 2);
        }
    }
@@ -539,6 +699,7 @@
        pageNum = (pageNum - 1) * pageSize;
        String value = redisUtil.getValue("DRIVER" + uid);
        List<HallOrderList> hallOrderLists = this.baseMapper.queryOrderHall(pageNum, pageSize);
        List<HallOrderList> lists = new ArrayList<>();
        hallOrderLists.forEach(hallOrderList -> {
            if(ToolUtil.isEmpty(hallOrderList.getAvatar())){
                hallOrderList.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
@@ -548,11 +709,17 @@
                Map<String, Double> distance = GeodesyUtil.getDistance(hallOrderList.getStartLng() + "," + hallOrderList.getStartLat(), value);
                Double wgs84 = distance.get("WGS84");
                hallOrderList.setCurrentDistance(wgs84);
                if(wgs84 > 5000){
                    return;
                }
            }else{
                hallOrderList.setCurrentDistance(0D);
                return;
            }
            lists.add(hallOrderList);
        });
        return hallOrderLists;
        return lists;
    }
@@ -580,6 +747,9 @@
        orderRefusalService.insert(orderRefusal);
        Driver driver = driverService.selectById(uid);
        driver.setServerStatus(1);
        driverService.updateById(driver);
        //扣除积分
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
        if(null != systemConfig) {
@@ -588,7 +758,7 @@
            Integer num10 = JSON.parseObject(systemConfig.getContent()).getInteger("num10");
            if (num10 > 0) {
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(uid);
                accountChangeDetail.setType(2);
@@ -625,7 +795,19 @@
            if(count > 0){
                return ResultUtil.error("还有未完成的订单");
            }
            boolean lock = redisUtil.lock();
            boolean lock = redisUtil.lock(5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(5);
                    if(lock){
                        break;
                    }else{
                        num1++;
                    }
                }
            }
            if(!lock){
                return ResultUtil.error("请重试");
            }
@@ -659,20 +841,16 @@
            driverService.updateById(driver);
            if(state == 201){//转单的订单
                //停止定时任务
                Timer timer = timerMap.get(order.getId().toString());
                if(null != timer){
                    timer.cancel();
                    timerMap.remove(order.getId().toString());
                }
                //原司机下班
                redisUtil.delSetValue("orderService", order.getId().toString());
                //原司机下班 TODO 2023-06-21 客户说取消此功能
                Driver oldDriver = driverService.selectById(oldDriverId);
                oldDriver.setServerStatus(1);
                driverService.updateById(oldDriver);
                DriverWork driverWork1 = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", oldDriverId).eq("status", 1));
                driverWork1.setStatus(2);
                driverWork1.setOffWorkTime(new Date());
                driverWorkService.updateById(driverWork1);
//                DriverWork driverWork1 = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", oldDriverId).eq("status", 1));
//                driverWork1.setStatus(2);
//                driverWork1.setOffWorkTime(new Date());
//                driverWorkService.updateById(driverWork1);
                //添加关系数据
                OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("orderId", order.getId()).eq("status", 1).isNull("successTime"));
@@ -696,7 +874,7 @@
            }
            //推动订单数据
            pushOrderInfo(order.getId(), uid);//开始推送订单数据
            redisUtil.addSetValue("orderService", order.getId().toString());
            //发送系统消息
            systemMessageService.addSystemMessage(uid, 2, "接单成功", "您已成功接到用户订单,请尽快联系客户!");
            pushUtil.pushOrderStatus(order.getDriverId(), 2, order.getId(), order.getState());
@@ -713,6 +891,9 @@
    }
    /**
     * 获取订单详情
     * @param orderId
@@ -721,7 +902,18 @@
     */
    @Override
    public OrderInfoWarpper queryOrderInfo(Integer uid, Long orderId) throws Exception {
        Order order = this.selectById(orderId);
        OrderInfoWarpper orderInfoWarpper = this.baseMapper.queryOrderInfo(orderId);
        Integer wait = Integer.valueOf(orderInfoWarpper.getWaitTime());
        if(null != order.getStartWaitTime()){
            wait += Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue();
        }
        Integer s = wait % 60;
        int m = Double.valueOf(wait / 60).intValue();
        orderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s));
        Double actualMileage = orderInfoWarpper.getActualMileage();
        orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
        if(orderInfoWarpper.getTravelTime() == null){
            orderInfoWarpper.setTravelTime(0);
        }
@@ -781,13 +973,20 @@
                    order.setStartTime(new Date());
                }
                //计算等待用户时长
                Integer w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue();
                Integer w = new BigDecimal(Double.valueOf(System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue();
                order.setWaitTime(order.getWaitTime() + w);
                order.setStartWaitTime(null);
                orderPositionService.initMap(order.getId());
                break;
            case 106:
                order.setGetoffTime(new Date());
                if(ToolUtil.isEmpty(order.getEndAddress())){
                    String endAddress = processOperationsWarpper.getEndAddress();
                    endAddress = endAddress.replaceAll("& #40;", "(");
                    endAddress = endAddress.replaceAll("& #41;", ")");
                    processOperationsWarpper.setEndAddress(endAddress);
                    order.setEndAddress(processOperationsWarpper.getEndAddress());
                    order.setEndLng(processOperationsWarpper.getEndLng());
                    order.setEndLat(processOperationsWarpper.getEndLat());
@@ -800,13 +999,25 @@
                            .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
                    city = null != weatherCity ? weatherCity.getId().toString() : "";
                }
                order = getOrderPrice(2, Double.valueOf(order.getActualMileage() / 1000), order.getWaitTime(), order, city);
                order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city);
                Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney());
                if(null != coupon){
                    order.setCouponId(coupon.getId());
                    order.setDiscountedPrice(coupon.getCouponPreferentialAmount());
                    order.setPayMoney(order.getOrderMoney() - coupon.getCouponPreferentialAmount());
                    UserToCoupon userToCoupon = userToCouponService.selectById(coupon.getId());
                    userToCoupon.setValidCount(userToCoupon.getValidCount() - 1);
                    userToCouponService.updateById(userToCoupon);
                }else{
                    order.setPayMoney(order.getOrderMoney());
                }
                //修改司机状态和积分
                Driver driver = driverService.selectById(order.getDriverId());
                driver.setServerStatus(1);
                driverService.updateById(driver);
                saveIntegral(order);
                redisUtil.delSetValue("orderService", order.getId().toString());
                break;
            case 401:
                order.setStartWaitTime(new Date());
@@ -823,6 +1034,9 @@
    }
    /**
     * 添加订单积分奖励
     * @param order
@@ -837,10 +1051,12 @@
            Integer num5 = JSON.parseObject(systemConfig.getContent()).getInteger("num5");
            if(num5 > 0){
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(order.getDriverId());
                accountChangeDetail.setType(2);
                accountChangeDetail.setChangeType(5);
                accountChangeDetail.setOrderId(order.getId());
                accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
                driver.setIntegral(driver.getIntegral() + num5);
                accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
@@ -848,52 +1064,30 @@
                accountChangeDetailService.saveData(accountChangeDetail);
            }
            //恶劣天气完成订单奖励
            Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8");
            if(num8 > 0){
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(order.getDriverId());
                accountChangeDetail.setType(2);
                accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
                driver.setIntegral(driver.getIntegral() + num8);
                accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
                accountChangeDetail.setExplain("恶劣天气完成订单奖励");
                accountChangeDetailService.saveData(accountChangeDetail);
            String city = "";
            District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
            if(null != geocode){
                WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
                        .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
                city = null != weatherCity ? weatherCity.getId().toString() : "";
            }
            boolean badWeather = WeatherUtil.isBadWeather(city);
            if(badWeather){
                Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8");
                if(num8 > 0){
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(order.getDriverId());
                    accountChangeDetail.setType(2);
                    accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
                    driver.setIntegral(driver.getIntegral() + num8);
                    accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
                    accountChangeDetail.setExplain("恶劣天气完成订单奖励");
                    accountChangeDetailService.saveData(accountChangeDetail);
                }
            }
            driverService.updateById(driver);
            if(null == order.getUserId()){
                return;
            }
            //推荐用户首单完成奖励
            Integer num4 = JSON.parseObject(systemConfig.getContent()).getInteger("num4");
            if(num4 > 0){
                List<Integer> state = Arrays.asList(105);
                int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state));
                if(count > 1){
                    return;
                }
                AppUser appUser = appUserService.selectById(order.getUserId());
                if(null != appUser && null != appUser.getInviterType()){
                    if(appUser.getInviterType() == 1){
                        return;
                    }
                    Driver driver1 = driverService.selectById(appUser.getInviterId());
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(driver1.getId());
                    accountChangeDetail.setType(2);
                    accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
                    driver1.setIntegral(driver1.getIntegral() + num4);
                    accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
                    accountChangeDetail.setExplain("推荐用户完成首单奖励");
                    accountChangeDetailService.saveData(accountChangeDetail);
                    driverService.updateById(driver1);
                }
            }
        }
    }
@@ -902,55 +1096,45 @@
    /**
     * 定时任务推送订单数据
     * @param orderId
     * @param uid
     */
    public void pushOrderInfo(Long orderId, Integer uid){
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                String value = redisUtil.getValue("DRIVER" + uid);
                Order order = OrderServiceImpl.this.selectById(orderId);
                if(order.getState() == 106 || order.getState() == 301){
                    Timer timer = timerMap.get(order.getId().toString());
                    if(null != timer){
                        timer.cancel();
                        timerMap.remove(order.getId().toString());
                    }
                }
    @Override
    public void pushOrderInfo(Long orderId){
        Order order = this.selectById(orderId);
        Integer driverId = order.getDriverId();
        String value = redisUtil.getValue("DRIVER" + driverId);
        if(order.getState() == 106 || order.getState() == 301){
            redisUtil.delSetValue("orderService", orderId.toString());
            return;
        }
                PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper();
                pushOrderInfoWarpper.setId(orderId);
                if(ToolUtil.isNotEmpty(value)){
                    String[] split = value.split(",");
                    pushOrderInfoWarpper.setDriverLat(split[1]);
                    pushOrderInfoWarpper.setDriverLng(split[0]);
                }
                int w = 0;
                if(null != order.getStartWaitTime()){
                    w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue();
                }
                pushOrderInfoWarpper.setWaitTime(order.getWaitTime() + w);
                pushOrderInfoWarpper.setState(order.getState());
                pushOrderInfoWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000));
                pushOrderInfoWarpper.setTravelTime(0);
                if(null != order.getStartTime()){
                    int travelTime = Double.valueOf((System.currentTimeMillis() - order.getStartTime().getTime()) / 60000).intValue();
                    pushOrderInfoWarpper.setTravelTime(travelTime);
                }
                if(null != order.getUserId()){
                    pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper);
                }
                if(order.getState() == 301){//司机取消不推送给司机
                    CancelOrder cancelOrder = cancelOrderService.selectOne(new EntityWrapper<CancelOrder>().eq("orderId", order.getId()).eq("status", 1));
                    if(null != cancelOrder && cancelOrder.getUserType() == 2){
                        return;
                    }
                }
                pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper);
        PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper();
        pushOrderInfoWarpper.setId(orderId);
        if(ToolUtil.isNotEmpty(value)){
            String[] split = value.split(",");
            pushOrderInfoWarpper.setDriverLat(split[1]);
            pushOrderInfoWarpper.setDriverLng(split[0]);
        }
        Integer w = 0;
        if(null != order.getStartWaitTime()){
            w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue();
        }
        Integer wait = order.getWaitTime() + w;
        Integer s = wait % 60;
        Integer m = wait / 60;
        pushOrderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s));
        pushOrderInfoWarpper.setState(order.getState());
        pushOrderInfoWarpper.setActualMileage(new BigDecimal(order.getActualMileage()).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue());
        pushOrderInfoWarpper.setTravelTime("0");
        if(null != order.getUserId()){
            pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper);
        }
        if(order.getState() == 301){//司机取消不推送给司机
            CancelOrder cancelOrder = cancelOrderService.selectOne(new EntityWrapper<CancelOrder>().eq("orderId", order.getId()).eq("status", 1));
            if(null != cancelOrder && cancelOrder.getUserType() == 2){
                return;
            }
        },0, 10000);
        timerMap.put(orderId.toString(), timer);
        }
        pushUtil.pushOrderInfo(driverId, 2, pushOrderInfoWarpper);
    }
@@ -963,7 +1147,7 @@
     * @throws Exception
     */
    @Override
    public ResultUtil transferOrder(Integer uid, Long orderId, String cause,String phone) throws Exception {
    public ResultUtil transferOrder(Integer uid, Long orderId, String cause) throws Exception {
        // 7.13改动
        OrderTransfer orderTransfer = new OrderTransfer();
        Order order = this.selectById(orderId);
@@ -1025,6 +1209,12 @@
    @Override
    public ResultUtil setOrderEndAddress(Integer uid, OrderEndAddressWarpper orderEndAddressWarpper) throws Exception {
        Order order = this.selectById(orderEndAddressWarpper.getOrderId());
        String endAddress = orderEndAddressWarpper.getEndAddress();
        endAddress = endAddress.replaceAll("& #40;", "(");
        endAddress = endAddress.replaceAll("& #41;", ")");
        orderEndAddressWarpper.setEndAddress(endAddress);
        order.setEndLat(orderEndAddressWarpper.getEndLat());
        order.setEndLng(orderEndAddressWarpper.getEndLng());
        order.setEndAddress(orderEndAddressWarpper.getEndAddress());
@@ -1095,6 +1285,7 @@
        order.setState(301);
        this.updateById(order);
        redisUtil.delSetValue("orderService", orderId.toString());
        CancelOrder cancelOrder = new CancelOrder();
        cancelOrder.setOrderId(orderId);
@@ -1110,7 +1301,9 @@
            driverService.updateById(driver);
        }
        pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus());
        if(null != order.getUserId()){
            pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus());
        }
        return ResultUtil.success();
    }
@@ -1127,23 +1320,32 @@
        Driver driver = driverService.selectById(uid);
        Order order = this.selectById(orderId);
        OrderPriceWarpper orderPriceWarpper = new OrderPriceWarpper();
        BeanUtils.copyProperties(order, orderPriceWarpper);
        orderPriceWarpper.setWaitTime(orderPriceWarpper.getWaitTime() + orderPriceWarpper.getOutWaitTime());
        orderPriceWarpper.setWaitTimePrice(orderPriceWarpper.getWaitTimePrice() + orderPriceWarpper.getOutWaitTimePrice());
        orderPriceWarpper.setLongDistance(0D);
        if(ToolUtil.isNotEmpty(order.getLongDistance())){
        orderPriceWarpper.setStartTime(order.getArrivalTimeAtTheAppointmentPoint().getTime());
        orderPriceWarpper.setEndTime(order.getGetoffTime().getTime());
        orderPriceWarpper.setActualMileage(Double.valueOf(order.getActualMileage()) / 1000);
        if(null != order.getStartPrice() && 0 != order.getStartPrice()){
            orderPriceWarpper.setStartPrice(order.getStartPrice());
            orderPriceWarpper.setStartDistance(order.getStartDistance());
            orderPriceWarpper.setOverDriveDistance(order.getOverDriveDistance());
            orderPriceWarpper.setMileageFee(order.getOverDrivePrice());
        }else{
            String[] split = order.getLongDistance().split("-");
            Double longDistanc = Double.valueOf(split[1]) - Double.valueOf(split[0]) + orderPriceWarpper.getOverLongDistance();
            orderPriceWarpper.setLongDistance(longDistanc);
            orderPriceWarpper.setStartPrice(order.getLongDistancePrice());
            orderPriceWarpper.setStartDistance(Double.valueOf(split[1]));
            orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance());
            orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice());
        }
        orderPriceWarpper.setLongDistancePrice(orderPriceWarpper.getLongDistancePrice() + orderPriceWarpper.getOverLongDistancePrice());
        orderPriceWarpper.setBadWeatherDistance(orderPriceWarpper.getBadWeatherDistance() + orderPriceWarpper.getOverBadWeatherDistance());
        orderPriceWarpper.setBadWeatherPrice(orderPriceWarpper.getBadWeatherPrice() + orderPriceWarpper.getOverBadWeatherPrice());
        orderPriceWarpper.setActualMileage(new BigDecimal(order.getActualMileage() / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
        orderPriceWarpper.setTravelTime(0);
        if(null != order.getGetoffTime()){
            orderPriceWarpper.setTravelTime(Double.valueOf((order.getGetoffTime().getTime() - order.getStartTime().getTime()) / 60000).intValue());
        Integer waitTime = order.getWaitTime() + order.getOutWaitTime();
        Integer s = waitTime % 60;
        Integer m = waitTime / 60;
        orderPriceWarpper.setWaitTime((m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s));
        orderPriceWarpper.setWaitTimePrice(order.getWaitTimePrice() + order.getOutWaitTimePrice());
        orderPriceWarpper.setDiscountAmount(order.getDiscountAmount());
        orderPriceWarpper.setDiscountedPrice(order.getDiscountedPrice());
        orderPriceWarpper.setBadWeatherPrice(order.getBadWeatherPrice());
        orderPriceWarpper.setPayMoney(order.getPayMoney());
        if(order.getState() < 106){
            orderPriceWarpper.setPayMoney(order.getOrderMoney());
        }
        orderPriceWarpper.setWxCollectionCode(driver.getWxCollectionCode());
        orderPriceWarpper.setZfbCollectionCode(driver.getZfbCollectionCode());
@@ -1161,72 +1363,164 @@
     */
    @Override
    public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception {
        List<Integer> s = Arrays.asList(107, 108);
        if(!s.contains(state)){
            return ResultUtil.error("操作失败");
        }
        Order order = this.selectById(orderId);
        order.setState(state);
        if(payType == 2 && state == 107){
            order.setPayType(3);
            Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney());
            if(null != coupon){
                order.setCouponId(coupon.getId());
                order.setDiscountAmount(coupon.getCouponPreferentialAmount());
                order.setPayMoney(order.getOrderMoney() - coupon.getCouponPreferentialAmount());
        try {
            boolean lock = redisUtil.lock(orderId + "",5);
            if(!lock){
                int num1 = 1;
                while (num1 <= 10){
                    Thread.sleep(3000);//等待3秒
                    lock = redisUtil.lock(orderId + "",5);
                    if(lock){
                        break;
                    }else{
                        num1++;
                    }
                }
            }
        }
            if(!lock){
                redisUtil.unlock(orderId + "");
                return ResultUtil.error("请稍后重试");
            }
        if(payType == 2 && state == 108){
            order.setPayTime(new Date());
            if(null != order.getCouponId()){
                UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
                if(userToCoupon.getValidCount() > 0){
                    userToCoupon.setValidCount(userToCoupon.getValidCount() - 1);
                    userToCouponService.updateById(userToCoupon);
            Order order = this.selectById(orderId);
            if(state == 107 && order.getState() != 106){
                redisUtil.unlock(orderId + "");
                return ResultUtil.error("操作失败,请刷新数据");
            }
            if(state == 108 && order.getState() != 107){
                redisUtil.unlock(orderId + "");
                return ResultUtil.error("操作失败,请刷新数据");
            }
            order.setState(state);
            if(payType == 2 && state == 107){
                order.setPayType(3);
            }
            if(payType == 2 && state == 108){
                order.setPayTime(new Date());
                if(null != order.getCouponId()){
                    UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
                    Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
                    order.setPayMoney(order.getPayMoney() - coupon.getCouponPreferentialAmount());
                    order.setCouponId(coupon.getId());
                    order.setDiscountedPrice(coupon.getCouponPreferentialAmount());
                    Driver driver = driverService.selectById(order.getDriverId());
                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                    accountChangeDetail.setUserType(2);
                    accountChangeDetail.setUserId(order.getDriverId());
                    accountChangeDetail.setCreateTime(new Date());
                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    accountChangeDetail.setType(1);
                    accountChangeDetail.setChangeType(7);
                    accountChangeDetail.setOrderId(order.getId());
                    accountChangeDetail.setExplain("优惠券收入");
                    driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount());
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    driverService.updateById(driver);
                    accountChangeDetailService.insert(accountChangeDetail);
                    //补贴中分账
                    Double discountedPrice = order.getDiscountedPrice();
                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                        if(surplusDividedAmount.compareTo(discountedPrice) >= 0){
                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback");
                            if(10000 == zhaunzhang.getCode()){
                                Double remainAmount = zhaunzhang.getData();
                                rechargeRecord.setSurplusDividedAmount(remainAmount);
                                rechargeRecordService.updateById(rechargeRecord);
                            }
                            break;
                        }else{
                            ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                            if(10000 == zhaunzhang.getCode()){
                                Double remainAmount = zhaunzhang.getData();
                                rechargeRecord.setSurplusDividedAmount(remainAmount);
                                rechargeRecordService.updateById(rechargeRecord);
                                discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                            }else{
                                break;
                            }
                        }
                    }
                }
            }
        }
        this.updateById(order);
            this.updateById(order);
        if(state == 108){//计算抽成
            saveRevenue(order);
        }
            if(payType == 2 && state == 108){//计算抽成
                saveRevenue(order);
            }
        PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper();
        pushOrderInfoWarpper.setId(order.getId());
        pushOrderInfoWarpper.setState(order.getState());
        pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper);
        if(null != order.getUserId()){
            pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState());
            PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper();
            pushOrderInfoWarpper.setId(order.getId());
            pushOrderInfoWarpper.setState(order.getState());
            pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper);
            if(null != order.getUserId()){
                pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState());
            }
            if(payType == 2 && state == 107){
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        try {
                            OrderServiceImpl.this.setOrderStatus(uid, orderId, payType, 108);
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                }, 60000);
            }
            redisUtil.unlock(orderId + "");
            return ResultUtil.success();
        }catch (Exception e){
            redisUtil.unlock(orderId + "");
            e.printStackTrace();
            return ResultUtil.error("系统异常");
        }
        return ResultUtil.success();
    }
    /**
     * 转账
     * @param id
     * @param merOrderId
     * @param toUserId
     * @param amount
     * @param notifyUrl
     * @return
     */
    public ResultUtil<Double> zhaunzhang(Integer id, String merOrderId, String toUserId, Double amount, String notifyUrl){
        Transfer transfer = new Transfer();
        transfer.setDepositMerOrderId(merOrderId);
        transfer.setToUserId(toUserId);
        transfer.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        transfer.setOrderName("补贴");
        transfer.setNotifyUrl(notifyUrl);
        transfer.setParameter1(id.toString());
        TrhRequest<Transfer> request = new TrhRequest();
        InterfaceResponse execute = request.execute(transfer, Transfer.SERVICE_CODE);
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            String status = jsonObject.getString("status");//0:待处理;1:成功;2:失败
            if("2" == status){
                System.err.println("转账失败");
                return ResultUtil.error("转账失败");
            }
            Double remainAmount = Double.valueOf(jsonObject.getInteger("remainAmount")) / 100;
            return ResultUtil.success(remainAmount);
        }else{
            System.err.println("转账失败:" + execute.getMsg());
            return ResultUtil.error(execute.getMsg());
        }
    }
    /**
     * 计算抽成和分佣
     * 计算线下收款的抽成和分佣
     * @param order
     */
    public void saveRevenue(Order order) throws Exception{
@@ -1234,41 +1528,83 @@
        //司机分佣和司机推荐用户首单奖励都在平台的抽佣中扣除,剩余的为平台抽佣。
        Driver driver = driverService.selectById(order.getDriverId());
        AppUser appUser = appUserService.selectById(order.getUserId());
        Double payMoney = order.getPayMoney();
        if(null != order.getUserId()){
            //司机推荐首单收入
            List<Integer> state = Arrays.asList(107, 108, 109);
            int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state));
            if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
                Driver driver1 = driverService.selectById(appUser.getInviterId());
                //首单积分奖励
                SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
                JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
                Integer num4 = jsonObject2.getInteger("num4");
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
                accountChangeDetail.setUserId(driver1.getId());
                accountChangeDetail.setType(2);
                accountChangeDetail.setChangeType(5);
                accountChangeDetail.setOrderId(order.getId());
                accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
                accountChangeDetail.setExplain("邀请用户首单积分奖励");
                accountChangeDetail.setCreateTime(new Date());
                driver1.setIntegral(driver1.getIntegral() + num4);
                accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
                accountChangeDetailService.insert(accountChangeDetail);
                driverService.updateById(driver1);
            }
        }
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3));
        Double n = 0D;
        if(null != systemConfig){
            JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
            Double num2 = jsonObject.getDouble("num2");
            Double num3 = jsonObject.getDouble("num3");
            n = num3;
            if(order.getPayMoney() >= num2){
                payMoney = payMoney - num3;//司机收入
            if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金
                driver = driverService.selectById(order.getDriverId());
                AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail1.setUserType(2);
                accountChangeDetail1.setUserId(driver.getId());
                accountChangeDetail1.setType(1);
                accountChangeDetail1.setChangeType(9);
                accountChangeDetail1.setOrderId(order.getId());
                accountChangeDetail1.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                accountChangeDetail1.setExplain("订单信息费");
                accountChangeDetail1.setCreateTime(new Date());
                driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                accountChangeDetail1.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                driverService.updateById(driver);
                accountChangeDetailService.saveData(accountChangeDetail1);
                //有分佣的情况,分佣的金额从司机充值金额中扣除转给分佣对象
                SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2));
                if(null != systemConfig1){
                    JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent());
                    //司机推荐首单收入
                    List<Integer> state = Arrays.asList(108, 109);
                    int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state));
                    if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
                    //司机推荐用户收入
                    if(null != appUser && null != appUser.getInviterType() && appUser.getInviterType() == 2){
                        Double num1 = jsonObject1.getDouble("num1");
                        num1 = (num3 >= num1 ? num1 : num3);
                        if(num1 > 0){
                            Driver driver1 = driverService.selectById(appUser.getInviterId());
                            //首单积分奖励
                            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                            accountChangeDetail.setUserType(2);
                            accountChangeDetail.setUserId(driver1.getId());
                            accountChangeDetail.setType(1);
                            accountChangeDetail.setChangeType(5);
                            accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                            accountChangeDetail.setExplain("订单分佣收入");
                            accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            accountChangeDetail.setExplain("邀请用户奖励");
                            accountChangeDetail.setCreateTime(new Date());
                            driver1.setCommission(driver1.getCommission() + num1);
                            accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                            driverService.updateById(driver1);
                            driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            accountChangeDetailService.saveData(accountChangeDetail);
                            driverService.updateById(driver1);
                            Revenue revenue = new Revenue();
                            revenue.setType(2);
@@ -1278,12 +1614,37 @@
                            revenue.setAmount(num1);
                            revenue.setCreateTime(new Date());
                            revenueService.insert(revenue);
                            Double num1_1 = num1;
                            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                            for (RechargeRecord rechargeRecord : rechargeRecords) {
                                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                if(surplusDividedAmount.compareTo(num1_1) >= 0){
                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
                                    if(fengzhang.getCode() == 10000){
                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                        rechargeRecordService.updateById(rechargeRecord);
                                    }
                                    break;
                                }else{
                                    ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                    if(fengzhang.getCode() == 10000){
                                        rechargeRecord.setSurplusDividedAmount(0d);
                                        rechargeRecordService.updateById(rechargeRecord);
                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    }else{
                                        break;
                                    }
                                }
                            }
                        }
                        num3 = (num3 >= num1 ? num3 - num1 : 0);
                        double v = new BigDecimal(num3).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                        num3 = (num3 >= num1 ? v : 0);
                    }
                    //开始处理层级抽佣
                    if(null != driver.getInviterType() && driver.getInviterType() == 2){
                    if(num3 > 0 && null != driver.getInviterType() && driver.getInviterType() == 2){
                        Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机
                        if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){
                            Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机
@@ -1304,19 +1665,43 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver1.setCommission(driver1.getCommission() + num5);
                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
                                    Double num5_1 = num5;
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num5_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num5 ? v : 0);
                                }
                                num6 = (num3 >= num6 ? num6 : num3);
                                if(num6 > 0){
@@ -1330,19 +1715,43 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver2.setCommission(driver2.getCommission() + num6);
                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver2);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
                                    Double num6_1 = num6;
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num6_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num6 ? v : 0);
                                }
                                num7 = (num3 >= num7 ? num7 : num3);
                                if(num7 > 0){
@@ -1356,19 +1765,43 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver3.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver3.setCommission(driver3.getCommission() + num7);
                                    accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
                                    driver3.setCommission(new BigDecimal(driver3.getCommission()).add(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver3);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    num3 = (num3 >= num7 ? num3 - num7 : 0);
                                    Double num7_1 = num7;
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num7_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num7 ? v : 0);
                                }
                            }else{
                                Double num3_ = jsonObject1.getDouble("num3");
@@ -1385,19 +1818,43 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver1.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver1.setCommission(driver1.getCommission() + num3_);
                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
                                    Double num3_1 = num3_;
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num3_ ? v : 0);
                                }
                                num4 = (num3 >= num4 ? num4 : num3);
                                if(num4 > 0){
@@ -1411,19 +1868,43 @@
                                    revenueService.insert(revenue);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(driver2.getId());
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setChangeType(5);
                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setExplain("订单分佣收入");
                                    accountChangeDetail.setCreateTime(new Date());
                                    driver2.setCommission(driver2.getCommission() + num4);
                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    driverService.updateById(driver2);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
                                    Double num4_1 = num4;
                                    List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                    for (RechargeRecord rechargeRecord : rechargeRecords) {
                                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                        if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                rechargeRecordService.updateById(rechargeRecord);
                                            }
                                            break;
                                        }else{
                                            ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                            if(fengzhang.getCode() == 10000){
                                                rechargeRecord.setSurplusDividedAmount(0d);
                                                rechargeRecordService.updateById(rechargeRecord);
                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                            }else{
                                                break;
                                            }
                                        }
                                    }
                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                    num3 = (num3 >= num4 ? v : 0);
                                }
                            }
                        }else{
@@ -1440,19 +1921,43 @@
                                revenueService.insert(revenue);
                                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                accountChangeDetail.setUserType(2);
                                accountChangeDetail.setUserId(driver1.getId());
                                accountChangeDetail.setType(1);
                                accountChangeDetail.setChangeType(5);
                                accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                accountChangeDetail.setExplain("订单分佣收入");
                                accountChangeDetail.setCreateTime(new Date());
                                driver1.setCommission(driver1.getCommission() + num2_);
                                accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                driverService.updateById(driver1);
                                accountChangeDetailService.saveData(accountChangeDetail);
                                num3 = (num3 >= num2_ ? num3 - num2_ : 0);
                                Double num2_1 = num2_;
                                List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                                for (RechargeRecord rechargeRecord : rechargeRecords) {
                                    Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                                    if(surplusDividedAmount.compareTo(num2_1) >= 0){
                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
                                        if(fengzhang.getCode() == 10000){
                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                            rechargeRecordService.updateById(rechargeRecord);
                                        }
                                        break;
                                    }else{
                                        ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                        if(fengzhang.getCode() == 10000){
                                            rechargeRecord.setSurplusDividedAmount(0d);
                                            rechargeRecordService.updateById(rechargeRecord);
                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                        }else{
                                            break;
                                        }
                                    }
                                }
                                double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                num3 = (num3 >= num2_ ? v : 0);
                            }
                        }
                    }
@@ -1466,28 +1971,129 @@
                        revenue.setAmount(num3);
                        revenue.setCreateTime(new Date());
                        revenueService.insert(revenue);
                        Agent agent = agentService.selectById(driver.getAgentId());
                        List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                        for (RechargeRecord rechargeRecord : rechargeRecords) {
                            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                            if(surplusDividedAmount.compareTo(num3) >= 0){
                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                    rechargeRecordService.updateById(rechargeRecord);
                                }
                                break;
                            }else{
                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
                                if(fengzhang.getCode() == 10000){
                                    rechargeRecord.setSurplusDividedAmount(0d);
                                    rechargeRecordService.updateById(rechargeRecord);
                                    num3 = new BigDecimal(num3).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                }else{
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        //司机余额扣减抽佣金额
        if(n > 0){
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(driver.getId());
            accountChangeDetail.setType(1);
            accountChangeDetail.setChangeType(9);
            accountChangeDetail.setOrderId(order.getId());
            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            accountChangeDetail.setExplain("线下收款服务费支出");
            accountChangeDetail.setCreateTime(new Date());
            driver.setBalance(driver.getBalance() - n);
            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
            driverService.updateById(driver);
            accountChangeDetailService.saveData(accountChangeDetail);
    }
    /**
     * 分账操作
     * @param amount
     */
    @Override
    public ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, Integer rechargeRecordId, String merOrderId, Double amount, Integer sourceType){
        DivisionRecord divisionRecord = new DivisionRecord();
        divisionRecord.setUserType(userType);
        divisionRecord.setUserId(id);
        divisionRecord.setOrderId(orderId);
        divisionRecord.setRechargeRecordId(rechargeRecordId);
        divisionRecord.setSourceType(sourceType);
        divisionRecord.setAmount(amount);
        divisionRecord.setMerchantNumber(merchantNumber);
        divisionRecord.setState(1);
        divisionRecord.setCreateTime(new Date());
        divisionRecordService.insert(divisionRecord);
        Complete complete = new Complete();
        complete.setOriginalMerOrderId(merOrderId);
        complete.setNotifyUrl(callbackPath + "/base/order/ledgerCallback");
        complete.setParameter1(divisionRecord.getId().toString());
        //分账方列表
        List<PamentOrderUser> splitList = new ArrayList<>();
        PamentOrderUser pamentOrderUser = new PamentOrderUser();
        pamentOrderUser.setSplitUserId(merchantNumber);
        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        pamentOrderUser.setSplitType("1");
        splitList.add(pamentOrderUser);
        complete.setSplitList(splitList);
        TrhRequest<Complete> request = new TrhRequest();
        InterfaceResponse execute = request.execute(complete, Complete.SERVICE_CODE);//分账操作
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            Integer status = jsonObject.getInteger("status");//0:待处理 1:成功 2:失败
            String merOrderId1 = jsonObject.getString("merOrderId");
            if(2 == status){
                logger.warn("订单支付成功后的分账处理异常失败");
                return ResultUtil.error("订单支付成功后的分账处理异常失败");
            }
            if(1 == status){
                divisionRecord.setMerOrderId(merOrderId1);
                divisionRecord.setPayTime(new Date());
                divisionRecord.setState(2);
                divisionRecordService.updateById(divisionRecord);
                //间隔1分钟开始调用确认收货后开始提现
                new Timer().schedule(new TimerTask() {//确认收货和提现
                    @Override
                    public void run() {
                        confirmReceipt(merchantNumber, merOrderId, divisionRecord);
                    }
                }, 60000);
                return ResultUtil.success();
            }
        }else{
            logger.warn("订单支付成功后的分账处理异常 :" + execute.getMsg());
            return ResultUtil.error("订单支付成功后的分账处理异常 :" + execute.getMsg());
        }
        logger.warn("未知异常");
        return ResultUtil.error("未知异常");
    }
    /**
     * 分账后的确认收货
     * @param divisionRecord
     */
    public void confirmReceipt(String merchantNumber, String orderNumber, DivisionRecord divisionRecord){
        Receive receive = new Receive();
        receive.setOriginalMerOrderId(orderNumber);
        receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        List<ReceiveUser> splitList = new ArrayList<>();
        ReceiveUser receiveUser = new ReceiveUser();
        receiveUser.setSplitUserId(merchantNumber);
        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
        splitList.add(receiveUser);
        receive.setSplitList(splitList);
        TrhRequest<Receive> request = new TrhRequest();
        InterfaceResponse execute1 = request.execute(receive, Receive.SERVICE_CODE);//确认收货
        if("0000".equals(execute1.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute1.getResult());
            String merOrderId = jsonObject.getString("merOrderId");
            logger.warn("分账确认收货成功");
        }else{
            logger.warn("分账确认收货异常" + execute1.getMsg());
        }
    }
    /**
     * 获取司机的订单列表
@@ -1645,6 +2251,91 @@
     */
    @Override
    public void completeCollection() {
        this.baseMapper.completeCollection();
        List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1)
                .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 600 <= UNIX_TIMESTAMP(now())"));
        for (Order order : orders) {
            Long orderId = order.getId();
            try {
                boolean lock = redisUtil.lock(orderId + "",5);
                if(!lock){
                    int num1 = 1;
                    while (num1 <= 10){
                        Thread.sleep(3000);//等待3秒
                        lock = redisUtil.lock(orderId + "",5);
                        if(lock){
                            break;
                        }else{
                            num1++;
                        }
                    }
                }
                if(!lock){
                    redisUtil.unlock(orderId + "");
                    continue;
                }
                completeCollection_(order);
            }catch (Exception e){
                redisUtil.unlock(orderId + "");
                e.printStackTrace();
            }
        }
    }
    public void completeCollection_(Order order) throws Exception{
        order.setState(108);
        order.setPayTime(new Date());
        if(null != order.getCouponId()){
            UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
            Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
            Driver driver = driverService.selectById(order.getDriverId());
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(order.getDriverId());
            accountChangeDetail.setCreateTime(new Date());
            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setType(1);
            accountChangeDetail.setChangeType(7);
            accountChangeDetail.setOrderId(order.getId());
            accountChangeDetail.setExplain("优惠券收入");
            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            accountChangeDetailService.insert(accountChangeDetail);
            //补贴中分账
            Double discountedPrice = order.getDiscountedPrice();
            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
            for (RechargeRecord rechargeRecord : rechargeRecords) {
                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                if(surplusDividedAmount.compareTo(discountedPrice) >= 0){
                    ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback");
                    if(10000 == zhaunzhang.getCode()){
                        Double remainAmount = zhaunzhang.getData();
                        rechargeRecord.setSurplusDividedAmount(remainAmount);
                        rechargeRecordService.updateById(rechargeRecord);
                    }
                    break;
                }else{
                    ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                    if(10000 == zhaunzhang.getCode()){
                        Double remainAmount = zhaunzhang.getData();
                        rechargeRecord.setSurplusDividedAmount(remainAmount);
                        rechargeRecordService.updateById(rechargeRecord);
                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                    }else{
                        break;
                    }
                }
            }
        }
        this.updateById(order);
        saveRevenue(order);
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
@@ -55,7 +55,7 @@
    @Override
    public List<CommissionListWarpper> queryCommissionList(Integer driverId, String time, Integer pageNum, Integer pageSize) throws Exception {
        pageNum = (pageNum - 1) * pageSize;
        Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("type", 2).eq("userType", 2)
        Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("userType", 2)
                .eq("userId", driverId);
        if(ToolUtil.isNotEmpty(time)){
            wrapper.eq("DATE_FORMAT(createTime, '%Y年%m月')", time);
@@ -66,19 +66,7 @@
            CommissionListWarpper commissionListWarpper = new CommissionListWarpper();
            commissionListWarpper.setCreateTime(revenue.getCreateTime().getTime());
            commissionListWarpper.setAmount(revenue.getAmount());
            Order order = orderService.selectById(revenue.getOrderId());
            if(null != order.getUserId()){
                AppUser appUser = appUserService.selectById(order.getUserId());
                if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && appUser.getInviterId().compareTo(driverId) == 0){
                    commissionListWarpper.setUserType(1);
                }
            }
            if(null == commissionListWarpper.getUserType()){
                Driver driver = driverService.selectById(order.getDriverId());
                if(null != driver.getInviterType() && driver.getInviterType() == 2 && driver.getInviterId().compareTo(driverId) == 0){
                    commissionListWarpper.setUserType(2);
                }
            }
            commissionListWarpper.setUserType(revenue.getType());
            list.add(commissionListWarpper);
        }
        return list;
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java
@@ -125,7 +125,7 @@
        }
        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
        accountChangeDetail.setUserType(2);
        accountChangeDetail.setUserId(driverId);
        accountChangeDetail.setType(2);
@@ -154,4 +154,9 @@
        this.insert(youTuiDriver);
        return ResultUtil.success();
    }
    @Override
    public void editState() throws Exception {
        this.baseMapper.editState();
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/config/ChannelConfig.java
@@ -39,7 +39,7 @@
    static {
        YamlPropertiesFactoryBean yamlProFb = new YamlPropertiesFactoryBean();
        yamlProFb.setResources(new ClassPathResource("application.yaml"));
        yamlProFb.setResources(new ClassPathResource("application.yml"));
        Properties properties = yamlProFb.getObject();
        System.out.println("mallbook 参数配置初始化");
        System.out.println("--------------------------------");
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Complete.java
New file
@@ -0,0 +1,58 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
import java.util.List;
public class Complete {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "complete";
    //原支付请求订单号
    private String originalMerOrderId;
    //分账方列表
    private List<PamentOrderUser> splitList;
    //后台回调地址
    private String notifyUrl;
    //自定义参数1
    private String parameter1;
    //自定义参数2
    private String parameter2;
    public String getOriginalMerOrderId() {
        return originalMerOrderId;
    }
    public void setOriginalMerOrderId(String originalMerOrderId) {
        this.originalMerOrderId = originalMerOrderId;
    }
    public List<PamentOrderUser> getSplitList() {
        return splitList;
    }
    public void setSplitList(List<PamentOrderUser> splitList) {
        this.splitList = splitList;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PamentOrderUser.java
New file
@@ -0,0 +1,46 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class PamentOrderUser {
    /**
     * 分账方会员ID(必填)
     */
    private  String splitUserId;
    /**
     * 分账金额(必填)
     */
    private String splitAmount;
    /**
     * 分账类型(必填)
     * 0:收单金额(收款人)
     * 1:分账金额
     * 2:佣金
     */
    private String splitType;
    public String getSplitUserId() {
        return splitUserId;
    }
    public void setSplitUserId(String splitUserId) {
        this.splitUserId = splitUserId;
    }
    public String getSplitAmount() {
        return splitAmount;
    }
    public void setSplitAmount(String splitAmount) {
        this.splitAmount = splitAmount;
    }
    public String getSplitType() {
        return splitType;
    }
    public void setSplitType(String splitType) {
        this.splitType = splitType;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PaymentOrder.java
New file
@@ -0,0 +1,293 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
import java.util.List;
public class PaymentOrder {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "paymentOrder";
    /**
     * 业务订单号(必填)
     */
    private String bizOrderId;
    /**
     * 交易金额(必填)
     */
    private String amount;
    /**
     * 付款人
     */
    private String payerUserName;
    /**
     * 收款人会员ID(必填)
     */
    private String payeeUserId;
    /**
     * 订单名称(必填)
     */
    private String orderName;
    /**
     * 支付类型(必填)
     */
    private String payType;
    /**
     * 交易类型(必填)
     */
    private String transferType;
    /**
     * 订单过期时间
     */
    private String expire;
    /**
     * 微信或支付宝的appid
     */
    private String appid;
    /**
     * 微信或支付宝用户id
     */
    private String openid;
    /**
     * 终端IP(必填)
     */
    private String terminalIp;
    /**
     * 分账方列表(必填)
     */
    private List<PamentOrderUser> splitList;
    /**
     * 商品列表(必填)
     */
    private List<PaymentOrderGood> goodsDetail;
    /**
     * 前台回调地址(必填)
     */
    private String frontUrl;
    /**
     * 后台回调地址(必填)
     */
    private String notifyUrl;
    /**
     * 自定义参数1
     */
    private String parameter1;
    /**
     * 自定义参数2
     */
    private String parameter2;
    /*
     * 是否异步分账
     */
    private String asynSplitFlag;
    /**
     * 付款方子商户编号
     */
    private String payerUserId;
    /**
     * 银行编码
     */
    private String bankCode;
    /**
     * 银行卡类型
     */
    private String cardType;
    /**
     * 快捷卡唯一标识
     */
    private String tokenNo;
    public String getPayerUserId() {
        return payerUserId;
    }
    public void setPayerUserId(String payerUserId) {
        this.payerUserId = payerUserId;
    }
    public String getBankCode() {
        return bankCode;
    }
    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }
    public String getCardType() {
        return cardType;
    }
    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    public String getTokenNo() {
        return tokenNo;
    }
    public void setTokenNo(String tokenNo) {
        this.tokenNo = tokenNo;
    }
    public String getAsynSplitFlag() {
        return asynSplitFlag;
    }
    public void setAsynSplitFlag(String asynSplitFlag) {
        this.asynSplitFlag = asynSplitFlag;
    }
    public String getBizOrderId() {
        return bizOrderId;
    }
    public void setBizOrderId(String bizOrderId) {
        this.bizOrderId = bizOrderId;
    }
    public String getAmount() {
        return amount;
    }
    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getPayerUserName() {
        return payerUserName;
    }
    public void setPayerUserName(String payerUserName) {
        this.payerUserName = payerUserName;
    }
    public String getPayeeUserId() {
        return payeeUserId;
    }
    public void setPayeeUserId(String payeeUserId) {
        this.payeeUserId = payeeUserId;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
    public String getPayType() {
        return payType;
    }
    public void setPayType(String payType) {
        this.payType = payType;
    }
    public String getTransferType() {
        return transferType;
    }
    public void setTransferType(String transferType) {
        this.transferType = transferType;
    }
    public String getExpire() {
        return expire;
    }
    public void setExpire(String expire) {
        this.expire = expire;
    }
    public String getAppid() {
        return appid;
    }
    public void setAppid(String appid) {
        this.appid = appid;
    }
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
    public String getTerminalIp() {
        return terminalIp;
    }
    public void setTerminalIp(String terminalIp) {
        this.terminalIp = terminalIp;
    }
    public List<PamentOrderUser> getSplitList() {
        return splitList;
    }
    public void setSplitList(List<PamentOrderUser> splitList) {
        this.splitList = splitList;
    }
    public List<PaymentOrderGood> getGoodsDetail() {
        return goodsDetail;
    }
    public void setGoodsDetail(List<PaymentOrderGood> goodsDetail) {
        this.goodsDetail = goodsDetail;
    }
    public String getFrontUrl() {
        return frontUrl;
    }
    public void setFrontUrl(String frontUrl) {
        this.frontUrl = frontUrl;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/PaymentOrderGood.java
New file
@@ -0,0 +1,48 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class PaymentOrderGood {
    /** 商品编号 */
    private String goodsId;
    /** 商品名称,必填 */
    private String goodsName;
    /** 商品数量 */
    private String quantity;
    /** 商品价格 */
    private String price;
    public String getGoodsId() {
        return goodsId;
    }
    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public String getQuantity() {
        return quantity;
    }
    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryOrder.java
New file
@@ -0,0 +1,31 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class QueryOrder {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "queryOrder";
    /**
     * 原请求订单号
     */
    private String originalMerOrderId;
    /**
     * 查询类型
     */
    private String queryType;
    public String getOriginalMerOrderId() {
        return originalMerOrderId;
    }
    public void setOriginalMerOrderId(String originalMerOrderId) {
        this.originalMerOrderId = originalMerOrderId;
    }
    public String getQueryType() {
        return queryType;
    }
    public void setQueryType(String queryType) {
        this.queryType = queryType;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java
New file
@@ -0,0 +1,23 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
/**
 * @Author xiaogc
 * @Date 2021/9/18 9:41
 */
public class QueryUser {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "queryUser";
    /**
     * 业务系统会员id
     */
    private String merUserId;
    public String getMerUserId() {
        return merUserId;
    }
    public void setMerUserId(String merUserId) {
        this.merUserId = merUserId;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Receive.java
New file
@@ -0,0 +1,102 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
import java.util.List;
/**
 * 确认收货信息参数
 */
public class Receive {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "receive";
    /**
     * 原支付请求订单号(必填)
     */
    private String originalMerOrderId;
    /**
     * 异步分账订单号(多次异步确认订单进行确认收货时必传)
     */
    private String asynMerOrderId;
    /**
     * 确认收货总额(必填)
     * 必须大于0
     * 确认收货总额=总确认分账金额
     */
    private String rcvAmount;
    /**
     * 分账方列表(必填)
     */
    private List<ReceiveUser> splitList;
    /**
     * 商品列表
     */
    private List<ReceiveGood> goodsDetail;
    /**
     * 自定义参数1
     */
    private String parameter1;
    /**
     * 自定义参数2
     */
    private String parameter2;
    public String getOriginalMerOrderId() {
        return originalMerOrderId;
    }
    public void setOriginalMerOrderId(String originalMerOrderId) {
        this.originalMerOrderId = originalMerOrderId;
    }
    public String getAsynMerOrderId() {
        return asynMerOrderId;
    }
    public void setAsynMerOrderId(String asynMerOrderId) {
        this.asynMerOrderId = asynMerOrderId;
    }
    public String getRcvAmount() {
        return rcvAmount;
    }
    public void setRcvAmount(String rcvAmount) {
        this.rcvAmount = rcvAmount;
    }
    public List<ReceiveUser> getSplitList() {
        return splitList;
    }
    public void setSplitList(List<ReceiveUser> splitList) {
        this.splitList = splitList;
    }
    public List<ReceiveGood> getGoodsDetail() {
        return goodsDetail;
    }
    public void setGoodsDetail(List<ReceiveGood> goodsDetail) {
        this.goodsDetail = goodsDetail;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/ReceiveGood.java
New file
@@ -0,0 +1,48 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class ReceiveGood {
    /** 商品编号 */
    private String goodsId;
    /** 商品名称,必填 */
    private String goodsName;
    /** 商品数量 */
    private String quantity;
    /** 商品价格 */
    private String price;
    public String getGoodsId() {
        return goodsId;
    }
    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public String getQuantity() {
        return quantity;
    }
    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/ReceiveUser.java
New file
@@ -0,0 +1,27 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class ReceiveUser {
    /** 分账方会员ID,必填 */
    private String splitUserId;
    /** 确认分账金额,必填 */
    private String rcvSplitAmount;
    public String getSplitUserId() {
        return splitUserId;
    }
    public void setSplitUserId(String splitUserId) {
        this.splitUserId = splitUserId;
    }
    public String getRcvSplitAmount() {
        return rcvSplitAmount;
    }
    public void setRcvSplitAmount(String rcvSplitAmount) {
        this.rcvSplitAmount = rcvSplitAmount;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Transfer.java
New file
@@ -0,0 +1,76 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class Transfer {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "transfer";
    //充值订单号
    private String depositMerOrderId;
    //收款方子商户号
    private String toUserId;
    //转账金额
    private String amount;
    //订单信息
    private String orderName;
    //后台回调地址
    private String notifyUrl;
    //自定义参数1
    private String parameter1;
    //自定义参数2
    private String parameter2;
    public String getDepositMerOrderId() {
        return depositMerOrderId;
    }
    public void setDepositMerOrderId(String depositMerOrderId) {
        this.depositMerOrderId = depositMerOrderId;
    }
    public String getToUserId() {
        return toUserId;
    }
    public void setToUserId(String toUserId) {
        this.toUserId = toUserId;
    }
    public String getAmount() {
        return amount;
    }
    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/Withdraw.java
New file
@@ -0,0 +1,96 @@
package com.supersavedriving.driver.modular.system.util.MallBook.model;
public class Withdraw {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "withdraw";
    /**
     * 子商户编号(必填)
     */
    private String userId;
    /**
     * 结算金额(必填)
     */
    private String amount;
    /**
     * 订单名称
     */
    private String orderName;
    /**
     * 备注
     */
    private String remark;
    /**
     * 后台回调地址(必填)
     */
    private String notifyUrl;
    /**
     * 自定义参数1
     */
    private String parameter1;
    /**
     * 自定义参数2
     */
    private String parameter2;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getAmount() {
        return amount;
    }
    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java
@@ -7,6 +7,8 @@
import com.supersavedriving.driver.modular.system.util.MallBook.config.ChannelConfig;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceRequest;
import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * @Author xiaogc
@@ -14,17 +16,19 @@
 */
public class TrhRequest<T> {
    Logger logger = LoggerFactory.getLogger(TrhRequest.class);
    public InterfaceResponse execute(T t, String serverCode) {
        InterfaceRequest<T> request = new InterfaceRequest(t, serverCode);
        System.out.println("mallbook请求参数:" + JSONUtil.toJsonStr(request));
        logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request));
        String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request));
        System.out.println("mallbook响应参数:" + result);
        logger.warn("mallbook响应参数:" + result);
        InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class);
        boolean verify = RSASignature.validate(response.content(), response.getSign());
        if (!verify) {
            throw new ValidateException("签名验证失败");
            logger.warn("签名验证失败");
        } else {
            System.out.printf("签名验证通过");
            logger.warn("签名验证通过");
        }
        return response;
    }
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java
@@ -42,6 +42,7 @@
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.*;
@@ -718,14 +719,14 @@
        initiateBatchTransferRequest.setOutBatchNo(outDetailNo);
        initiateBatchTransferRequest.setBatchName("付款");
        initiateBatchTransferRequest.setBatchRemark(remark);
        initiateBatchTransferRequest.setTotalAmount(amount.longValue() * 100);
        initiateBatchTransferRequest.setTotalAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue());
        initiateBatchTransferRequest.setTotalNum(1);
        {
            List<TransferDetailInput> transferDetailListList = new ArrayList<>();
            {
                TransferDetailInput transferDetailInput = new TransferDetailInput();
                transferDetailInput.setOutDetailNo(outDetailNo);
                transferDetailInput.setTransferAmount(amount.longValue() * 100);
                transferDetailInput.setTransferAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue());
                transferDetailInput.setTransferRemark(remark);
                transferDetailInput.setOpenid(openid);
                if(amount > 0.3){
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java
@@ -164,6 +164,43 @@
    }
    /**
     * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法)
     * @param id            接受对象id
     * @param type          接受对象类型(1=用户,2=司机)
     */
    public void pushGrabOrderExtras(Integer id, Integer type){
        JSONObject msg = new JSONObject();
        msg.put("code", 200);
        msg.put("msg", "SUCCESS");
        msg.put("method", "PUSH_ORDER");
        Map<String, Object> map = new HashMap<>();
        msg.put("data", map);
        //调用推送
        HttpHeaders headers = new HttpHeaders();
        // 以表单的方式提交
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        //将请求头部和参数合成一个请求
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("msg", msg.toJSONString());
        params.add("id", id.toString());
        params.add("type", type.toString());
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
        String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class);
        JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
        if(jsonObject1.getIntValue("code") != 200){
            logger.debug(jsonObject1.getString("msg"));
            System.err.println(jsonObject1.getString("msg"));
        }
    }
    /**
     * 推送订单数据
     * @param id
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java
@@ -238,6 +238,18 @@
        return lock("redis", uuid, time);
    }
    /**
     * 获取redis锁
     * @param key
     * @param time
     * @return
     */
    public boolean lock(String key, int time){
        String uuid = UUID.randomUUID().toString();
        return lock(key, uuid, time);
    }
    /**
     * redis释放锁
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/TaskUtil.java
@@ -1,12 +1,12 @@
package com.supersavedriving.driver.modular.system.util;
import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
import com.supersavedriving.driver.modular.system.service.IDriverService;
import com.supersavedriving.driver.modular.system.service.IOrderService;
import com.supersavedriving.driver.modular.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Set;
/**
@@ -24,6 +24,30 @@
    @Autowired
    private IOrderService orderService;
    @Autowired
    private IYouTuiDriverService youTuiDriverService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private IDriverWorkService driverWorkService;
    /**
     * 5秒推送
     */
    @Scheduled(fixedRate = 1000 * 5)
    public void task5Seconds(){
        try {
            Set<String> orderServices = redisUtil.getSetAllValue("orderService");
            for (String s : orderServices) {
                orderService.pushOrderInfo(Long.valueOf(s));//开始推送订单数据
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -33,7 +57,8 @@
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute(){
        try {
            orderService.completeCollection();
            driverWorkService.taskDriverOffWork();
            youTuiDriverService.editState();
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -46,6 +71,7 @@
    @Scheduled(cron = "0 0 0 * * *")
    public void taskDay(){
        try {
            orderService.completeCollection();
            accountChangeDetailService.deductionInsurance();
        }catch (Exception e){
            e.printStackTrace();
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/WeChatUtil.java
File was deleted
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/AES.java
New file
@@ -0,0 +1,72 @@
package com.supersavedriving.driver.modular.system.util.weChat;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
/**
* AES加密
* @author pzb
* @Date 2021/12/3 15:43
*/
public class AES {
    public static boolean initialized = false;
    /**
     * AES解密
     *
     * @param content
     *            密文
     * @return
     * @throws InvalidAlgorithmParameterException
     * @throws NoSuchProviderException
     */
    public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
        initialize();
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
            Key sKeySpec = new SecretKeySpec(keyByte, "AES");
            cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
            byte[] result = cipher.doFinal(content);
            return result;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    public static void initialize() {
        if (initialized)
            return;
        Security.addProvider(new BouncyCastleProvider());
        initialized = true;
    }
    // 生成iv
    public static AlgorithmParameters generateIV(byte[] iv) throws Exception {
        AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
        params.init(new IvParameterSpec(iv));
        return params;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/AesException.java
New file
@@ -0,0 +1,59 @@
package com.supersavedriving.driver.modular.system.util.weChat;
@SuppressWarnings("serial")
public class AesException extends Exception {
    public final static int OK = 0;
    public final static int ValidateSignatureError = -40001;
    public final static int ParseXmlError = -40002;
    public final static int ComputeSignatureError = -40003;
    public final static int IllegalAesKey = -40004;
    public final static int ValidateAppidError = -40005;
    public final static int EncryptAESError = -40006;
    public final static int DecryptAESError = -40007;
    public final static int IllegalBuffer = -40008;
    //public final static int EncodeBase64Error = -40009;
    //public final static int DecodeBase64Error = -40010;
    //public final static int GenReturnXmlError = -40011;
    private int code;
    private static String getMessage(int code) {
        switch (code) {
        case ValidateSignatureError:
            return "签名验证错误";
        case ParseXmlError:
            return "xml解析失败";
        case ComputeSignatureError:
            return "sha加密生成签名失败";
        case IllegalAesKey:
            return "SymmetricKey非法";
        case ValidateAppidError:
            return "appid校验失败";
        case EncryptAESError:
            return "aes加密失败";
        case DecryptAESError:
            return "aes解密失败";
        case IllegalBuffer:
            return "解密后得到的buffer非法";
//        case EncodeBase64Error:
//            return "base64加密错误";
//        case DecodeBase64Error:
//            return "base64解密错误";
//        case GenReturnXmlError:
//            return "xml生成失败";
        default:
            return null; // cannot be
        }
    }
    public int getCode() {
        return code;
    }
    AesException(int code) {
        super(getMessage(code));
        this.code = code;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/ByteGroup.java
New file
@@ -0,0 +1,26 @@
package com.supersavedriving.driver.modular.system.util.weChat;
import java.util.ArrayList;
class ByteGroup {
    ArrayList<Byte> byteContainer = new ArrayList<Byte>();
    public byte[] toBytes() {
        byte[] bytes = new byte[byteContainer.size()];
        for (int i = 0; i < byteContainer.size(); i++) {
            bytes[i] = byteContainer.get(i);
        }
        return bytes;
    }
    public ByteGroup addBytes(byte[] bytes) {
        for (byte b : bytes) {
            byteContainer.add(b);
        }
        return this;
    }
    public int size() {
        return byteContainer.size();
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/PKCS7Encoder.java
New file
@@ -0,0 +1,67 @@
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
package com.supersavedriving.driver.modular.system.util.weChat;
import java.nio.charset.Charset;
import java.util.Arrays;
/**
 * 提供基于PKCS7算法的加解密接口.
 */
class PKCS7Encoder {
    static Charset CHARSET = Charset.forName("utf-8");
    static int BLOCK_SIZE = 32;
    /**
     * 获得对明文进行补位填充的字节.
     *
     * @param count 需要进行填充补位操作的明文字节个数
     * @return 补齐用的字节数组
     */
    static byte[] encode(int count) {
        // 计算需要填充的位数
        int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE);
        if (amountToPad == 0) {
            amountToPad = BLOCK_SIZE;
        }
        // 获得补位所用的字符
        char padChr = chr(amountToPad);
        String tmp = new String();
        for (int index = 0; index < amountToPad; index++) {
            tmp += padChr;
        }
        return tmp.getBytes(CHARSET);
    }
    /**
     * 删除解密后明文的补位字符
     *
     * @param decrypted 解密后的明文
     * @return 删除补位字符后的明文
     */
    static byte[] decode(byte[] decrypted) {
        int pad = (int) decrypted[decrypted.length - 1];
        if (pad < 1 || pad > 32) {
            pad = 0;
        }
        return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad);
    }
    /**
     * 将数字转化成ASCII码对应的字符,用于对明文进行补码
     *
     * @param a 需要转化的数字
     * @return 转化得到的字符
     */
    static char chr(int a) {
        byte target = (byte) (a & 0xFF);
        return (char) target;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/SHA1.java
New file
@@ -0,0 +1,61 @@
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
package com.supersavedriving.driver.modular.system.util.weChat;
import java.security.MessageDigest;
import java.util.Arrays;
/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
public class SHA1 {
    /**
     * 用SHA1算法生成安全签名
     * @param token 票据
     * @param timestamp 时间戳
     * @param nonce 随机字符串
     * @param encrypt 密文
     * @return 安全签名
     * @throws AesException
     */
    public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException
              {
        try {
            String[] array = new String[] { token, timestamp, nonce, encrypt };
            StringBuffer sb = new StringBuffer();
            // 字符串排序
            Arrays.sort(array);
            for (int i = 0; i < 4; i++) {
                sb.append(array[i]);
            }
            String str = sb.toString();
            // SHA1签名生成
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            md.update(str.getBytes());
            byte[] digest = md.digest();
            StringBuffer hexstr = new StringBuffer();
            String shaHex = "";
            for (int i = 0; i < digest.length; i++) {
                shaHex = Integer.toHexString(digest[i] & 0xFF);
                if (shaHex.length() < 2) {
                    hexstr.append(0);
                }
                hexstr.append(shaHex);
            }
            return hexstr.toString();
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.ComputeSignatureError);
        }
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WXBizMsgCrypt.java
New file
@@ -0,0 +1,288 @@
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
/**
 * 针对org.apache.commons.codec.binary.Base64,
 * 需要导入架包commons-codec-1.9(或commons-codec-1.8等其他版本)
 * 官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi
 */
package com.supersavedriving.driver.modular.system.util.weChat;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Random;
/**
 * 提供接收和推送给公众平台消息的加解密接口(UTF8编码的字符串).
 * <ol>
 *     <li>第三方回复加密消息给公众平台</li>
 *     <li>第三方收到公众平台发送的消息,验证消息的安全性,并对消息进行解密。</li>
 * </ol>
 * 说明:异常java.security.InvalidKeyException:illegal Key Size的解决方案
 * <ol>
 *     <li>在官方网站下载JCE无限制权限策略文件(JDK7的下载地址:
 *      http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html</li>
 *     <li>下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt</li>
 *     <li>如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件</li>
 *     <li>如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件</li>
 * </ol>
 */
public class WXBizMsgCrypt {
    static Charset CHARSET = Charset.forName("utf-8");
    Base64 base64 = new Base64();
    byte[] aesKey;
    String token;
    String appId;
    /**
     * 构造函数
     * @param token 公众平台上,开发者设置的token
     * @param encodingAesKey 公众平台上,开发者设置的EncodingAESKey
     * @param appId 公众平台appid
     *
     * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息
     */
    public WXBizMsgCrypt(String token, String encodingAesKey, String appId) throws AesException {
        if (encodingAesKey.length() != 43) {
            throw new AesException(AesException.IllegalAesKey);
        }
        this.token = token;
        this.appId = appId;
        aesKey = Base64.decodeBase64(encodingAesKey + "=");
    }
    // 生成4个字节的网络字节序
    byte[] getNetworkBytesOrder(int sourceNumber) {
        byte[] orderBytes = new byte[4];
        orderBytes[3] = (byte) (sourceNumber & 0xFF);
        orderBytes[2] = (byte) (sourceNumber >> 8 & 0xFF);
        orderBytes[1] = (byte) (sourceNumber >> 16 & 0xFF);
        orderBytes[0] = (byte) (sourceNumber >> 24 & 0xFF);
        return orderBytes;
    }
    // 还原4个字节的网络字节序
    int recoverNetworkBytesOrder(byte[] orderBytes) {
        int sourceNumber = 0;
        for (int i = 0; i < 4; i++) {
            sourceNumber <<= 8;
            sourceNumber |= orderBytes[i] & 0xff;
        }
        return sourceNumber;
    }
    // 随机生成16位字符串
    String getRandomStr() {
        String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 16; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }
    /**
     * 对明文进行加密.
     *
     * @param text 需要加密的明文
     * @return 加密后base64编码的字符串
     * @throws AesException aes加密失败
     */
    String encrypt(String randomStr, String text) throws AesException {
        ByteGroup byteCollector = new ByteGroup();
        byte[] randomStrBytes = randomStr.getBytes(CHARSET);
        byte[] textBytes = text.getBytes(CHARSET);
        byte[] networkBytesOrder = getNetworkBytesOrder(textBytes.length);
        byte[] appidBytes = appId.getBytes(CHARSET);
        // randomStr + networkBytesOrder + text + appid
        byteCollector.addBytes(randomStrBytes);
        byteCollector.addBytes(networkBytesOrder);
        byteCollector.addBytes(textBytes);
        byteCollector.addBytes(appidBytes);
        // ... + pad: 使用自定义的填充方式对明文进行补位填充
        byte[] padBytes = PKCS7Encoder.encode(byteCollector.size());
        byteCollector.addBytes(padBytes);
        // 获得最终的字节流, 未加密
        byte[] unencrypted = byteCollector.toBytes();
        try {
            // 设置加密模式为AES的CBC模式
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
            cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
            // 加密
            byte[] encrypted = cipher.doFinal(unencrypted);
            // 使用BASE64对加密后的字符串进行编码
            String base64Encrypted = base64.encodeToString(encrypted);
            return base64Encrypted;
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.EncryptAESError);
        }
    }
    /**
     * 对密文进行解密.
     *
     * @param text 需要解密的密文
     * @return 解密得到的明文
     * @throws AesException aes解密失败
     */
    String decrypt(String text) throws AesException {
        byte[] original;
        try {
            // 设置解密模式为AES的CBC模式
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));
            cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);
            // 使用BASE64对密文进行解码
            byte[] encrypted = Base64.decodeBase64(text);
            // 解密
            original = cipher.doFinal(encrypted);
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.DecryptAESError);
        }
        String xmlContent, from_appid;
        try {
            // 去除补位字符
            byte[] bytes = PKCS7Encoder.decode(original);
            // 分离16位随机字符串,网络字节序和AppId
            byte[] networkOrder = Arrays.copyOfRange(bytes, 16, 20);
            int xmlLength = recoverNetworkBytesOrder(networkOrder);
            xmlContent = new String(Arrays.copyOfRange(bytes, 20, 20 + xmlLength), CHARSET);
            from_appid = new String(Arrays.copyOfRange(bytes, 20 + xmlLength, bytes.length),
                    CHARSET);
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.IllegalBuffer);
        }
        // appid不相同的情况
        if (!from_appid.equals(appId)) {
            throw new AesException(AesException.ValidateAppidError);
        }
        return xmlContent;
    }
    /**
     * 将公众平台回复用户的消息加密打包.
     * <ol>
     *     <li>对要发送的消息进行AES-CBC加密</li>
     *     <li>生成安全签名</li>
     *     <li>将消息密文和安全签名打包成xml格式</li>
     * </ol>
     *
     * @param replyMsg 公众平台待回复用户的消息,xml格式的字符串
     * @param timeStamp 时间戳,可以自己生成,也可以用URL参数的timestamp
     * @param nonce 随机串,可以自己生成,也可以用URL参数的nonce
     *
     * @return 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串
     * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息
     */
    public String encryptMsg(String replyMsg, String timeStamp, String nonce) throws AesException {
        // 加密
        String encrypt = encrypt(getRandomStr(), replyMsg);
        // 生成安全签名
        if (timeStamp == "") {
            timeStamp = Long.toString(System.currentTimeMillis());
        }
        String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt);
        // System.out.println("发送给平台的签名是: " + signature[1].toString());
        // 生成发送的xml
        String result = XMLParse.generate(encrypt, signature, timeStamp, nonce);
        return result;
    }
    /**
     * 检验消息的真实性,并且获取解密后的明文.
     * <ol>
     *     <li>利用收到的密文生成安全签名,进行签名验证</li>
     *     <li>若验证通过,则提取xml中的加密消息</li>
     *     <li>对消息进行解密</li>
     * </ol>
     *
     * @param msgSignature 签名串,对应URL参数的msg_signature
     * @param timeStamp 时间戳,对应URL参数的timestamp
     * @param nonce 随机串,对应URL参数的nonce
     * @param postData 密文,对应POST请求的数据
     *
     * @return 解密后的原文
     * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息
     */
    public String decryptMsg(String msgSignature, String timeStamp, String nonce, String postData)
            throws AesException {
        // 密钥,公众账号的app secret
        // 提取密文
        Object[] encrypt = XMLParse.extract(postData);
        // 验证安全签名
        String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt[1].toString());
        // 和URL中的签名比较是否相等
        // System.out.println("第三方收到URL中的签名:" + msg_sign);
        // System.out.println("第三方校验签名:" + signature);
        if (!signature.equals(msgSignature)) {
            throw new AesException(AesException.ValidateSignatureError);
        }
        // 解密
        String result = decrypt(encrypt[1].toString());
        return result;
    }
    /**
     * 验证URL
     * @param msgSignature 签名串,对应URL参数的msg_signature
     * @param timeStamp 时间戳,对应URL参数的timestamp
     * @param nonce 随机串,对应URL参数的nonce
     * @param echoStr 随机串,对应URL参数的echostr
     *
     * @return 解密之后的echostr
     * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息
     */
    public String verifyUrl(String msgSignature, String timeStamp, String nonce, String echoStr)
            throws AesException {
        String signature = SHA1.getSHA1(token, timeStamp, nonce, "");
        if (!signature.equals(msgSignature)) {
            throw new AesException(AesException.ValidateSignatureError);
        }
        String result = decrypt(echoStr);
        return result;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WXCore.java
New file
@@ -0,0 +1,52 @@
package com.supersavedriving.driver.modular.system.util.weChat;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
public class WXCore {
    private static Logger logger = LoggerFactory.getLogger(WXCore.class);
    private static final String WATERMARK = "watermark";
    @Value("${wx.appletsAppid}")
    private static String appid ;
    /**
     * 解密数据
     * @return
     * @throws Exception
     */
    public static String decrypt(String encryptedData, String sessionKey, String iv){
        String result = "";
        try {
            AES aes = new AES();
            byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv));
            if(null != resultByte && resultByte.length > 0){
                result = new String(WxPKCS7Encoder.decode(resultByte), "UTF-8");
//                JSONObject jsonObject = JSON.parseObject(result);
//                String decryptAppid = jsonObject.getJSONObject(WATERMARK).getString("appid");
//                if(!appid.equals(decryptAppid)){
//                    result = "";
//                }
            }
        } catch (Exception e) {
            result = "";
            e.printStackTrace();
        }
        return result;
    }
    public static void main(String[] args) throws Exception{
        String appId = "wx4f4bc4dec97d474b";
        String encryptedData = "ajhisfk0EhWCBcoxt/5QJA3bKPTygQXANbCSev92MyqIqGxRhzZFS1SlQrIWAo3tx8YfsB+VlScZNOlRyfnXKqPUl9h+PDeKsTkTst9V4pq4mUbI+r3AautXBffVk/rpyjMfanVsWeOlxkupdv2U9U4BrueR/Rak+TCmHTWUUf8eDLoi6nioL/Pft/rYaO3JD54hgpcY0Ef/k7Boyap4E0/uKVowY1ANO7KVydSXE6S7OKzXuzmDTbV38v+7ryMHtglUzoKzF1gL8y9OZRwkaesfHN1kfItjpsAibjSgkIiiW6ZEHLT2n1UDkJtfUqg63je2cJAH7gzeUm9TCDDftdhLU+NuPk3j/LXyFQ05pJ8B19+kIXF3dcmHOH7lFvi7yGmVuAD/9AnetGWgId3TZDS/OjbiVUM30RogeziAw98VpAyAAq1r2ULFwi8e928m";
        String sessionKey = "CdxFGwXIluQFZ+qD+NSFKQ==";
        String iv = "3FD8r1Spwlf7LG8YEq41+Q==";
        logger.debug(decrypt(encryptedData, sessionKey, iv));
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java
New file
@@ -0,0 +1,415 @@
package com.supersavedriving.driver.modular.system.util.weChat;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.supersavedriving.driver.core.util.ToolUtil;
import com.supersavedriving.driver.modular.system.util.RedisUtil;
import com.supersavedriving.driver.modular.system.util.UUIDUtil;
import com.supersavedriving.driver.modular.system.util.httpClinet.HttpClientUtil;
import com.supersavedriving.driver.modular.system.util.httpClinet.HttpResult;
import com.supersavedriving.driver.modular.system.util.weChat.model.Code2Session;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
/**
 * 微信工具类
 */
@Component
public class WeChatUtil {
    private static Logger logger = LoggerFactory.getLogger(WeChatUtil.class);
    @Value("${wx.appletsAppid}")
    private String wxAppletsAppid;
    @Value("${wx.appletsAppSecret}")
    private String wxAppletsAppSecret;
    @Value("${wx.officialAccountAppid}")
    private String officialAccountAppid;
    @Value("{wx.officialAccountAppSecret}")
    private String officialAccountAppSecret;
    @Value("${wx.appid}")
    private String webAppId;
    @Value("${wx.appSecret}")
    private String webAppSecret;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private RedisUtil redisUtil;
    {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
//                    Thread.sleep(30000);
//                    new Timer().schedule(new TimerTask() {
//                        @Override
//                        public void run() {
//                            try {
//                                String wxAppletsAccessToken = getWxAppletsAccessToken();
//                                if(ToolUtil.isEmpty(wxAppletsAccessToken)){
//                                    System.err.println("获取微信小程序access_token失败");
//                                    return;
//                                }
//                                redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000);
//                            }catch (Exception e){
//                                e.printStackTrace();
//                            }
//                        }
//                    }, 0, 7000000);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }
    /**
     * 小程序使用jscode获取openid
     * @param jscode
     * @return
     */
    public Code2Session code2Session(String jscode) throws Exception{
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret
                + "&js_code=" + jscode + "&grant_type=authorization_code";
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(null == httpResult || httpResult.getCode() != 200){
            return null;
        }
        Code2Session code2Session = JSON.parseObject(httpResult.getData(), Code2Session.class);
        return code2Session;
    }
    /**
     * 获取微信小程序token
     * @return
     */
    public String getWxAppletsAccessToken() throws Exception{
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret;
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(httpResult.getCode() != 200){
            return "";
        }
        JSONObject jsonObject = JSON.parseObject(httpResult.getData());
        return jsonObject.getString("access_token");
    }
    /***
     * 获取jsapiTicket(小程序)
     * 来源 www.vxzsk.com
     * @return
     */
    public String getWxAppletsJSApiTicket() throws Exception{
        String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
        String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + wxAppletsAccessToken + "&type=jsapi";
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", urlStr, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        logger.debug(httpResult.getData());
        String ticket = JSONObject.parseObject(httpResult.getData()).getString("ticket");
        return  ticket;
    }
    /**
     * 通过config接口注入权限验证配置(小程序)
     * 附录1-JS-SDK使用权限签名算法,
     * @return
     */
    public Map<String,Object> getWxAppletsSignatureConfig(String url) throws Exception{
        //获取token
        try {
            url = URLDecoder.decode(url, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String ticket = getWxAppletsJSApiTicket();
        String noncestr = UUIDUtil.getRandomCode();
        Long timestamp = System.currentTimeMillis();
        String content = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url;
        String signature = DigestUtils.sha1Hex(content);
        Map<String,Object> map=new HashMap<>();
        map.put("appId", wxAppletsAppid);
        map.put("timestamp", timestamp);
        map.put("nonceStr", noncestr);
        map.put("signature", signature);
        return  map;
    }
    /**
     * 网站应用登录
     * @param code
     * @return
     */
    public Map<String, String> webAccessToken(String code) throws Exception{
        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + webAppId + "&secret=" + webAppSecret + "&code=" + code + "&grant_type=authorization_code";
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        JSONObject jsonObject = JSON.parseObject(httpResult.getData());
        int errcode = jsonObject.getIntValue("errcode");
        Map<String, String> map = new HashMap<>();
        if(errcode == 0){//成功
            map.put("access_token", jsonObject.getString("access_token"));
            map.put("openid", jsonObject.getString("openid"));
            map.put("refresh_token", jsonObject.getString("refresh_token"));
            map.put("unionid", jsonObject.getString("unionid"));
            return map;
        }
        if(errcode == -1){//系统繁忙,此时请开发者稍候再试
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        if(errcode == 40029){//code 无效
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        if(errcode == 45011){//频率限制,每个用户每分钟100次
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        return map;
    }
    /**
     * 获取微信个人信息
     * @param access_token
     * @param openid
     * @return
     */
    public Map<String, Object> getUserInfo(String access_token, String openid) throws Exception{
        String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid;
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        JSONObject jsonObject = JSON.parseObject(httpResult.getData());
        int errcode = jsonObject.getIntValue("errcode");
        Map<String, Object> map = new HashMap<>();
        if(errcode == 0){//成功
            map.put("nickname", jsonObject.getString("nickname"));
            map.put("openid", jsonObject.getString("openid"));
            map.put("sex", jsonObject.getString("sex"));
            map.put("headimgurl", jsonObject.getString("headimgurl"));
            return map;
        }
        if(errcode == -1){//系统繁忙,此时请开发者稍候再试
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        if(errcode == 40029){//code 无效
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        if(errcode == 45011){//频率限制,每个用户每分钟100次
            map.put("msg", jsonObject.getString("errmsg"));
            return map;
        }
        return map;
    }
    /**
     * 公众号获取openid
     * @param code
     * @return
     */
    public Map<String,Object> getOpenId(String code) throws Exception{
        if (code == null || code.length() == 0) {
            return null;
        }
        String grantType = "authorization_code";
        String params = "appid=" + officialAccountAppid + "&secret=" + officialAccountAppSecret + "&code=" + code + "&grant_type=" + grantType;
        logger.debug("sssss"+params);
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", "https://api.weixin.qq.com/sns/oauth2/access_token?" + params, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        JSONObject json = JSON.parseObject(httpResult.getData());
        logger.debug(json.toJSONString());
        String openId = json.get("openid").toString();
        String accessToken = json.get("access_token").toString();
        Integer expiresIn = json.getInteger("expires_in");
        String refresh_token = json.getString("refresh_token");
        String unionid = json.getString("unionid");
        Map<String,Object> map=new HashMap<>();
        map.put("openId",openId);
        map.put("accessToken",accessToken);
        map.put("expiresIn", expiresIn);
        map.put("refreshToken", refresh_token);
        map.put("unionid", unionid);
        return map;
    }
    /***
     * 获取acess_token (公众号)
     * 来源www.vxzsk.com
     * @return
     */
    public String getAccessToken() throws Exception{
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + officialAccountAppid
                + "&secret=" + officialAccountAppSecret;
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        String accessToken = JSONObject.parseObject(httpResult.getData()).getString("access_token");
        return accessToken;
    }
    /***
     * 获取jsapiTicket(公众号)
     * 来源 www.vxzsk.com
     * @return
     */
    public String getJSApiTicket() throws Exception{
        //获取token
        String acess_token = redisUtil.getValue("acess_token");
        String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + acess_token + "&type=jsapi";
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", urlStr, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        logger.debug(httpResult.getData());
        String ticket = JSONObject.parseObject(httpResult.getData()).getString("ticket");
        return  ticket;
    }
    /**
     * 通过config接口注入权限验证配置(公众号)
     * 附录1-JS-SDK使用权限签名算法,
     * @return
     */
    public Map<String,Object> getSignatureConfig(String url) throws Exception{
        //获取token
        try {
            url = URLDecoder.decode(url, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String ticket = getJSApiTicket();
        String noncestr = UUIDUtil.getRandomCode();
        Long timestamp = System.currentTimeMillis();
        String content = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url;
        String signature = DigestUtils.sha1Hex(content);
        Map<String,Object> map=new HashMap<>();
        map.put("appId", officialAccountAppid);
        map.put("timestamp", timestamp);
        map.put("nonceStr", noncestr);
        map.put("signature", signature);
        return  map;
    }
    /**
     * 公众号获取用户个人信息
     * @param access_token
     * @param openid
     * @return
     */
    public Map<String, Object> queryUserInfo(String access_token, String openid) throws Exception{
        String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";
        HttpResult httpResult = HttpClientUtil.pushHttpRequset("GET", url, null, null, "form");
        if(httpResult.getCode() != 200){
            return null;
        }
        logger.debug(httpResult.getData());
        JSONObject j = JSON.parseObject(httpResult.getData());
        Map<String, Object> map = new HashMap<>();
        map.put("nickname", j.getString("nickname"));
        map.put("sex", j.getInteger("sex"));
        map.put("headimgurl", j.getString("headimgurl"));
        map.put("unionid", j.getString("unionid"));
        return map;
    }
    /**
     * 获取小程序二维码
     * @param page      跳转页 例如 pages/index/index
     * @param scene     参数 a=1&b=2
     */
    public InputStream getwxacodeunlimit(String page, String scene, String envVersion) throws Exception{
        try {
            String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + wxAppletsAccessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("scene", scene);
            param.put("page", page);
            param.put("env_version", envVersion);
            HttpHeaders httpHeaders = new HttpHeaders();
            MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
            httpHeaders.setContentType(type);
            HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
            ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]);
            String body1 = exchange.getBody();
//            System.err.println(body1);
            ResponseEntity<byte[]> entity  = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
            byte[] body = entity.getBody();
//            System.err.println(Base64.encodeBase64String(body));
            return new ByteArrayInputStream(body);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取小程序urlscheme码
     * @return
     */
    public String getUrlscheme(String path) throws Exception{
        String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
        String url = "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + wxAppletsAccessToken;
        Map<String, Object> param = new HashMap<>();
        param.put("is_expire", true);
        param.put("expire_type", 1);
        param.put("expire_interval", 180);
        Map<String, Object> map1 = new HashMap<>();
        map1.put("path", path);
        map1.put("query", "");
        map1.put("env_version", "release");
        param.put("jump_wxa", map1);
        HttpHeaders httpHeaders = new HttpHeaders();
        MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
        httpHeaders.setContentType(type);
        HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
        ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
        String body1 = exchange.getBody();
        return body1;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WxPKCS7Encoder.java
New file
@@ -0,0 +1,63 @@
package com.supersavedriving.driver.modular.system.util.weChat;
import java.nio.charset.Charset;
import java.util.Arrays;
/**
* 微信小程序加解密
* @author pzb
* @Date 2021/12/3 15:43
*/
public class WxPKCS7Encoder {
    private static final Charset CHARSET = Charset.forName("utf-8");
    private static final int BLOCK_SIZE = 32;
    /**
     * 获得对明文进行补位填充的字节.
     *
     * @param count
     *            需要进行填充补位操作的明文字节个数
     * @return 补齐用的字节数组
     */
    public static byte[] encode(int count) {
        // 计算需要填充的位数
        int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE);
        if (amountToPad == 0) {
            amountToPad = BLOCK_SIZE;
        }
        // 获得补位所用的字符
        char padChr = chr(amountToPad);
        String tmp = new String();
        for (int index = 0; index < amountToPad; index++) {
            tmp += padChr;
        }
        return tmp.getBytes(CHARSET);
    }
    /**
     * 删除解密后明文的补位字符
     *
     * @param decrypted
     *            解密后的明文
     * @return 删除补位字符后的明文
     */
    public static byte[] decode(byte[] decrypted) {
        int pad = decrypted[decrypted.length - 1];
        if (pad < 1 || pad > 32) {
            pad = 0;
        }
        return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad);
    }
    /**
     * 将数字转化成ASCII码对应的字符,用于对明文进行补码
     *
     * @param a
     *            需要转化的数字
     * @return 转化得到的字符
     */
    public static char chr(int a) {
        byte target = (byte) (a & 0xFF);
        return (char) target;
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/XMLParse.java
New file
@@ -0,0 +1,71 @@
/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 *
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */
// ------------------------------------------------------------------------
package com.supersavedriving.driver.modular.system.util.weChat;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
/**
 * XMLParse class
 *
 * 提供提取消息格式中的密文及生成回复消息格式的接口.
 */
class XMLParse {
    /**
     * 提取出xml数据包中的加密消息
     * @param xmltext 待提取的xml字符串
     * @return 提取出的加密消息字符串
     * @throws AesException
     */
    public static Object[] extract(String xmltext) throws AesException     {
        Object[] result = new Object[3];
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            StringReader sr = new StringReader(xmltext);
            InputSource is = new InputSource(sr);
            Document document = db.parse(is);
            Element root = document.getDocumentElement();
            NodeList nodelist1 = root.getElementsByTagName("Encrypt");
            NodeList nodelist2 = root.getElementsByTagName("ToUserName");
            result[0] = 0;
            result[1] = nodelist1.item(0).getTextContent();
            result[2] = nodelist2.item(0).getTextContent();
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.ParseXmlError);
        }
    }
    /**
     * 生成xml消息
     * @param encrypt 加密后的消息密文
     * @param signature 安全签名
     * @param timestamp 时间戳
     * @param nonce 随机字符串
     * @return 生成的xml字符串
     */
    public static String generate(String encrypt, String signature, String timestamp, String nonce) {
        String format = "<xml>\n" + "<Encrypt><![CDATA[%1$s]]></Encrypt>\n"
                + "<MsgSignature><![CDATA[%2$s]]></MsgSignature>\n"
                + "<TimeStamp>%3$s</TimeStamp>\n" + "<Nonce><![CDATA[%4$s]]></Nonce>\n" + "</xml>";
        return String.format(format, encrypt, signature, timestamp, nonce);
    }
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/Category.java
New file
@@ -0,0 +1,18 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
/**
 * 订阅消息类目
 */
@Data
public class Category {
    /**
     * 类目id
     */
    private String id;
    /**
     * 类目名称
     */
    private String name;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/Code2Session.java
New file
@@ -0,0 +1,33 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
/**
 * TODO
 *
 * @author 39373
 * @date 2023/2/26 19:42
 */
@Data
public class Code2Session {
    /**
     * 状态码(-1=系统繁忙,0=成功,40029=code无效,45011=频率限制,每个用户每分钟100次,40226=高风险等级用户,小程序登录拦截 )
     */
    private Integer errcode;
    /**
     * 状态说明
     */
    private String errmsg;
    /**
     * openid
     */
    private String openid;
    /**
     * sessionKey
     */
    private String session_key;
    /**
     * unionid
     */
    private String unionid;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/KeywordEnum.java
New file
@@ -0,0 +1,17 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
import java.util.List;
@Data
public class KeywordEnum {
    /**
     * 枚举参数的 key
     */
    private String keywordCode;
    /**
     * 枚举参数值范围列表
     */
    private List<String> enumValueList;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/MessageTemplate.java
New file
@@ -0,0 +1,36 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
import java.util.List;
/**
 * 消息模板
 */
@Data
public class MessageTemplate {
    /**
     * 添加至帐号下的模板 id,发送小程序订阅消息时所需
     */
    private String priTmplId;
    /**
     * 模版标题
     */
    private String title;
    /**
     * 模版内容
     */
    private String content;
    /**
     * 模板内容示例
     */
    private String example;
    /**
     * 模版类型,2 为一次性订阅,3 为长期订阅
     */
    private Integer type;
    /**
     * 枚举参数值范围
     */
    private List<KeywordEnum> keywordEnumValueList;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/PubTemplateKeywords.java
New file
@@ -0,0 +1,26 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
/**
 * 公共消息模板关键字
 */
@Data
public class PubTemplateKeywords {
    /**
     * 关键词 id,选用模板时需要
     */
    private Integer kid;
    /**
     * 关键词内容
     */
    private String name;
    /**
     * 关键词内容对应的示例
     */
    private String example;
    /**
     * 参数类型
     */
    private String rule;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/model/PubTemplatetitles.java
New file
@@ -0,0 +1,26 @@
package com.supersavedriving.driver.modular.system.util.weChat.model;
import lombok.Data;
/**
 * 功能模板
 */
@Data
public class PubTemplatetitles {
    /**
     * 模版标题 id
     */
    private Integer tid;
    /**
     * 模版标题
     */
    private String title;
    /**
     * 模版类型,2 为一次性订阅,3 为长期订阅
     */
    private Integer type;
    /**
     * 模版所属类目 id
     */
    private Integer categoryId;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java
@@ -15,7 +15,7 @@
    private String code;
    @ApiModelProperty("时间")
    private Long createTime;
    @ApiModelProperty("类型(1=订单收入,3=充值,4=提现,7=优惠券收入,8=保险支付)")
    @ApiModelProperty("类型(3=充值,8=保险支付,9=订单信息费)")
    private Integer type;
    @ApiModelProperty("金额")
    private Double amount;
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java
@@ -13,7 +13,7 @@
public class CommissionListWarpper {
    @ApiModelProperty("日期")
    private Long createTime;
    @ApiModelProperty("推广类型(1=用户,2=司机)")
    @ApiModelProperty("推广类型(1=线上收入,2=佣金,3=优惠券)")
    private Integer userType;
    @ApiModelProperty("获取佣金")
    private Double amount;
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverInfoWarpper.java
@@ -55,6 +55,6 @@
    private String merchantName;
    @ApiModelProperty("商户电话")
    private String merchantPhone;
    @ApiModelProperty("商户身份证号码")
    @ApiModelProperty("商户身份证号码【1.1】")
    private String merchantIDCode;
}
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java
@@ -26,6 +26,8 @@
    private String idcardFront;
    @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string")
    private String idcardBack;
    @ApiModelProperty(value = "驾驶证领证时间(2023-01-01)", required = true, dataType = "string")
    private String firstCertificateTime;
    @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string")
    private String driverLicense;
    @ApiModelProperty(value = "邀约人类型(1=用户,2=司机)", required = false, dataType = "int")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java
@@ -52,7 +52,7 @@
    @ApiModelProperty("起步价")
    private Double startPrice;
    @ApiModelProperty("等待时长")
    private Integer waitTime;
    private String waitTime;
    @ApiModelProperty("行驶里程")
    private Double actualMileage;
    @ApiModelProperty("行驶时间")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderPriceWarpper.java
@@ -12,48 +12,32 @@
@Data
@ApiModel
public class OrderPriceWarpper {
    @ApiModelProperty("订单金额")
    private Double orderMoney;
    @ApiModelProperty("订单开始时间")
    private Long startTime;
    @ApiModelProperty("订单结束时间")
    private Long endTime;
    @ApiModelProperty("总行驶里程")
    private Double actualMileage;
    @ApiModelProperty("总行驶时间")
    private Integer travelTime;
    @ApiModelProperty("起步里程")
    private Double startDistance;
    @ApiModelProperty("起步价")
    private Double startPrice;
    @ApiModelProperty("超过起步里程")
    @ApiModelProperty("起步里程")
    private Double startDistance;
    @ApiModelProperty("超出起步里程")
    private Double overDriveDistance;
    @ApiModelProperty("超过起步里程费")
    private Double overDrivePrice;
    @ApiModelProperty("长途里程")
    private Double longDistance;
    @ApiModelProperty("长途费")
    private Double longDistancePrice;
    @ApiModelProperty("超过长途里程")
    private Double overLongDistance;
    @ApiModelProperty("超过长途里程费")
    private Double overLongDistancePrice;
    @ApiModelProperty("里程费")
    private Double mileageFee;
    @ApiModelProperty("等待时长")
    private Integer waitTime;
    private String waitTime;
    @ApiModelProperty("等待费")
    private Double waitTimePrice;
    @ApiModelProperty("超出等待时长")
    private Integer outWaitTime;
    @ApiModelProperty("超出等待费")
    private Double outWaitTimePrice;
    @ApiModelProperty("恶劣天气里程")
    private Double badWeatherDistance;
    @ApiModelProperty("恶劣天气费")
    private Double badWeatherPrice;
    @ApiModelProperty("恶劣天气超出里程")
    private Double overBadWeatherDistance;
    @ApiModelProperty("恶劣天气超出里程费")
    private Double overBadWeatherPrice;
    @ApiModelProperty("折扣金额")
    private Double discountAmount;
    @ApiModelProperty("优惠金额")
    @ApiModelProperty("优惠券金额")
    private Double discountedPrice;
    @ApiModelProperty("恶劣天气费")
    private Double badWeatherPrice;
    @ApiModelProperty("支付金额")
    private Double payMoney;
    @ApiModelProperty("微信收款码")
    private String wxCollectionCode;
    @ApiModelProperty("支付宝收款码")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/PushOrderInfoWarpper.java
@@ -14,11 +14,11 @@
    @ApiModelProperty("司机经度")
    private String driverLng;
    @ApiModelProperty("等待时长(分钟)")
    private Integer waitTime;
    private String waitTime;
    @ApiModelProperty("行驶里程(公里)")
    private Double actualMileage;
    @ApiModelProperty("行驶时间(分钟)")
    private Integer travelTime;
    private String travelTime;
    @ApiModelProperty("101=待接单,102=已接单,103=前往预约点,104=到达预约点,105=开始服务,106=到达目的地,107=待支付,108=待评价,109=已完成,201=转单中,301=已取消,401=等待中")
    private Integer state;
}
driver/guns-admin/src/main/resources/application.yml
@@ -79,8 +79,12 @@
  grantType: authorization_code #填authorization_code
  appid: wx8a9af3889395d0e1 #应用唯一标识,在微信开放平台提交应用审核通过后获得
  appSecret: 95a34f114973298cce4297a20bb59bc3 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: 1 #小程序APPid
  appletsAppSecret: 1 #
  appletsAppid: wx8ae6c610563f2fe6 #小程序APPid
  appletsAppSecret: 8b2c93b0be4f017350050f1e660680fe #
  officialAccountAppid: 11111
  officialAccountAppSecret: 1111
  webAppId: 111
  webAppSecret: 11
  mchId: 1636941942 #微信支付分配的商户号
  key: Eri2GR2SB3b6iIhaoD7k3KQ8X0wf1Ybh #key为商户平台设置的密钥key:
  apiv3: AKJ51Z4nhSqYBxmOXgUyCKA1vLP0J5Aj #key为商户平台设置的密钥key:
@@ -88,10 +92,10 @@
---
alipay:
  appid: 2021001161600393  #应用程序唯一标识
  appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEbTcG2wz+kaYDo2YxflpHE59MvKc3rbl6RlBgO6i5GzgphzeRTv5kRWUpSVkKCsbxFvAYLcgFPmm5nY2fz5hCTKiRcYfpUjH/OougUbzYU3ilUc9JqMbmvy7KN+Kv7+kQYCGLvMqlyYPiJ7LrmJLpE/FUcNLDwo6xUmwJSxaF7M4TbD3ZQZdddki1iJp9GihlqehZCMWOBeotEXvPKDEzSEkYlnvHPQaaspVgeesGmlHDuOiZUokENutxpjo7klWe97NA49hXEtI+xlczNGJKdBr0keBX/kSMsnx8kMxYDjh4QTySBaR6zlO4RYPFekWv9QZ2CrfiKCS7AHUpZYZ5AgMBAAECggEAXjCoUPIBHhhOcowIJe/vGlr0lUohzdJ8+GGGzcvhSDf6DF+mwG3lN0C8oU8QS7o6okRkZW46tLAd1u4fS6oGbDHGPBz6RJQ4B4eGxHMe1OcaCsxTmdq4DmuxRhfV3rnPldwqQA/6O01HxtXhxvzwkWOj5SGSZ7a8c5diTIHh9ULd6neUI/rIFC97mH1TeW0uDIxAtyvswz0pIfDhAR+lsOyTg/8qzsIXjpBFG4gAVxhUeUqQA5HzbsFglC08V7ViDk1OEoWi3yIj1CmNdtntJI4cxqLgTK7MNB9udhbN2I9YasuIpZvlAcvPi5R9cYT8vvFBCFGM+i22wtcsQmxdAQKBgQDaD9y6WNmsp+IaAUG3FqbJC8SqwreGIiEflWwVjrd+LuN6yhyr45CobOmhbTz0de8gRJEZKgJZEJcywL1ScrPIC4n1JaG688lk5aR+0Lik5fy1+L6G/CydJoJqlh6KKdwPJmDGpVu/geLJcLkWcYOwL56IL7GK2JI1p607R0x6iQKBgQCbd0n4xG9GkpvW4LDAJiMEhwPu9QcCKIT0mXVXCgMFdWel9bY3+8RSZoziWutaofm9tRHFAqwjbRyOZ+EdckkNsWVkkTnkKGtAhYKgM0GaOwdMFxmvME5WYJ74a5t1jiezDmR3obUBtS2nyQ8CFPUnlimoTR9F6APrth3h8uvwcQKBgFWaCn1AqdrEYNbyjViRVNHxg7fBDohiV3xtjOt9hfzL7VLjipPTlpL3hlNvbZFNxpx1LjyhqCBMif5LeUanbnnmRbbtmeqpDvNDzupVh1Z8TlMlHa4hymW6m1G6MqzsN83es/jnKvgnxd5sGMx9rUN5vhMaHekykVrswu1VVOl5AoGAMDljh7gfMEv/7TqLeT8bM6dR8AivoNrCy0Di5hnj8AiIGzHJ0TnWnxzSbNB5GwcNeew109/NV7vb1MyiRskRoh657eUiiQSEqGIBsAHWQqo2zEKKJA6e7ipQhYyTj3aGGAPJ5FYT2LDDtb0nW6T2ms34pA0wOzYKKU63nEQHLfECgYEAgbbpZJRtPxWB1M/Dg7loguT5O/VUsKefS0JrSD+tJIqYkumH5mejvYW5YEeDdelkvBhAEFUW9JOkzL+1w1g3wz2QQ2aPV/r55cJE3EfOzbwgw6GsO+8UuyiavbFhS3pFZNI0pR5M3u1+SIcLqQCnYLbO11vnEXglB6wjw9/oxPE= #开发者应用私钥
  alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhG03BtsM/pGmA6NmMX5aRxOfTLynN625ekZQYDuouRs4KYc3kU7+ZEVlKUlZCgrG8RbwGC3IBT5puZ2Nn8+YQkyokXGH6VIx/zqLoFG82FN4pVHPSajG5r8uyjfir+/pEGAhi7zKpcmD4iey65iS6RPxVHDSw8KOsVJsCUsWhezOE2w92UGXXXZItYiafRooZanoWQjFjgXqLRF7zygxM0hJGJZ7xz0GmrKVYHnrBppRw7jomVKJBDbrcaY6O5JVnvezQOPYVxLSPsZXMzRiSnQa9JHgV/5EjLJ8fJDMWA44eEE8kgWkes5TuEWDxXpFr/UGdgq34igkuwB1KWWGeQIDAQAB #应用公钥
  alipay_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzmDrvcNvhexu3KkxVS9bemdSn6pyQUFmpyOGMDOirGR+RbmldpH2N9bPegzZynb5+bmRHii4ib31XeoXc7M7r6UsPhmPeLoSBNwpC+Uig0VxPa0hmvHjAl6StArhB3eMib6Zo40nM6eCYZLLZ1kKpI5Ad/APov9uLrbSnoeZsgeRibQix07arvTEsZq6pJavNlA+UBjp65o6Bv0+kfQ65pMTpbu+jRtTzkTj1hoW9PjwlWrY21F1FvN67zDWkTB2LjGFsqan0Qoe4/X8nK3VsDvkjIm/ZQsnQr8ZzfcuTzQPrcZpo3h9DPZoHeiToEfXtyk7E0bQHEmYVpmrvk/IJwIDAQAB #支付宝公钥
  appid: 111  #应用程序唯一标识
  appPrivateKey: 111 #开发者应用私钥
  alipayPublicKey: 111 #应用公钥
  alipay_public_key: 111 #支付宝公钥
---
@@ -106,9 +110,9 @@
#支付回调地址
#正式环境
#callbackPath: https://okyueche.com:443/user
callbackPath: https://chaoshengdaijia.com:443/driver
#测试环境
callbackPath: http://121.37.15.157:80/driver
#callbackPath: http://121.37.15.157:80/driver
---
@@ -128,18 +132,16 @@
#  mallbook 调起接口参数配置
mallbook:
  # pay_url:mallbook接口地址    测试环境: http://ld.mallbook.cn:12000/api   生产环境:https://cloudpay.mallbook.cn/api
  pay_url: http://ld.mallbook.cn:12000/api
  # pay_url:mallbook接口地址    测试环境: https://uat.mallbook.cn/api   生产环境:https://cloudpay.mallbook.cn/api
  pay_url: https://cloudpay.mallbook.cn/api
  # merchant_no 业务系统商户平台编号,需替换为mallbook工作人员提供的商户编号
  merchant_no:  需要替换内容
  merchant_no: MBH23056
  # version 接口版本号
  version: 1.0.0
  # channel_type 渠道类型 HF:汇付
  channel_type: HF
  # merchant_private_key 商户平台私钥,需要替换成商户平台自己生成的私钥
  merchant_private_key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIoGARvX6k6rVwuUW6HjAPkzXVntCtDI8q/niGZbeILc5T/noer+UNDECSy9f8T6ENw7tEKWaHOFcicrqgRv+wXeo2hPiJI2iYsUNs6I8ckd8i4uy/PBEDMW78GlnQLAatk0NC44HKjn8cuIHaETKNG2Vk3rwGBzNgDZ/God1L6JAgMBAAECgYBhCsOwzehBk5pJ2+9pLO+8Rm72EQGvtflb0BBI1zst1x2gBr4DOPedMJe6yymQVrmP/rJItvONdV/DRqHtKMZ2Wa4ul/U1mDnAtS/FkpRYBA5FaXV2hNEW11xBLhL5iGk35P23Bzaa0MJw9Vsd0vjeykridIw/PweDyTdeRBwC2QJBANS+iOaKRuf6BRwCKDmBSHOiZmc/kKnpx2f5BD3h+LWEX3JsNxObMbW1SxQIf2/qwqzIoEm/WbWaOyuwtRZkXQ8CQQCmFjTm5l+Ws2LoQgM+5+eLmPyMyRFOu4G8yqsUkhKuANHK/qrsS1GTbv6SN341NijjNYl05e0h6Jq1T9UZmtrnAkEAwTfzmn7H+3RmI5QJ+IBkzzEWFHv05X0/8DyID7QmcKWzEncaZqIzObdYYu983qa2/LqSaahyz68uQnYRYi7xHQJATr3SgPIRuaH8r360iTtrRHzYp2qgYQJ25On1KECEyKgszp/kqzieSVbjLLFQjavKwMXeEGT+AwiDaJibwJLxWwJAXZApORsqGqdxc9FTxt5iiqG2ZP5DTXxc6E+ihmlmoVl9KncgTf9ez0Q0Qz/4KUTPTHNVgzt1nyBxiLtnyzFavA==
  merchant_private_key: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALHmyTrxPYcAwABnX+3VW9vxUftm57zBpnbfOT4vizMnKdpfCkIgtdbfdnSCtt637yWM2fxnZfItnhTeQA2lL8f4SXgZt/bVXfmAWi4IxQ+HJy0Qs8nNy2nnjICPBPcpWzHwUxQ/THHqU0a7b9B91J5DFcbQb25BHeRpHwkBw6A/AgMBAAECgYAmcWq2s/7Jt53F+JDAQkTRaHqAyyH0phwkv+QMzhVUfngK2lLLK2pf/nYIg16lDjY9dQx+AJIFHVp1w/kveayzOz3BIqPoznyIVYPolRGZCWPo+2vdp0CIdBh7zahST5g5Gem4cU47wO5hPYs1kXKPG4mUPtaIAMHFxhyLvIagAQJBAOS63AIZrRrldeNCVVNXbpAT52JuWLCgravM9coOh6scmG6UQwxxcott8hneHr9fazk2LHbHMxlG8F+dQPA0+D8CQQDHHJN7Dnske8oJ+1sq4uhQP3HMsmNIgth+ZcaZpiPcxnNKYVGhzAwTVV2ruFJle5ajebo6zfWuqJhtZGRNh1gBAkA/lRoXk1+lfGfa9tOVSVa4wm+t0xLgdqoQefdRZdyc2mQdSSWiTd8Tl0qXmkFd3X6G9uJBWnp/6lJjoektXOwtAkBsZTQsw99qJzIAaSRinpDWTxPG2j6OlR0DAqkxsG7JnAfbsEteh9TzGYAbIgdJVBTX/kbSCJn9ca85rnOkeVABAkAUbDfU3Z702z20NtwAxc1IkrtQ1lKuqSpj9/LuR1/6KRkYQsUWnUiOO9hu5YDWIcflFrnCenF8j8OnvGghltxT
  # mall_book_public_key mallbook测试环境公钥 不需要替换
  mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0L2DaHOO8ekhktB6RoHxIcki/0v7OUeOn9tX9VBE+jv6PRjqlZRWL3Qezxz5ADtHEyLv+RFFaceXSep6rWyoQ6DRlvLv5CySUAxAM42LLVe4DI3l/0ccEAIuU5NCpwAAj1zkm2X01DwUCZwymLjlqbDlBvQhpq+1fddtTtA/QLQIDAQAB
  # mall_book_public_key mallbook生产环境公钥  不需要替换
  # mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq6OLZKgUHH5wOk9xSBgN7yC17r3PQwMlY9/IorqrOlaIqrU0eAVZ5+dWrJD/3bdu7Ctq8n8trTm/IUYs7wtMg5SKwyX4/N+KQc2N7LL4yCq4vNl41q9sYgrtA0QnZoucIZcq1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB
  mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq6OLZKgUHH5wOk9xSBgN7yC17r3PQwMlY9/IorqrOlaIqrU0eAVZ5+dWrJD/3bdu7Ctq8n8trTm/IUYs7wtMg5SKwyX4/N+KQc2N7LL4yCq4vNl41q9sYgrtA0QnZoucIZcq1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB
driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
@@ -1,19 +1,31 @@
//package com.supersavedriving.driver;
//
//import com.supersavedriving.driver.modular.system.model.WeatherCity;
//import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService;
//import com.supersavedriving.driver.modular.system.service.IOrderService;
//import com.supersavedriving.driver.modular.system.service.IWeatherCityService;
//import com.supersavedriving.driver.modular.system.util.ResultUtil;
//import com.supersavedriving.driver.modular.system.util.juhe.WeatherCityInfo;
//import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil;
//import com.supersavedriving.driver.modular.system.warpper.PerformanceSummaryWarpper;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//        import com.alibaba.fastjson.JSON;
//        import com.alibaba.fastjson.JSONObject;
//        import com.baomidou.mybatisplus.mapper.EntityWrapper;
//        import com.supersavedriving.driver.core.util.ToolUtil;
//        import com.supersavedriving.driver.modular.system.model.*;
//        import com.supersavedriving.driver.modular.system.service.*;
//        import com.supersavedriving.driver.modular.system.service.impl.CashWithdrawalServiceImpl;
//        import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl;
//        import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
//        import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
//        import com.supersavedriving.driver.modular.system.util.RedisUtil;
//        import com.supersavedriving.driver.modular.system.util.ResultUtil;
//        import com.supersavedriving.driver.modular.system.util.UUIDUtil;
//        import com.supersavedriving.driver.modular.system.util.juhe.WeatherCityInfo;
//        import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil;
//        import com.supersavedriving.driver.modular.system.warpper.OrderPriceWarpper;
//        import com.supersavedriving.driver.modular.system.warpper.PerformanceSummaryWarpper;
//        import org.junit.Test;
//        import org.junit.runner.RunWith;
//        import org.springframework.beans.BeanUtils;
//        import org.springframework.beans.factory.annotation.Autowired;
//        import org.springframework.boot.test.context.SpringBootTest;
//        import org.springframework.test.context.junit4.SpringRunner;
//
//        import java.text.SimpleDateFormat;
//        import java.util.*;
//
//
//@RunWith(SpringRunner.class)
@@ -23,9 +35,100 @@
//    @Autowired
//    private IOrderService orderService;
//
//    @Autowired
//    private IDriverService driverService;
//
//    @Autowired
//    private IDriverBankService driverBankService;
//
//    @Autowired
//    private IAppUserService appUserService;
//
//    @Autowired
//    private ISystemConfigService systemConfigService;
//
//    @Autowired
//    private IAccountChangeDetailService accountChangeDetailService;
//
//    @Autowired
//    private IRevenueService revenueService;
//
//    @Autowired
//    private IRechargeRecordService rechargeRecordService;
//
//    @Autowired
//    private IAgentService agentService;
//
//    @Autowired
//    private IDivisionRecordService divisionRecordService;
//
//    @Autowired
//    private ICashWithdrawalService cashWithdrawalService;
//
//    @Autowired
//    private RedisUtil redisUtil;
//
//
//
//
//    @Test
//    public void test() throws Exception {
//        PerformanceSummaryWarpper performanceSummaryWarpper = orderService.queryPerformanceSummary(1, 1, "2023年", 3);
////        Withdraw withdraw = new Withdraw();
////        withdraw.setUserId("79796121680");
////        withdraw.setAmount(String.valueOf(Double.valueOf(54.48 * 100).intValue()));
////        withdraw.setOrderName("账户余额提现");
////        withdraw.setRemark("账户余额提现");
////        withdraw.setNotifyUrl("https://chaoshengdaijia.com:443/driver/base/driver/withdrawCashCallback");
////        withdraw.setParameter1("1");
////        TrhRequest<Withdraw> request1 = new TrhRequest();
////        InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
////        if("0000".equals(execute.getCode())){
////            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
////            String merOrderId1 = jsonObject1.getString("merOrderId");
////            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
////            if(1 == status){
////            }
////            if(2 == status){
////                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
////            }
////        }else{
////            System.err.println("结算接口异常【提现】:" + execute.getMsg());
////        }
//
//
//
////        QueryUser queryUser = new QueryUser();
////        /**
////         * 业务系统会员ID(必填) 字段长度最长:32位
////         */
////        queryUser.setMerUserId("driver_13");
////        TrhRequest<QueryUser> request = new TrhRequest();
////        InterfaceResponse execute = request.execute(queryUser, QueryUser.SERVICE_CODE);
////        if("0000".equals(execute.getCode())){
////            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
////            String merOrderId1 = jsonObject1.getString("merOrderId");
////            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
////            if(1 == status){
////            }
////            if(2 == status){
////                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
////            }
////        }else{
////            System.err.println("结算接口异常【提现】:" + execute.getMsg());
////        }
//
//
//        for (int i = 0; i < 2; i++) {
//            String value = redisUtil.getValue("repeat_" + 10);
//            if(ToolUtil.isEmpty(value)){
//                redisUtil.setStrValue("repeat_" + 10, System.currentTimeMillis() + "", 600);//10分钟
//            }else{
//                Long s = System.currentTimeMillis() - Long.valueOf(value);
//                if(s.compareTo(60000L) < 0){//1分钟
//                    System.err.println("数据处理中");
//                }
//            }
//        }
//    }
//
//}
driver/guns-core/guns-core.iml
New file
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
    <facet type="web" name="Web">
      <configuration>
        <webroots />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-support:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generate:2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.10" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-web:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: com.google.zxing:core:3.2.1" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.ehcache:ehcache:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: net.sf.ehcache:ehcache-core:2.6.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
  </component>
</module>
driver/guns-generator/guns-generator.iml
New file
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module" module-name="guns-core" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.10" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
    <orderEntry type="library" name="Maven: com.ibeetl:beetl:2.8.5" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.2" level="project" />
    <orderEntry type="library" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-annotations:4.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generate:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-support:2.3" level="project" />
  </component>
</module>
driver/guns-parent.iml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
management/.idea/.name
New file
@@ -0,0 +1 @@
guns-parent
management/.idea/artifacts/guns_admin_war.xml
New file
@@ -0,0 +1,8 @@
<component name="ArtifactManager">
  <artifact type="war" name="guns-admin:war">
    <output-path>$PROJECT_DIR$/guns-admin/target</output-path>
    <root id="archive" name="guns-admin-1.0.0.war">
      <element id="artifact" artifact-name="guns-admin:war exploded" />
    </root>
  </artifact>
</component>
management/.idea/artifacts/guns_admin_war_exploded.xml
New file
@@ -0,0 +1,237 @@
<component name="ArtifactManager">
  <artifact type="exploded-war" name="guns-admin:war exploded">
    <output-path>$PROJECT_DIR$/guns-admin/target/guns-admin-1.0.0</output-path>
    <root id="root">
      <element id="directory" name="WEB-INF">
        <element id="directory" name="classes">
          <element id="module-output" name="guns-admin" />
        </element>
        <element id="directory" name="lib">
          <element id="archive" name="guns-core-1.0.0.jar">
            <element id="module-output" name="guns-core" />
          </element>
          <element id="library" level="project" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus:2.3" />
          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-support:2.3" />
          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-core:2.3" />
          <element id="library" level="project" name="Maven: com.github.jsqlparser:jsqlparser:1.1" />
          <element id="library" level="project" name="Maven: org.mybatis:mybatis-spring:1.3.2" />
          <element id="library" level="project" name="Maven: org.mybatis:mybatis:3.4.6" />
          <element id="library" level="project" name="Maven: org.apache.velocity:velocity:1.7" />
          <element id="library" level="project" name="Maven: commons-collections:commons-collections:3.2.1" />
          <element id="library" level="project" name="Maven: commons-lang:commons-lang:2.4" />
          <element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.11" />
          <element id="library" level="project" name="Maven: com.google.protobuf:protobuf-java:2.6.0" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: com.zaxxer:HikariCP:2.7.9" />
          <element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: com.alibaba:druid:1.1.10" />
          <element id="library" level="project" name="Maven: com.alibaba:fastjson:1.2.47" />
          <element id="library" level="project" name="Maven: org.apache.commons:commons-lang3:3.7" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-examples:3.9" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-excelant:3.9" />
          <element id="library" level="project" name="Maven: org.apache.ant:ant:1.8.2" />
          <element id="library" level="project" name="Maven: org.apache.ant:ant-launcher:1.8.2" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml-schemas:3.9" />
          <element id="library" level="project" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" />
          <element id="library" level="project" name="Maven: stax:stax-api:1.0.1" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-scratchpad:3.9" />
          <element id="library" level="project" name="Maven: com.huaweicloud:esdk-obs-java:3.19.5" />
          <element id="library" level="project" name="Maven: com.jamesmurty.utils:java-xmlbuilder:1.1" />
          <element id="library" level="project" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" />
          <element id="library" level="project" name="Maven: com.squareup.okio:okio:1.14.0" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5" />
          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-core:2.10.0" />
          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" />
          <element id="archive" name="guns-generator-1.0.0.jar">
            <element id="module-output" name="guns-generator" />
          </element>
          <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-generate:2.3" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: ch.qos.logback:logback-classic:1.2.3" />
          <element id="library" level="project" name="Maven: ch.qos.logback:logback-core:1.2.3" />
          <element id="library" level="project" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" />
          <element id="library" level="project" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" />
          <element id="library" level="project" name="Maven: javax.annotation:javax.annotation-api:1.3.2" />
          <element id="library" level="project" name="Maven: org.yaml:snakeyaml:1.19" />
          <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.aspectj:aspectjweaver:1.8.13" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" />
          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" />
          <element id="library" level="project" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" />
          <element id="library" level="project" name="Maven: javax.validation:validation-api:2.0.1.Final" />
          <element id="library" level="project" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" />
          <element id="library" level="project" name="Maven: org.springframework:spring-web:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" />
          <element id="library" level="project" name="Maven: junit:junit:4.12" />
          <element id="library" level="project" name="Maven: net.bytebuddy:byte-buddy:1.7.11" />
          <element id="library" level="project" name="Maven: org.hamcrest:hamcrest-core:1.3" />
          <element id="library" level="project" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: redis.clients:jedis:2.9.0" />
          <element id="library" level="project" name="Maven: org.apache.commons:commons-pool2:2.5.0" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi:5.0.0" />
          <element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.25" />
          <element id="library" level="project" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" />
          <element id="library" level="project" name="Maven: commons-codec:commons-codec:1.11" />
          <element id="library" level="project" name="Maven: org.apache.commons:commons-collections4:4.4" />
          <element id="library" level="project" name="Maven: org.apache.commons:commons-math3:3.6.1" />
          <element id="library" level="project" name="Maven: com.zaxxer:SparseBitSet:1.2" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml:5.0.0" />
          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml-lite:5.0.0" />
          <element id="library" level="project" name="Maven: org.apache.commons:commons-compress:1.20" />
          <element id="library" level="project" name="Maven: com.github.virtuald:curvesapi:1.06" />
          <element id="library" level="project" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" />
          <element id="library" level="project" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" />
          <element id="library" level="project" name="Maven: org.apache.santuario:xmlsec:2.2.1" />
          <element id="library" level="project" name="Maven: com.fasterxml.woodstox:woodstox-core:5.2.1" />
          <element id="library" level="project" name="Maven: org.codehaus.woodstox:stax2-api:4.2" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-all:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-anim:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.13" />
          <element id="library" level="project" name="Maven: xml-apis:xml-apis-ext:1.3.04" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.4" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-bridge:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-codec:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-constants:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-css:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-dom:1.13" />
          <element id="library" level="project" name="Maven: xalan:xalan:2.7.2" />
          <element id="library" level="project" name="Maven: xalan:serializer:2.7.2" />
          <element id="library" level="project" name="Maven: xml-apis:xml-apis:1.4.01" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-ext:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-extension:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-gui-util:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-gvt:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-i18n:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-parser:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-rasterizer-ext:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-rasterizer:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-script:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-slideshow:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-squiggle-ext:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-squiggle:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svgbrowser:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svggen:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svgpp:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-svgrasterizer:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-swing:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-util:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-ttf2svg:1.13" />
          <element id="library" level="project" name="Maven: org.apache.xmlgraphics:batik-xml:1.13" />
          <element id="library" level="project" name="Maven: de.rototor.pdfbox:graphics2d:0.30" />
          <element id="library" level="project" name="Maven: org.apache.pdfbox:pdfbox:2.0.22" />
          <element id="library" level="project" name="Maven: org.apache.pdfbox:fontbox:2.0.22" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-core:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-lang:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-cache:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" />
          <element id="library" level="project" name="Maven: commons-beanutils:commons-beanutils:1.9.4" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-event:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-spring:1.8.0" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-web:1.8.0" />
          <element id="library" level="project" name="Maven: org.owasp.encoder:encoder:1.2.2" />
          <element id="library" level="project" name="Maven: org.apache.shiro:shiro-ehcache:1.8.0" />
          <element id="library" level="project" name="Maven: net.sf.ehcache:ehcache-core:2.6.11" />
          <element id="library" level="project" name="Maven: org.ehcache:ehcache:3.3.1" />
          <element id="library" level="project" name="Maven: cn.jpush.api:jpush-client:3.2.17" />
          <element id="library" level="project" name="Maven: io.netty:netty-all:4.1.23.Final" />
          <element id="library" level="project" name="Maven: cn.jpush.api:jiguang-common:1.1.1" />
          <element id="library" level="project" name="Maven: com.github.penggle:kaptcha:2.3.2" />
          <element id="library" level="project" name="Maven: javax.servlet:javax.servlet-api:3.1.0" />
          <element id="library" level="project" name="Maven: com.jhlabs:filters:2.0.235-1" />
          <element id="library" level="project" name="Maven: com.google.zxing:core:3.2.1" />
          <element id="library" level="project" name="Maven: com.ibeetl:beetl:2.8.5" />
          <element id="library" level="project" name="Maven: org.antlr:antlr4-runtime:4.2" />
          <element id="library" level="project" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" />
          <element id="library" level="project" name="Maven: org.antlr:antlr4-annotations:4.2" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger2:2.9.2" />
          <element id="library" level="project" name="Maven: io.swagger:swagger-annotations:1.5.20" />
          <element id="library" level="project" name="Maven: io.swagger:swagger-models:1.5.20" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-spi:2.9.2" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-core:2.9.2" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-schema:2.9.2" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-common:2.9.2" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-spring-web:2.9.2" />
          <element id="library" level="project" name="Maven: com.google.guava:guava:20.0" />
          <element id="library" level="project" name="Maven: com.fasterxml:classmate:1.3.4" />
          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" />
          <element id="library" level="project" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" />
          <element id="library" level="project" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" />
          <element id="library" level="project" name="Maven: io.jsonwebtoken:jjwt:0.9.0" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" />
          <element id="library" level="project" name="Maven: commons-io:commons-io:2.6" />
          <element id="library" level="project" name="Maven: com.aliyun.oss:aliyun-sdk-oss:2.5.0" />
          <element id="library" level="project" name="Maven: org.jdom:jdom:1.1" />
          <element id="library" level="project" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" />
          <element id="library" level="project" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" />
          <element id="library" level="project" name="Maven: com.google.code.gson:gson:2.8.5" />
          <element id="library" level="project" name="Maven: org.quartz-scheduler:quartz:2.2.1" />
          <element id="library" level="project" name="Maven: c3p0:c3p0:0.9.1.1" />
          <element id="library" level="project" name="Maven: cn.rongcloud.im:server-sdk-java:3.0.4" />
          <element id="library" level="project" name="Maven: com.thoughtworks.xstream:xstream:1.4.10" />
          <element id="library" level="project" name="Maven: xmlpull:xmlpull:1.1.3.1" />
          <element id="library" level="project" name="Maven: xpp3:xpp3_min:1.1.4c" />
          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" />
          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpclient:4.5.6" />
          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" />
          <element id="library" level="project" name="Maven: commons-httpclient:commons-httpclient:3.1" />
          <element id="library" level="project" name="Maven: commons-logging:commons-logging:1.0.4" />
          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpmime:4.5.6" />
          <element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.data:spring-data-redis:2.0.6.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.data:spring-data-keyvalue:2.0.6.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework.data:spring-data-commons:2.0.6.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: org.springframework:spring-oxm:5.0.5.RELEASE" />
          <element id="library" level="project" name="Maven: io.lettuce:lettuce-core:5.0.4.RELEASE" />
          <element id="library" level="project" name="Maven: io.projectreactor:reactor-core:3.1.6.RELEASE" />
          <element id="library" level="project" name="Maven: org.reactivestreams:reactive-streams:1.0.2" />
          <element id="library" level="project" name="Maven: io.netty:netty-common:4.1.23.Final" />
          <element id="library" level="project" name="Maven: io.netty:netty-transport:4.1.23.Final" />
          <element id="library" level="project" name="Maven: io.netty:netty-buffer:4.1.23.Final" />
          <element id="library" level="project" name="Maven: io.netty:netty-resolver:4.1.23.Final" />
          <element id="library" level="project" name="Maven: io.netty:netty-handler:4.1.23.Final" />
          <element id="library" level="project" name="Maven: io.netty:netty-codec:4.1.23.Final" />
          <element id="library" level="project" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1" />
          <element id="library" level="project" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.1" />
          <element id="library" level="project" name="Maven: com.tencent.kona:kona-crypto:1.0.3" />
          <element id="library" level="project" name="Maven: org.bouncycastle:bcprov-jdk18on:1.72" />
          <element id="library" level="project" name="Maven: com.tencent.kona:kona-pkix:1.0.3" />
          <element id="library" level="project" name="Maven: com.tencent.kona:kona-provider:1.0.3" />
          <element id="library" level="project" name="Maven: cn.hutool:hutool-all:5.7.7" />
        </element>
      </element>
      <element id="directory" name="META-INF">
        <element id="file-copy" path="$PROJECT_DIR$/guns-admin/target/guns-admin-1.0.0/META-INF/MANIFEST.MF" />
      </element>
      <element id="javaee-facet-resources" facet="guns-admin/web/Web" />
    </root>
  </artifact>
</component>
management/.idea/compiler.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <annotationProcessing>
      <profile default="true" name="Default" enabled="true" />
      <profile name="Maven default annotation processors profile" enabled="true">
        <sourceOutputDir name="target/generated-sources/annotations" />
        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
        <outputRelativeToContentRoot value="true" />
        <module name="guns-admin" />
        <module name="guns-core" />
        <module name="guns-generator" />
      </profile>
    </annotationProcessing>
    <bytecodeTargetLevel>
      <module name="guns-admin" target="1.8" />
      <module name="guns-core" target="1.8" />
      <module name="guns-generator" target="1.8" />
      <module name="guns-parent" target="1.8" />
    </bytecodeTargetLevel>
  </component>
</project>
management/.idea/encodings.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding">
    <file url="file://$PROJECT_DIR$" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-admin" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-core" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/guns-generator" charset="UTF-8" />
  </component>
</project>
management/.idea/libraries/Maven__c3p0_c3p0_0_9_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: c3p0:c3p0:0.9.1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: ch.qos.logback:logback-classic:1.2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: ch.qos.logback:logback-core:1.2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__cn_hutool_hutool_all_5_7_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: cn.hutool:hutool-all:5.7.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/hutool/hutool-all/5.7.7/hutool-all-5.7.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__cn_jpush_api_jiguang_common_1_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: cn.jpush.api:jiguang-common:1.1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jiguang-common/1.1.1/jiguang-common-1.1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jiguang-common/1.1.1/jiguang-common-1.1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jiguang-common/1.1.1/jiguang-common-1.1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__cn_jpush_api_jpush_client_3_2_17.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: cn.jpush.api:jpush-client:3.2.17">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jpush-client/3.2.17/jpush-client-3.2.17.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jpush-client/3.2.17/jpush-client-3.2.17-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/jpush/api/jpush-client/3.2.17/jpush-client-3.2.17-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__cn_rongcloud_im_server_sdk_java_3_0_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: cn.rongcloud.im:server-sdk-java:3.0.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/rongcloud/im/server-sdk-java/3.0.4/server-sdk-java-3.0.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/cn/rongcloud/im/server-sdk-java/3.0.4/server-sdk-java-3.0.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/cn/rongcloud/im/server-sdk-java/3.0.4/server-sdk-java-3.0.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_alibaba_druid_1_1_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.alibaba:druid:1.1.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.10/druid-1.1.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_alibaba_fastjson_1_2_47.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.alibaba:fastjson:1.2.47">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.47/fastjson-1.2.47-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_2_5_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.aliyun.oss:aliyun-sdk-oss:2.5.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/oss/aliyun-sdk-oss/2.5.0/aliyun-sdk-oss-2.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/oss/aliyun-sdk-oss/2.5.0/aliyun-sdk-oss-2.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/aliyun/oss/aliyun-sdk-oss/2.5.0/aliyun-sdk-oss-2.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/2.3/mybatis-plus-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-core:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/2.3/mybatis-plus-core-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_generate_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-generate:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-generate/2.3/mybatis-plus-generate-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_baomidou_mybatis_plus_support_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatis-plus-support:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-support/2.3/mybatis-plus-support-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_baomidou_mybatisplus_spring_boot_starter_1_0_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatisplus-spring-boot-starter/1.0.5/mybatisplus-spring-boot-starter-1.0.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml:classmate:1.3.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.3.4/classmate-1.3.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.5/jackson-datatype-jdk8-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.9.5/jackson-datatype-jsr310-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.9.5/jackson-module-parameter-names-2.9.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.fasterxml.woodstox:woodstox-core:5.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/woodstox/woodstox-core/5.2.1/woodstox-core-5.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/woodstox/woodstox-core/5.2.1/woodstox-core-5.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/woodstox/woodstox-core/5.2.1/woodstox-core-5.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.jsqlparser:jsqlparser:1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/1.1/jsqlparser-1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.penggle:kaptcha:2.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/penggle/kaptcha/2.3.2/kaptcha-2.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_06.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.virtuald:curvesapi:1.06">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.06/curvesapi-1.06.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.06/curvesapi-1.06-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.06/curvesapi-1.06-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_core_0_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.1/wechatpay-java-core-0.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.1/wechatpay-java-core-0.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-core/0.2.1/wechatpay-java-core-0.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_github_wechatpay_apiv3_wechatpay_java_shangmi_0_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/github/wechatpay-apiv3/wechatpay-java-shangmi/0.2.1/wechatpay-java-shangmi-0.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_google_code_gson_gson_2_8_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.code.gson:gson:2.8.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_google_guava_guava_20_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.guava:guava:20.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_6_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.protobuf:protobuf-java:2.6.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_google_zxing_core_3_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.google.zxing:core:3.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/core/3.2.1/core-3.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_3_19_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.huaweicloud:esdk-obs-java:3.19.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java/3.19.5/esdk-obs-java-3.19.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java/3.19.5/esdk-obs-java-3.19.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java/3.19.5/esdk-obs-java-3.19.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_ibeetl_beetl_2_8_5.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.ibeetl:beetl:2.8.5">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/ibeetl/beetl/2.8.5/beetl-2.8.5-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_jamesmurty_utils_java_xmlbuilder_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.jamesmurty.utils:java-xmlbuilder:1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jamesmurty/utils/java-xmlbuilder/1.1/java-xmlbuilder-1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/jamesmurty/utils/java-xmlbuilder/1.1/java-xmlbuilder-1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jamesmurty/utils/java-xmlbuilder/1.1/java-xmlbuilder-1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.jayway.jsonpath:json-path:2.4.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.jhlabs:filters:2.0.235-1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_8_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.squareup.okhttp3:okhttp:3.8.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.8.1/okhttp-3.8.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_squareup_okio_okio_1_14_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.squareup.okio:okio:1.14.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.14.0/okio-1.14.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.14.0/okio-1.14.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.14.0/okio-1.14.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_tencent_kona_kona_crypto_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-crypto:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-crypto/1.0.3/kona-crypto-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_tencent_kona_kona_pkix_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-pkix:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-pkix/1.0.3/kona-pkix-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_tencent_kona_kona_provider_1_0_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.tencent.kona:kona-provider:1.0.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/tencent/kona/kona-provider/1.0.3/kona-provider-1.0.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.thoughtworks.xstream:xstream:1.4.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_zaxxer_HikariCP_2_7_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.zaxxer:HikariCP:2.7.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/2.7.9/HikariCP-2.7.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__com_zaxxer_SparseBitSet_1_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.zaxxer:SparseBitSet:1.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-beanutils:commons-beanutils:1.9.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-codec:commons-codec:1.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_collections_commons_collections_3_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-collections:commons-collections:3.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-httpclient:commons-httpclient:3.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_io_commons_io_2_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-io:commons-io:2.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.6/commons-io-2.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.6/commons-io-2.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.6/commons-io-2.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_lang_commons_lang_2_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-lang:commons-lang:2.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.4/commons-lang-2.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__commons_logging_commons_logging_1_0_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: commons-logging:commons-logging:1.0.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__de_rototor_pdfbox_graphics2d_0_30.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: de.rototor.pdfbox:graphics2d:0.30">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/de/rototor/pdfbox/graphics2d/0.30/graphics2d-0.30.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/de/rototor/pdfbox/graphics2d/0.30/graphics2d-0.30-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/de/rototor/pdfbox/graphics2d/0.30/graphics2d-0.30-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: dom4j:dom4j:1.6.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.jsonwebtoken:jjwt:0.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/jsonwebtoken/jjwt/0.9.0/jjwt-0.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_lettuce_lettuce_core_5_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.lettuce:lettuce-core:5.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.4.RELEASE/lettuce-core-5.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.4.RELEASE/lettuce-core-5.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/lettuce/lettuce-core/5.0.4.RELEASE/lettuce-core-5.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_all_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-all:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-all/4.1.23.Final/netty-all-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-all/4.1.23.Final/netty-all-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-all/4.1.23.Final/netty-all-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_buffer_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-buffer:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.1.23.Final/netty-buffer-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_codec_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-codec/4.1.23.Final/netty-codec-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_common_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-common:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.1.23.Final/netty-common-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_handler_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-handler:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.23.Final/netty-handler-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.23.Final/netty-handler-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-handler/4.1.23.Final/netty-handler-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_resolver_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-resolver:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-resolver/4.1.23.Final/netty-resolver-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_netty_netty_transport_4_1_23_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport:4.1.23.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-transport/4.1.23.Final/netty-transport-4.1.23.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_projectreactor_reactor_core_3_1_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.projectreactor:reactor-core:3.1.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-core:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-schema:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-spi:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-spring-web:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger2:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger-common:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.springfox:springfox-swagger-ui:2.9.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.swagger:swagger-annotations:1.5.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__io_swagger_swagger_models_1_5_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.swagger:swagger-models:1.5.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.20/swagger-models-1.5.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.annotation:javax.annotation-api:1.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.servlet:javax.servlet-api:3.1.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: javax.validation:validation-api:2.0.1.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__junit_junit_4_12.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: junit:junit:4.12">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: mysql:mysql-connector-java:8.0.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_7_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.bytebuddy:byte-buddy:1.7.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.7.11/byte-buddy-1.7.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.7.11/byte-buddy-agent-1.7.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:accessors-smart:1.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:json-smart:2.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_sf_ehcache_ehcache_core_2_6_11.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.sf.ehcache:ehcache-core:2.6.11">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.11/ehcache-core-2.6.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.sf.ezmorph:ezmorph:1.0.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.sf.json-lib:json-lib:jdk15:2.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_abego_treelayout_org_abego_treelayout_core_1_0_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/abego/treelayout/org.abego.treelayout.core/1.0.1/org.abego.treelayout.core-1.0.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_antlr_antlr4_annotations_4_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:antlr4-annotations:4.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-annotations/4.2/antlr4-annotations-4.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.antlr:antlr4-runtime:4.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr4-runtime/4.2/antlr4-runtime-4.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_ant_ant_1_8_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.ant:ant:1.8.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant/1.8.2/ant-1.8.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant/1.8.2/ant-1.8.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant/1.8.2/ant-1.8.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_8_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.ant:ant-launcher:1.8.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-collections4:4.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-compress:1.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.20/commons-compress-1.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.20/commons-compress-1.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-compress/1.20/commons-compress-1.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-lang3:3.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_commons_commons_math3_3_6_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-math3:3.6.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_5_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.commons:commons-pool2:2.5.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.5.0/commons-pool2-2.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.httpcomponents:httpclient:4.5.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_10.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.httpcomponents:httpcore:4.4.10">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.httpcomponents:httpmime:4.5.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-api:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-core:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-core/2.10.0/log4j-core-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_pdfbox_fontbox_2_0_22.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.pdfbox:fontbox:2.0.22">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/fontbox/2.0.22/fontbox-2.0.22.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/fontbox/2.0.22/fontbox-2.0.22-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/fontbox/2.0.22/fontbox-2.0.22-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_pdfbox_pdfbox_2_0_22.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.pdfbox:pdfbox:2.0.22">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/pdfbox/2.0.22/pdfbox-2.0.22.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/pdfbox/2.0.22/pdfbox-2.0.22-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/pdfbox/2.0.22/pdfbox-2.0.22-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.9/poi-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.9/poi-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.9/poi-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_5_0_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi:5.0.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.0.0/poi-5.0.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.0.0/poi-5.0.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/5.0.0/poi-5.0.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_examples_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-examples:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-examples/3.9/poi-examples-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-examples/3.9/poi-examples-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-examples/3.9/poi-examples-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_excelant_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-excelant:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-excelant/3.9/poi-excelant-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-excelant/3.9/poi-excelant-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-excelant/3.9/poi-excelant-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-ooxml:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.9/poi-ooxml-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.9/poi-ooxml-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.9/poi-ooxml-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_5_0_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-ooxml:5.0.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.0.0/poi-ooxml-5.0.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.0.0/poi-ooxml-5.0.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/5.0.0/poi-ooxml-5.0.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_lite_5_0_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-ooxml-lite:5.0.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.0.0/poi-ooxml-lite-5.0.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.0.0/poi-ooxml-lite-5.0.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-lite/5.0.0/poi-ooxml-lite-5.0.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-ooxml-schemas:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-schemas/3.9/poi-ooxml-schemas-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-schemas/3.9/poi-ooxml-schemas-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml-schemas/3.9/poi-ooxml-schemas-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_poi_poi_scratchpad_3_9.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.poi:poi-scratchpad:3.9">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.9/poi-scratchpad-3.9.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.9/poi-scratchpad-3.9-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.9/poi-scratchpad-3.9-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_santuario_xmlsec_2_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.santuario:xmlsec:2.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/santuario/xmlsec/2.2.1/xmlsec-2.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/santuario/xmlsec/2.2.1/xmlsec-2.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/santuario/xmlsec/2.2.1/xmlsec-2.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_cache_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-cache:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-cache/1.8.0/shiro-cache-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_config_core_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-config-core:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-core/1.8.0/shiro-config-core-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_config_ogdl_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-config-ogdl/1.8.0/shiro-config-ogdl-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_core_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-core:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.8.0/shiro-core-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_cipher_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-cipher/1.8.0/shiro-crypto-cipher-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_core_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-core/1.8.0/shiro-crypto-core-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_crypto_hash_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-crypto-hash/1.8.0/shiro-crypto-hash-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_ehcache_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-ehcache:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.8.0/shiro-ehcache-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.8.0/shiro-ehcache-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-ehcache/1.8.0/shiro-ehcache-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_event_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-event:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-event/1.8.0/shiro-event-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_lang_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-lang:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-lang/1.8.0/shiro-lang-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_spring_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-spring:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-spring/1.8.0/shiro-spring-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_shiro_shiro_web_1_8_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.shiro:shiro-web:1.8.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-web/1.8.0/shiro-web-1.8.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/8.5.32/tomcat-embed-core-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-el/8.5.32/tomcat-embed-el-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_32.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.32/tomcat-embed-websocket-8.5.32-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_velocity_velocity_1_7.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.velocity:velocity:1.7">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/velocity/velocity/1.7/velocity-1.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_3_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_all_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-all:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-all/1.13/batik-all-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-all/1.13/batik-all-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-all/1.13/batik-all-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_anim_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-anim:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.13/batik-anim-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.13/batik-anim-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-anim/1.13/batik-anim-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_awt_util_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-awt-util:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.13/batik-awt-util-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.13/batik-awt-util-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-awt-util/1.13/batik-awt-util-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_bridge_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-bridge:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.13/batik-bridge-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.13/batik-bridge-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-bridge/1.13/batik-bridge-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_codec_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-codec:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.13/batik-codec-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.13/batik-codec-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-codec/1.13/batik-codec-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_constants_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-constants:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.13/batik-constants-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.13/batik-constants-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-constants/1.13/batik-constants-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_css_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-css:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.13/batik-css-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.13/batik-css-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-css/1.13/batik-css-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_dom_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-dom:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.13/batik-dom-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.13/batik-dom-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-dom/1.13/batik-dom-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ext_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-ext:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.13/batik-ext-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.13/batik-ext-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ext/1.13/batik-ext-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_extension_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-extension:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-extension/1.13/batik-extension-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-extension/1.13/batik-extension-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-extension/1.13/batik-extension-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gui_util_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-gui-util:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gui-util/1.13/batik-gui-util-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gui-util/1.13/batik-gui-util-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gui-util/1.13/batik-gui-util-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_gvt_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-gvt:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.13/batik-gvt-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.13/batik-gvt-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-gvt/1.13/batik-gvt-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_i18n_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-i18n:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.13/batik-i18n-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.13/batik-i18n-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-i18n/1.13/batik-i18n-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_parser_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-parser:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.13/batik-parser-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.13/batik-parser-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-parser/1.13/batik-parser-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-rasterizer:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer/1.13/batik-rasterizer-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer/1.13/batik-rasterizer-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer/1.13/batik-rasterizer-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_rasterizer_ext_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-rasterizer-ext:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer-ext/1.13/batik-rasterizer-ext-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer-ext/1.13/batik-rasterizer-ext-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-rasterizer-ext/1.13/batik-rasterizer-ext-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_script_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-script:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.13/batik-script-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.13/batik-script-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-script/1.13/batik-script-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_shared_resources_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.13/batik-shared-resources-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.13/batik-shared-resources-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-shared-resources/1.13/batik-shared-resources-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_slideshow_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-slideshow:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-slideshow/1.13/batik-slideshow-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-slideshow/1.13/batik-slideshow-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-slideshow/1.13/batik-slideshow-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-squiggle:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle/1.13/batik-squiggle-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle/1.13/batik-squiggle-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle/1.13/batik-squiggle-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_squiggle_ext_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-squiggle-ext:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle-ext/1.13/batik-squiggle-ext-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle-ext/1.13/batik-squiggle-ext-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-squiggle-ext/1.13/batik-squiggle-ext-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svg_dom_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.13/batik-svg-dom-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.13/batik-svg-dom-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svg-dom/1.13/batik-svg-dom-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgbrowser_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-svgbrowser:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgbrowser/1.13/batik-svgbrowser-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgbrowser/1.13/batik-svgbrowser-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgbrowser/1.13/batik-svgbrowser-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svggen_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-svggen:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.13/batik-svggen-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.13/batik-svggen-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svggen/1.13/batik-svggen-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgpp_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-svgpp:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgpp/1.13/batik-svgpp-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgpp/1.13/batik-svgpp-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgpp/1.13/batik-svgpp-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_svgrasterizer_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-svgrasterizer:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgrasterizer/1.13/batik-svgrasterizer-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgrasterizer/1.13/batik-svgrasterizer-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-svgrasterizer/1.13/batik-svgrasterizer-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_swing_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-swing:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-swing/1.13/batik-swing-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-swing/1.13/batik-swing-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-swing/1.13/batik-swing-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_transcoder_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-transcoder:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.13/batik-transcoder-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.13/batik-transcoder-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-transcoder/1.13/batik-transcoder-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_ttf2svg_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-ttf2svg:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ttf2svg/1.13/batik-ttf2svg-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ttf2svg/1.13/batik-ttf2svg-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-ttf2svg/1.13/batik-ttf2svg-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_util_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-util:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.13/batik-util-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.13/batik-util-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-util/1.13/batik-util-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_batik_xml_1_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:batik-xml:1.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.13/batik-xml-1.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.13/batik-xml-1.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/batik-xml/1.13/batik-xml-1.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_apache_xmlgraphics_xmlgraphics_commons_2_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.4/xmlgraphics-commons-2.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.4/xmlgraphics-commons-2.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.4/xmlgraphics-commons-2.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.aspectj:aspectjweaver:1.8.13">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.8.13/aspectjweaver-1.8.13-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_assertj_assertj_core_3_9_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.assertj:assertj-core:3.9.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.9.1/assertj-core-3.9.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_68.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.68/bcpkix-jdk15on-1.68.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.68/bcpkix-jdk15on-1.68-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.68/bcpkix-jdk15on-1.68-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_68.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcprov-jdk15on:1.68">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk18on_1_72.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.bouncycastle:bcprov-jdk18on:1.72">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_4_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.codehaus.woodstox:stax2-api:4.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/4.2/stax2-api-4.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/4.2/stax2-api-4.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/4.2/stax2-api-4.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_ehcache_ehcache_3_3_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ehcache:ehcache:3.3.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ehcache/ehcache/3.3.1/ehcache-3.3.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hamcrest:hamcrest-core:1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hamcrest:hamcrest-library:1.3">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_11_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/hibernate/validator/hibernate-validator/6.0.11.Final/hibernate-validator-6.0.11.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_jdom_jdom_1_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.jdom:jdom:1.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom/1.1/jdom-1.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom/1.1/jdom-1.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom/1.1/jdom-1.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mapstruct:mapstruct:1.2.0.Final">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.2.0.Final/mapstruct-1.2.0.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_mockito_mockito_core_2_15_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mockito:mockito-core:2.15.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/2.15.0/mockito-core-2.15.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mybatis:mybatis:3.4.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.4.6/mybatis-3.4.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.mybatis:mybatis-spring:1.3.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.objenesis:objenesis:2.6">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/2.6/objenesis-2.6-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ow2.asm:asm:5.0.4">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_owasp_encoder_encoder_1_2_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.owasp.encoder:encoder:1.2.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/owasp/encoder/encoder/1.2.2/encoder-1.2.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.projectlombok:lombok:1.18.20">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_2_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.quartz-scheduler:quartz:2.2.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.reactivestreams:reactive-streams:1.0.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.skyscreamer:jsonassert:1.5.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.slf4j:jcl-over-slf4j:1.7.25">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.slf4j:jul-to-slf4j:1.7.25">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.slf4j:slf4j-api:1.7.25">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.0.4.RELEASE/spring-boot-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.0.4.RELEASE/spring-boot-autoconfigure-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/2.0.4.RELEASE/spring-boot-configuration-processor-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-devtools/2.0.4.RELEASE/spring-boot-devtools-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.0.4.RELEASE/spring-boot-starter-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-aop/2.0.4.RELEASE/spring-boot-starter-aop-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-cache/2.0.4.RELEASE/spring-boot-starter-cache-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.4.RELEASE/spring-boot-starter-data-redis-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.4.RELEASE/spring-boot-starter-data-redis-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-redis/2.0.4.RELEASE/spring-boot-starter-data-redis-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.0.4.RELEASE/spring-boot-starter-jdbc-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.0.4.RELEASE/spring-boot-starter-json-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.0.4.RELEASE/spring-boot-starter-logging-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.0.4.RELEASE/spring-boot-starter-test-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.0.4.RELEASE/spring-boot-starter-tomcat-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-validation/2.0.4.RELEASE/spring-boot-starter-validation-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.0.4.RELEASE/spring-boot-starter-web-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-test:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.0.4.RELEASE/spring-boot-test-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_4_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.4.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.0.4.RELEASE/spring-boot-test-autoconfigure-2.0.4.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_0_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.data:spring-data-commons:2.0.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.0.6.RELEASE/spring-data-commons-2.0.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_0_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.data:spring-data-keyvalue:2.0.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.6.RELEASE/spring-data-keyvalue-2.0.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.6.RELEASE/spring-data-keyvalue-2.0.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-keyvalue/2.0.6.RELEASE/spring-data-keyvalue-2.0.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_0_6_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.data:spring-data-redis:2.0.6.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.6.RELEASE/spring-data-redis-2.0.6.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.6.RELEASE/spring-data-redis-2.0.6.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-redis/2.0.6.RELEASE/spring-data-redis-2.0.6.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-core/1.2.0.RELEASE/spring-plugin-core-1.2.0.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/plugin/spring-plugin-metadata/1.2.0.RELEASE/spring-plugin-metadata-1.2.0.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_aop_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-aop:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.0.5.RELEASE/spring-aop-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_beans_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-beans:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.0.5.RELEASE/spring-beans-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_context_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-context:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.0.5.RELEASE/spring-context-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_context_support_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/5.0.5.RELEASE/spring-context-support-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_core_5_0_8_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-core:5.0.8.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.0.8.RELEASE/spring-core-5.0.8.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_expression_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-expression:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.0.5.RELEASE/spring-expression-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_jcl_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.0.5.RELEASE/spring-jcl-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_jdbc_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.0.5.RELEASE/spring-jdbc-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_oxm_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-oxm:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.5.RELEASE/spring-oxm-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.5.RELEASE/spring-oxm-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-oxm/5.0.5.RELEASE/spring-oxm-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_test_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-test:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.0.5.RELEASE/spring-test-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_tx_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-tx:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.0.5.RELEASE/spring-tx-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_web_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-web:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.0.5.RELEASE/spring-web-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_springframework_spring_webmvc_5_0_5_RELEASE.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.0.5.RELEASE/spring-webmvc-5.0.5.RELEASE-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_5_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.xmlunit:xmlunit-core:2.5.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.yaml:snakeyaml:1.19">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.19/snakeyaml-1.19-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__redis_clients_jedis_2_9_0.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: redis.clients:jedis:2.9.0">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/2.9.0/jedis-2.9.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__stax_stax_api_1_0_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: stax:stax-api:1.0.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xalan_serializer_2_7_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xalan:serializer:2.7.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xalan_xalan_2_7_2.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xalan:xalan:2.7.2">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xml-apis:xml-apis:1.4.01">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xml_apis_xml_apis_ext_1_3_04.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xml-apis:xml-apis-ext:1.3.04">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xmlpull:xmlpull:1.1.3.1">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml
New file
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: xpp3:xpp3_min:1.1.4c">
    <CLASSES>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$MAVEN_REPOSITORY$/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-sources.jar!/" />
    </SOURCES>
  </library>
</component>
management/.idea/misc.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="FrameworkDetectionExcludesConfiguration">
    <file type="web" url="file://$PROJECT_DIR$/guns-admin" />
  </component>
  <component name="JavaScriptSettings">
    <option name="languageLevel" value="ES6" />
  </component>
  <component name="MavenProjectsManager">
    <option name="originalFiles">
      <list>
        <option value="$PROJECT_DIR$/pom.xml" />
      </list>
    </option>
  </component>
  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/classes" />
  </component>
</project>
management/.idea/modules.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/guns-admin/guns-admin.iml" filepath="$PROJECT_DIR$/guns-admin/guns-admin.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-core/guns-core.iml" filepath="$PROJECT_DIR$/guns-core/guns-core.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-generator/guns-generator.iml" filepath="$PROJECT_DIR$/guns-generator/guns-generator.iml" />
      <module fileurl="file://$PROJECT_DIR$/guns-parent.iml" filepath="$PROJECT_DIR$/guns-parent.iml" />
    </modules>
  </component>
</project>
management/.idea/vcs.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
  </component>
</project>
management/guns-admin/guns-admin (1).iml
@@ -32,8 +32,6 @@
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.3.8" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.3.8" level="project" />
    <orderEntry type="module" module-name="guns-core (1)" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
@@ -259,5 +257,13 @@
    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.20" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-crypto:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.bouncycastle:bcprov-jdk18on:1.72" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-pkix:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-provider:1.0.3" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.7" level="project" />
  </component>
</module>
management/guns-admin/guns-admin.iml
New file
@@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
    <facet type="web" name="Web">
      <configuration>
        <descriptors>
          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
        </descriptors>
        <webroots>
          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
        </webroots>
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/webapp" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module" module-name="guns-core" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-support:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:2.3" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.10" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-examples:3.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-excelant:3.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.ant:ant:1.8.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.8.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-scratchpad:3.9" level="project" />
    <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java:3.19.5" level="project" />
    <orderEntry type="library" name="Maven: com.jamesmurty.utils:java-xmlbuilder:1.1" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.14.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
    <orderEntry type="module" module-name="guns-generator" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generate:2.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
    <orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" />
    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.7.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi:5.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.20" level="project" />
    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
    <orderEntry type="library" name="Maven: org.apache.santuario:xmlsec:2.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.woodstox:woodstox-core:5.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:stax2-api:4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-all:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.13" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-constants:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.13" level="project" />
    <orderEntry type="library" name="Maven: xalan:xalan:2.7.2" level="project" />
    <orderEntry type="library" name="Maven: xalan:serializer:2.7.2" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-extension:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gui-util:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-i18n:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-rasterizer-ext:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-rasterizer:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-slideshow:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-squiggle-ext:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-squiggle:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgbrowser:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgpp:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgrasterizer:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-swing:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ttf2svg:1.13" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.13" level="project" />
    <orderEntry type="library" name="Maven: de.rototor.pdfbox:graphics2d:0.30" level="project" />
    <orderEntry type="library" name="Maven: org.apache.pdfbox:pdfbox:2.0.22" level="project" />
    <orderEntry type="library" name="Maven: org.apache.pdfbox:fontbox:2.0.22" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-ehcache:1.8.0" level="project" />
    <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.11" level="project" />
    <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: cn.jpush.api:jpush-client:3.2.17" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: cn.jpush.api:jiguang-common:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.penggle:kaptcha:2.3.2" level="project" />
    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235-1" level="project" />
    <orderEntry type="library" name="Maven: com.google.zxing:core:3.2.1" level="project" />
    <orderEntry type="library" name="Maven: com.ibeetl:beetl:2.8.5" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.2" level="project" />
    <orderEntry type="library" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.antlr:antlr4-annotations:4.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" level="project" />
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
    <orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" />
    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
    <orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
    <orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
    <orderEntry type="library" name="Maven: cn.rongcloud.im:server-sdk-java:3.0.4" level="project" />
    <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.10" level="project" />
    <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
    <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
    <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.6" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.0.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.0.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.0.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.0.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.0.4.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.1.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.23.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.23.Final" level="project" />
    <orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.20" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-shangmi:0.2.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-crypto:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.bouncycastle:bcprov-jdk18on:1.72" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-pkix:1.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.tencent.kona:kona-provider:1.0.3" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.7" level="project" />
  </component>
</module>
management/guns-admin/pom.xml
@@ -15,23 +15,7 @@
    </parent>
    <packaging>war</packaging>
    <properties>
        <hutool.version>5.3.8</hutool.version>
    </properties>
    <dependencies>
        <!-- hutool工具类-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-core</artifactId>
            <version>${hutool.version}</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-crypto</artifactId>
            <version>${hutool.version}</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
@@ -221,7 +205,22 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--引入本地工行支付jar end-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-java-shangmi</artifactId>
            <version>0.2.1</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.7</version>
        </dependency>
    </dependencies>
management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java
@@ -161,6 +161,7 @@
         */
        Map<String, String> hashMap = new LinkedHashMap<>();
        hashMap.put("/static/**", "anon");
        hashMap.put("/base/**", "anon");
        hashMap.put("/gunsApi/**", "anon");
        hashMap.put("/login", "anon");
        hashMap.put("/global/sessionError", "anon");
management/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ApiController.java
@@ -1,22 +1,26 @@
package com.stylefeng.guns.modular.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.ErrorTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.JwtTokenUtil;
import com.stylefeng.guns.modular.system.dao.UserMapper;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.User;
import com.stylefeng.guns.modular.system.service.ITAgentService;
import com.stylefeng.guns.modular.system.util.MallBook.model.BindAccount;
import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceResponse;
import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
@@ -27,53 +31,83 @@
 * @Date 2018/7/20 23:39
 */
@RestController
@RequestMapping("/gunsApi")
@RequestMapping("")
public class ApiController extends BaseController {
    @Autowired
    private UserMapper userMapper;
    private ITAgentService tAgentService;
    /**
     * api登录接口,通过账号密码获取token
     */
    @RequestMapping("/auth")
    public Object auth(@RequestParam("username") String username,
                       @RequestParam("password") String password) {
        //封装请求账号密码为shiro可验证的token
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password.toCharArray());
        //获取数据库中的账号密码,准备比对
        User user = userMapper.getByAccount(username);
        String credentials = user.getPassword();
        String salt = user.getSalt();
        ByteSource credentialsSalt = new Md5Hash(salt);
        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
                new ShiroUser(), credentials, credentialsSalt, "");
    @ResponseBody
    @PostMapping("/base/driver/microenterpriseCallback")
    public void microenterpriseCallback(@RequestBody InterfaceResponse response){
        if("0000".equals(response.getCode())){
            JSONObject jsonObject = JSON.parseObject(response.getResult());
            String status = jsonObject.getString("status");
            String parameter1 = jsonObject.getString("parameter1");
            TAgent tAgent = tAgentService.selectById(parameter1);
            if("2".equals(status)){
                tAgent.setMerchantStatus(2);
                tAgentService.updateById(tAgent);
                System.err.println("注册代理商子商户失败");
            }
            if("0".equals(status)){
                tAgent.setMerchantStatus(0);
                tAgentService.updateById(tAgent);
                System.err.println("注册代理商子商户处理中");
            }
            if("1".equals(status)){
                String userId = jsonObject.getString("userId");
                tAgent.setMerchantNumber(userId);
                tAgent.setMerchantStatus(1);
                tAgentService.updateById(tAgent);
        //校验用户账号密码
        HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
        md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
        md5CredentialsMatcher.setHashIterations(ShiroKit.hashIterations);
        boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
                usernamePasswordToken, simpleAuthenticationInfo);
        if (passwordTrueFlag) {
            HashMap<String, Object> result = new HashMap<>();
            result.put("token", JwtTokenUtil.generateToken(String.valueOf(user.getId())));
            return result;
        } else {
            return new ErrorTip(500, "账号密码错误!");
                //开始绑定结算账户
                BindAccount bindAccount = new BindAccount();
                bindAccount.setUserId(tAgent.getMerchantNumber());
                bindAccount.setCertId(tAgent.getMerchantIDCode());
                bindAccount.setCardName(tAgent.getCardName());
                bindAccount.setCardNo(tAgent.getCardNo());
                bindAccount.setBankAcctType(tAgent.getBankAcctType().toString());
                bindAccount.setPhone(tAgent.getPhone());
                bindAccount.setBankCode(tAgent.getBankCode());
                /**
                 * 省份编码
                 */
                bindAccount.setProvCode("0035");
                /**
                 * 地区编码
                 */
                bindAccount.setAreaCode("3501");
                TrhRequest<BindAccount> request = new TrhRequest();
                InterfaceResponse execute = request.execute(bindAccount, BindAccount.SERVICE_CODE);
                if("0000".equals(execute.getCode())){
                    JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                    String status1 = jsonObject1.getString("status");
                    if("2".equals(status1)){
                        tAgent.setBankStatus(2);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户失败" );
                    }
                    if("1".equals(status1)){
                        tAgent.setBankStatus(1);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户成功");
                    }
                    if("0".equals(status1)){
                        tAgent.setBankStatus(0);
                        tAgentService.updateById(tAgent);
                        System.err.println("绑定结算账户处理中");
                    }
                }else{
                    System.err.println("绑定结算账户失败:" + execute.getMsg());
                }
            }
        }else{
            System.err.println("注册代理商子商户异常:" + response.getMsg());
        }
    }
    /**
     * 测试接口是否走鉴权
     */
    @RequestMapping(value = "/test", method = RequestMethod.POST)
    public Object test() {
        return SUCCESS_TIP;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -1,44 +1,56 @@
package com.stylefeng.guns.modular.system.controller.general;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.server.HttpServerResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.common.constant.state.ManagerStatus;
import com.stylefeng.guns.core.exception.GunsException;
import com.stylefeng.guns.core.exception.ServiceExceptionEnum;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.controller.resp.TAgentResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
import com.stylefeng.guns.modular.system.enums.PayStatusEnum;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.MallBook.model.*;
import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hdf.extractor.TC;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.io.*;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -51,7 +63,7 @@
 * @Date 2023-02-20 09:18:08
 */
@Controller
@RequestMapping("/tAgent")
@RequestMapping("")
public class TAgentController extends BaseController {
    private String PREFIX = "/system/tAgent/";
@@ -71,11 +83,23 @@
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private ISettlementRecordService settlementRecordService;
    @Autowired
    private IRechargeRecordService rechargeRecordService;
    @Autowired
    private ITSystemConfigService systemConfigService;
    @Value("${callbackPath}")
    private String callbackPath;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    @RequestMapping("/tAgent")
    public String index(Model model) {
        model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType());
        return PREFIX + "tAgent.html";
@@ -84,7 +108,7 @@
    /**
     * 跳转到添加
     */
    @RequestMapping("/tAgent_add")
    @RequestMapping("/tAgent/tAgent_add")
    public String tAgentAdd() {
        return PREFIX + "tAgent_add.html";
    }
@@ -92,7 +116,7 @@
    /**
     * 跳转到修改
     */
    @RequestMapping("/tAgent_update/{tAgentId}")
    @RequestMapping("/tAgent/tAgent_update/{tAgentId}")
    public String tAgentUpdate(@PathVariable Integer tAgentId, Model model) {
        TAgent tAgent = tAgentService.selectById(tAgentId);
        model.addAttribute("item",tAgent);
@@ -103,7 +127,7 @@
    /**
     * 跳转详情页面
     */
    @RequestMapping("/agentDetail")
    @RequestMapping("/tAgent/agentDetail")
    public String agentDetail(Integer agentId, Model model) {
        tAgentService.detail(agentId,model);
        return PREFIX + "tAgentDetail.html";
@@ -112,12 +136,61 @@
    /**
     * 跳转区域页面
     */
    @RequestMapping("/areaDetail")
    @RequestMapping("/tAgent/areaDetail")
    public String areaDetail(String area,String areaId,Model model) {
//        String[] split1 = areaId.split("/");
//        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
//        model.addAttribute("provinceList",tRegions);
////        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
////        // 查询市
////        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
////        model.addAttribute("cityList",tRegions1);
////
////        // 查询区
////        List<Integer> cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList());
////        List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", cityIds));
////        model.addAttribute("districtList",tRegions2);
//
//        if(StringUtils.hasLength(area) && StringUtils.hasLength(areaId)){
//            String[] split = area.split("/");
//            model.addAttribute("provinceName",split[0]);
//            model.addAttribute("cityName",split[1]);
//            if(split.length>2){
//                model.addAttribute("districtName",split[2]);
//            }else {
//                model.addAttribute("districtName","");
//            }
//
//            model.addAttribute("provinceId",split1[0]);
//            model.addAttribute("cityId",split1[1]);
//            if(split1.length>2) {
//                model.addAttribute("districtId", split1[2]);
//            }else {
//                model.addAttribute("districtId", "");
//            }
//
//            List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
//            model.addAttribute("cityList",tRegions1);
//
//            // 查询区
//            List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", split1[1]));
//            model.addAttribute("districtList",tRegions2);
//        }else {
//            model.addAttribute("cityList",new ArrayList<>());
//            model.addAttribute("districtList",new ArrayList<>());
//
//            model.addAttribute("provinceName","");
//            model.addAttribute("cityName","");
//            model.addAttribute("districtName","");
//
//            model.addAttribute("provinceId","");
//            model.addAttribute("cityId","");
//            model.addAttribute("districtId", "");
//        }
        String[] split1 = areaId.split("/");
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("province",tRegions);
        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        model.addAttribute("provinceList",tRegions);
//        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
        model.addAttribute("cityList",tRegions1);
@@ -141,7 +214,7 @@
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @RequestMapping(value = "/tAgent/list")
    @ResponseBody
    public Object list(String principal,String principalPhone,String createTime,Integer status) {
        EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status);
@@ -153,7 +226,7 @@
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @RequestMapping(value = "/tAgent/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tAgentService.selectList(null);
@@ -162,14 +235,19 @@
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @RequestMapping(value = "/tAgent/add")
    @ResponseBody
    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
    public Object add(TAgent tAgent) {
        String[] split1 = tAgent.getArea().split("/");
        int count = tAgentService.selectCount(new EntityWrapper<TAgent>().eq("provinceName", split1[0]).eq("cityName",split1[1]));
//        int count = tAgentService.selectCount(new EntityWrapper<TAgent>()
//                .eq("provinceName", split1[0])
//                .eq("cityName",split1[1])
//                .eq("districtName",sp));
        int count = tAgentService.selectCount(new EntityWrapper<TAgent>()
                .eq("merchantName", tAgent.getMerchantName()));
        if(count>0){
            return new SuccessTip(500,"该代理商已存在!");
        }
@@ -214,13 +292,250 @@
        user.setSex(1);
        userService.insert(user);
        new Thread(new Runnable() {
            @Override
            public void run() {
                registeredMerchant(tAgent);
            }
        }).start();
        return SUCCESS_TIP;
    }
    public void registeredMerchant(TAgent tAgent){
        if(tAgent.getUserType() == 0){
            Register registerVO = new Register();
            registerVO.setMerUserId("agent_" + tAgent.getId());
            registerVO.setPhone(tAgent.getPrincipalPhone());
            registerVO.setUserType("0");
            registerVO.setUserName(tAgent.getMerchantName());
            registerVO.setCertId(tAgent.getMerchantIDCode());
            registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback");
            TrhRequest<Register> request = new TrhRequest();
            InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE);
            if("0000".equals(execute.getCode())){
                JSONObject jsonObject = JSON.parseObject(execute.getResult());
                String status = jsonObject.getString("status");
                if("2".equals(status)){
                    tAgent.setMerchantStatus(2);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户失败");
                }
                if("0".equals(status)){
                    tAgent.setMerchantStatus(0);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户处理中");
                }
                if("1".equals(status)){
                    String userId = jsonObject.getString("userId");
                    tAgent.setMerchantNumber(userId);
                    tAgent.setMerchantStatus(1);
                    tAgentService.updateById(tAgent);
                    BindAccount bindAccount = new BindAccount();
                    bindAccount.setUserId(tAgent.getMerchantNumber());
                    bindAccount.setCertId(tAgent.getMerchantIDCode());
                    bindAccount.setCardName(tAgent.getCardName());
                    bindAccount.setCardNo(tAgent.getCardNo());
                    bindAccount.setBankAcctType(tAgent.getBankAcctType().toString());
                    bindAccount.setPhone(tAgent.getPhone());
                    TrhRequest<BindAccount> request1 = new TrhRequest();
                    InterfaceResponse execute1 = request1.execute(bindAccount, BindAccount.SERVICE_CODE);
                    if("0000".equals(execute1.getCode())){
                        JSONObject jsonObject1 = JSON.parseObject(execute1.getResult());
                        String status1 = jsonObject1.getString("status");
                        if("2".equals(status1)){
                            tAgent.setBankStatus(2);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户失败" );
                        }
                        if("1".equals(status1)){
                            tAgent.setBankStatus(1);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户成功");
                        }
                        if("0".equals(status1)){
                            tAgent.setBankStatus(0);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户处理中");
                        }
                    }else{
                        System.err.println("绑定结算账户失败:" + execute.getMsg());
                    }
                }
            }else{
                System.err.println("注册代理商子商户异常:" + execute.getMsg());
            }
        }else{
            Register registerVO = new Register();
            registerVO.setMerUserId("agent_" + tAgent.getId());
            registerVO.setPhone(tAgent.getPrincipalPhone());
            registerVO.setUserType(tAgent.getUserType().toString());
            registerVO.setUserName(tAgent.getMerchantName());
            registerVO.setCertId(tAgent.getMerchantIDCode());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            registerVO.setCertIdExpires(sdf.format(tAgent.getCertIdExpires()));
            registerVO.setBusinessScope(tAgent.getBusinessScope());
            registerVO.setSocialCreditCode(tAgent.getSocialCreditCode());
            registerVO.setSocialCreditCodeExpires(sdf.format(tAgent.getSocialCreditCodeExpires()));
            registerVO.setLegalPhone(tAgent.getLegalPhone());
            registerVO.setLegalPerson(tAgent.getLegalPerson());
            registerVO.setAddress(tAgent.getAddress());
            registerVO.setProvCode(tAgent.getProvCodeEnterprise());
            registerVO.setAreaCode(tAgent.getAreaCodeEnterprise());
            registerVO.setFileNo(tAgent.getFileNo());
            registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback");
            registerVO.setParameter1(tAgent.getId().toString());
            TrhRequest<Register> request = new TrhRequest();
            InterfaceResponse response = request.execute(registerVO, Register.SERVICE_CODE);
            if("0000".equals(response.getCode())){
                JSONObject jsonObject = JSON.parseObject(response.getResult());
                String status = jsonObject.getString("status");
                if("2".equals(status)){
                    tAgent.setMerchantStatus(2);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户失败");
                }
                if("0".equals(status)){
                    tAgent.setMerchantStatus(0);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户处理中");
                }
                if("1".equals(status)){
                    String userId = jsonObject.getString("userId");
                    tAgent.setMerchantNumber(userId);
                    tAgent.setMerchantStatus(1);
                    tAgentService.updateById(tAgent);
                    //开始绑定结算账户
                    BindAccount bindAccount = new BindAccount();
                    bindAccount.setUserId(tAgent.getMerchantNumber());
                    bindAccount.setCertId(tAgent.getMerchantIDCode());
                    bindAccount.setCardName(tAgent.getCardName());
                    bindAccount.setCardNo(tAgent.getCardNo());
                    bindAccount.setBankAcctType(tAgent.getBankAcctType().toString());
                    bindAccount.setPhone(tAgent.getPhone());
                    bindAccount.setBankCode(tAgent.getBankCode());
                    bindAccount.setProvCode(tAgent.getProvCodeBank());
                    bindAccount.setAreaCode(tAgent.getAreaCodeBank());
                    TrhRequest<BindAccount> request1 = new TrhRequest();
                    InterfaceResponse execute = request1.execute(bindAccount, BindAccount.SERVICE_CODE);
                    if("0000".equals(execute.getCode())){
                        JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                        String status1 = jsonObject1.getString("status");
                        if("2".equals(status1)){
                            tAgent.setBankStatus(2);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户失败" );
                        }
                        if("1".equals(status1)){
                            tAgent.setBankStatus(1);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户成功");
                        }
                        if("0".equals(status1)){
                            tAgent.setBankStatus(0);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户处理中");
                        }
                    }else{
                        System.err.println("绑定结算账户失败:" + execute.getMsg());
                    }
                }
            }else{
                System.err.println("注册代理商子商户异常:" + response.getMsg());
            }
        }
    }
    /**
     * 注册商户回调
     */
    @ResponseBody
    @PostMapping("/base/tAgent/microenterpriseCallback")
    public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            if("0000".equals(interfaceResponse.getCode())) {
                JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
                String status = jsonObject.getString("status");
                String parameter1 = jsonObject.getString("parameter1");
                TAgent tAgent = tAgentService.selectById(parameter1);
                if ("2".equals(status)) {
                    tAgent.setMerchantStatus(2);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户失败");
                }
                if ("0".equals(status)) {
                    tAgent.setMerchantStatus(0);
                    tAgentService.updateById(tAgent);
                    System.err.println("注册代理商子商户处理中");
                }
                if ("1".equals(status)) {
                    String userId = jsonObject.getString("userId");
                    tAgent.setMerchantNumber(userId);
                    tAgent.setMerchantStatus(1);
                    tAgentService.updateById(tAgent);
                    //开始绑定结算账户
                    BindAccount bindAccount = new BindAccount();
                    bindAccount.setUserId(tAgent.getMerchantNumber());
                    bindAccount.setCertId(tAgent.getMerchantIDCode());
                    bindAccount.setCardName(tAgent.getCardName());
                    bindAccount.setCardNo(tAgent.getCardNo());
                    bindAccount.setBankAcctType(tAgent.getBankAcctType().toString());
                    bindAccount.setPhone(tAgent.getPhone());
                    bindAccount.setBankCode(tAgent.getBankCode());
                    bindAccount.setProvCode(tAgent.getProvCodeBank());
                    bindAccount.setAreaCode(tAgent.getAreaCodeBank());
                    TrhRequest<BindAccount> request1 = new TrhRequest();
                    InterfaceResponse execute = request1.execute(bindAccount, BindAccount.SERVICE_CODE);
                    if ("0000".equals(execute.getCode())) {
                        JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
                        String status1 = jsonObject1.getString("status");
                        if ("2".equals(status1)) {
                            tAgent.setBankStatus(2);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户失败");
                        }
                        if ("1".equals(status1)) {
                            tAgent.setBankStatus(1);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户成功");
                        }
                        if ("0".equals(status1)) {
                            tAgent.setBankStatus(0);
                            tAgentService.updateById(tAgent);
                            System.err.println("绑定结算账户处理中");
                        }
                    } else {
                        System.err.println("绑定结算账户失败:" + execute.getMsg());
                    }
                    response.setStatus(200);
                    PrintWriter out = response.getWriter();
                    out.print("OK");
                    out.flush();
                    out.close();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @RequestMapping(value = "/tAgent/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tAgentId) {
        tAgentService.deleteById(tAgentId);
@@ -230,7 +545,7 @@
    /**
     * 修改用户状态
     */
    @RequestMapping(value = "/update-status")
    @RequestMapping(value = "/tAgent/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TAgent tAgent = tAgentService.selectById(id);
@@ -274,7 +589,7 @@
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @RequestMapping(value = "/tAgent/update")
    @ResponseBody
    public Object update(TAgent tAgent) {
        tAgent.setPrincipal(tAgent.getPrincipal().replace(" ",""));
@@ -285,7 +600,7 @@
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tAgentId}")
    @RequestMapping(value = "/tAgent/detail/{tAgentId}")
    @ResponseBody
    public Object detail(@PathVariable("tAgentId") Integer tAgentId) {
        return tAgentService.selectById(tAgentId);
@@ -293,21 +608,21 @@
    @ApiOperation(value = "省市区查询",notes="省市区查询")
    @RequestMapping(value = "/area")
    @RequestMapping(value = "/tAgent/area")
    @ResponseBody
    public Object area() {
        return tRegionService.getAreaList();
    }
    @ApiOperation(value = "省查询",notes="省查询")
    @RequestMapping(value = "/areaProvince")
    @RequestMapping(value = "/tAgent/areaProvince")
    @ResponseBody
    public Object areaProvince(Model model) {
        return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
    }
    @ApiOperation(value = "市区查询",notes="市区查询")
    @RequestMapping(value = "/areaCity")
    @RequestMapping(value = "/tAgent/areaCity")
    @ResponseBody
    public Object areaCity(Integer parentId) {
        return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id",parentId));
@@ -315,7 +630,7 @@
    @ApiOperation(value = "导出代理商列表",notes="导出代理商列表")
    @RequestMapping(value = "/export")
    @RequestMapping(value = "/tAgent/export")
    @ResponseBody
    public void export(String principal,String principalPhone,Integer status,String createTime, HttpServletResponse response) {
        try {
@@ -367,4 +682,367 @@
        }
    }
    @ResponseBody
    @RequestMapping(value = "/tAgent/uploadFile")
    public String uploadFile(MultipartFile file){
        File srcFile = null;
        String originalFilename = file.getOriginalFilename();
        String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
        String fileName = "";
        try {
            fileName = UUIDUtil.getRandomCode(28) + ".png";
            srcFile = multipartFileToFile(file, fileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        ImageUpload imageUpload = new ImageUpload();
        imageUpload.setMerUserId("33567678901213221");
        File zip = ZipUtil.zip(srcFile);
        imageUpload.setName(zip.getName());
        imageUpload.setFile(Base64.encode(zip));
        TrhRequest<ImageUpload> request = new TrhRequest();
        InterfaceResponse execute = request.execute(imageUpload, ImageUpload.SERVICE_CODE);
        if(execute.getCode().equals("0000")){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            return jsonObject.getString("fileNo");
        }
        return "";
    }
    public File multipartFileToFile(MultipartFile file, String fileName) throws Exception {
        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            file = null;
        } else {
            InputStream ins = null;
            ins = file.getInputStream();
            toFile = new File("D:\\logs\\" + fileName);
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        return toFile;
    }
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 跳转到企业信息页
     * @return
     */
    @GetMapping("/tAgent/showEnterprisePage")
    public String showEnterprisePage(Model model){
        ShiroUser user = ShiroKit.getUser();
        Integer objectId = user.getObjectId();
        Integer roleType = user.getRoleType();
        User user1 = userService.selectById(user.getId());
        TAgent tAgent = new TAgent();
        if(roleType == 1){//平台
            tAgent.setPrincipal(user1.getName());
            tAgent.setPrincipalPhone(user1.getPhone());
            tAgent.setEmail(user1.getEmail());
            tAgent.setMerchantNumber("553021440975");
        }
        if(roleType == 3){//代理商
            tAgent = tAgentService.selectById(objectId);
        }
        model.addAttribute("roleType", roleType);
        model.addAttribute("item", tAgent);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" :Objects.isNull(tAgent.getSocialCreditCodeExpires())?"": sdf.format(tAgent.getSocialCreditCodeExpires()));
        model.addAttribute("certIdExpires", roleType == 1 ? "" : null == tAgent.getCertIdExpires() ? "" : sdf.format(tAgent.getCertIdExpires()));
        Wrapper<SettlementRecord> settlementRecordWrapper = new EntityWrapper<SettlementRecord>().eq("type", roleType == 1 ? 1 : 2);
        if(roleType == 2){
            settlementRecordWrapper.eq("objectId", objectId);
        }
        List<SettlementRecord> settlementRecords = settlementRecordService.selectList(settlementRecordWrapper.isNotNull("arrivalTime").orderBy("insertTime desc"));
        model.addAttribute("settlementRecords", settlementRecords);
        QueryBalance queryBalance = new QueryBalance();
        queryBalance.setUserId(tAgent.getMerchantNumber());
        TrhRequest<QueryBalance> request = new TrhRequest();
        InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE);
        model.addAttribute("balance", 0);
        model.addAttribute("marketingAmount", 0);
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            model.addAttribute("balance", jsonObject.getDoubleValue("settledAmount") / 100);
            if(roleType == 1){
                Double amount = rechargeRecordService.querSumSurplusDividedAmount(4);
                model.addAttribute("marketingAmount", amount);
            }
        }
        return PREFIX + "enterprisePage.html";
    }
    /**
     * 提现申请
     * @return
     */
    @ResponseBody
    @PostMapping("/tAgent/withdrawCash")
    public ResultUtil withdrawCash(){
        ShiroUser user = ShiroKit.getUser();
        Integer objectId = user.getObjectId();
        Integer roleType = user.getRoleType();
        User user1 = userService.selectById(user.getId());
        TAgent tAgent = new TAgent();
        if(roleType == 1){//平台
            tAgent.setLegalPerson(user1.getName());
            tAgent.setLegalPhone(user1.getPhone());
            tAgent.setEmail(user1.getEmail());
            tAgent.setMerchantNumber("553021440975");
        }
        if(roleType == 3){//代理商
            tAgent = tAgentService.selectById(objectId);
        }
        QueryBalance queryBalance = new QueryBalance();
        queryBalance.setUserId(tAgent.getMerchantNumber());
        TrhRequest<QueryBalance> request = new TrhRequest();
        InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE);
        if("0000".equals(execute.getCode())){
            JSONObject jsonObject = JSON.parseObject(execute.getResult());
            Integer settledAmount = jsonObject.getInteger("settledAmount");
            if(0 == settledAmount){
                return ResultUtil.error("余额不足");
            }
            SettlementRecord settlementRecord = new SettlementRecord();
            settlementRecord.setType(roleType == 1 ? 1 : 2);
            if(roleType == 3){
                settlementRecord.setObjectId(tAgent.getId());
            }
            settlementRecord.setAmount(Double.valueOf(settledAmount) / 100);
            settlementRecord.setInsertTime(new Date());
            settlementRecordService.insert(settlementRecord);
            Withdraw withdraw = new Withdraw();
            withdraw.setUserId(tAgent.getMerchantNumber());
            withdraw.setAmount(String.valueOf(settledAmount));
            withdraw.setOrderName("账户余额提现");
            withdraw.setRemark("账户余额提现");
            withdraw.setNotifyUrl(callbackPath + "/base/tAgent/withdrawCashCallback");
            withdraw.setParameter1(settlementRecord.getId().toString());
            TrhRequest<Withdraw> request1 = new TrhRequest();
            InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
            if("0000".equals(execute1.getCode())){
                JSONObject jsonObject1 = JSON.parseObject(execute1.getResult());
                String merOrderId1 = jsonObject1.getString("merOrderId");
                Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                if(0 == status){
                    return ResultUtil.error("申请处理中");
                }
                if(1 == status){
                    settlementRecord.setOrderNumber(merOrderId1);
                    settlementRecord.setArrivalTime(new Date());
                    settlementRecordService.updateById(settlementRecord);
                    return ResultUtil.success();
                }
                if(2 == status){
                    return ResultUtil.error("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                }
            }else{
                return ResultUtil.error("结算接口异常【提现】:" + execute.getMsg());
            }
        }else{
            return ResultUtil.error(execute.getMsg());
        }
        return ResultUtil.error("未知异常");
    }
    /**
     * 提现回调
     * @param interfaceResponse
     */
    @ResponseBody
    @PostMapping("/base/tAgent/withdrawCashCallback")
    public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response) {
        try {
            if("0000".equals(interfaceResponse.getCode())){
                JSONObject jsonObject1 = JSON.parseObject(interfaceResponse.getResult());
                String merOrderId1 = jsonObject1.getString("merOrderId");
                Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
                if(1 == status){
                    String parameter1 = jsonObject1.getString("parameter1");
                    SettlementRecord settlementRecord = settlementRecordService.selectById(parameter1);
                    settlementRecord.setOrderNumber(merOrderId1);
                    settlementRecord.setArrivalTime(new Date());
                    settlementRecordService.updateById(settlementRecord);
                    response.setStatus(200);
                    PrintWriter out = response.getWriter();
                    out.print("OK");
                    out.flush();
                    out.close();
                }
                if(2 == status){
                    System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
                }
            }else{
                System.err.println("结算接口异常【提现】:" + interfaceResponse.getMsg());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 充值补贴金额
     * @param amount
     * @return
     */
    @ResponseBody
    @PostMapping("/tAgent/accountRecharge")
    public ResultUtil accountRecharge(Double amount){
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3);
            RechargeRecord rechargeRecord = new RechargeRecord();
            rechargeRecord.setCode(out_trade_no);
            rechargeRecord.setType(4);
            rechargeRecord.setAmount(amount);
            rechargeRecord.setPayType(2);
            rechargeRecord.setPayStatus(1);
            rechargeRecord.setCreateTime(new Date());
            rechargeRecordService.insert(rechargeRecord);
            Deposit deposit = new Deposit();
            deposit.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
            deposit.setOrderName("补贴充值");
            deposit.setPayType("ALI_CB");
            deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress());
            deposit.setFrontUrl(callbackPath + "/base/tAgent/accountRechargeCallback");
            deposit.setNotifyUrl(callbackPath + "/base/tAgent/accountRechargeCallback");
            deposit.setParameter1(rechargeRecord.getId().toString());
            TrhRequest<Deposit> request = new TrhRequest();
            InterfaceResponse execute = request.execute(deposit, Deposit.SERVICE_CODE);
            if("0000".equals(execute.getCode())){
                JSONObject jsonObject = JSON.parseObject(execute.getResult());
                Integer status = jsonObject.getInteger("status");
                if(2 == status){
                    return ResultUtil.error("支付异常");
                }
                String merOrderId = jsonObject.getString("merOrderId");
                String payCode = jsonObject.getString("payCode");
                if(ToolUtil.isNotEmpty(payCode)){
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                int num = 1;
                                int wait = 0;
                                while (num <= 10){
                                    int min = 5000;
                                    wait += (min * num);
                                    RechargeRecord rechargeRecord1 = rechargeRecordService.selectById(rechargeRecord.getId());
                                    if(rechargeRecord1.getPayStatus() != 1){
                                        return;
                                    }
                                    QueryOrder queryOrder = new QueryOrder();
                                    queryOrder.setOriginalMerOrderId(merOrderId);
                                    /**
                                     * 1:支付查询 2:退款查询 3:确认收货查询 4:结算查询 5:充值查询 6:转账查询 7:异步分账查询(必填)  字段长度最长:1位
                                     */
                                    queryOrder.setQueryType("5");
                                    TrhRequest<QueryOrder> request = new TrhRequest();
                                    InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE);
                                    if("0000".equals(execute1.getCode())){
                                        JSONObject jsonObject1 = JSON.parseObject(execute1.getResult());
                                        String status1 = jsonObject1.getString("status");
                                        if("0".equals(status1)){//待处理
                                            Thread.sleep(wait);
                                            num++;
                                        }
                                        if("1".equals(status1)){//成功
                                            String merOrderId = jsonObject1.getString("merOrderId");
                                            rechargeRecord1.setPayTime(new Date());
                                            rechargeRecord1.setPayStatus(2);
                                            rechargeRecord1.setOrderNumber(merOrderId);
                                            rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount());
                                            rechargeRecordService.updateById(rechargeRecord1);
                                            break;
                                        }
                                        if("2".equals(status1) || 10 == num){//失败
                                            rechargeRecordService.deleteById(rechargeRecord1.getId());
                                            break;
                                        }
                                    }else{
                                        Thread.sleep(wait);
                                        num++;
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
                return ResultUtil.success(payCode);
            }else{
                return ResultUtil.error(execute.getMsg());
            }
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 补贴金额充值回调
     * @param interfaceResponse
     */
    @ResponseBody
    @PostMapping("/base/tAgent/accountRechargeCallback")
    public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
        try {
            if("0000".equals(interfaceResponse.getCode())){
                JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
                Integer status = jsonObject.getInteger("status");
                if(2 == status){
                    System.err.println("支付异常");
                    return;
                }
                if(1 == status){
                    String parameter1 = jsonObject.getString("parameter1");
                    RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1);
                    rechargeRecord.setPayStatus(2);
                    rechargeRecord.setPayTime(new Date());
                    rechargeRecord.setOrderNumber(jsonObject.getString("merOrderId"));
                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getAmount());
                    rechargeRecordService.updateById(rechargeRecord);
                    response.setStatus(200);
                    PrintWriter out = response.getWriter();
                    out.print("OK");
                    out.flush();
                    out.close();
                }
            }else{
                System.err.println(interfaceResponse.getMsg());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java
@@ -488,7 +488,7 @@
                    }
                }
                user.setAccount(tBranchOffice.getAccount());
                user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt()));
                user.setPassword(ShiroKit.md5(tBranchOffice.getPassword(), user.getSalt()));
                userService.updateById(user);
            }
        }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java
File was deleted
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -1,5 +1,6 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -14,11 +15,9 @@
import com.stylefeng.guns.modular.system.controller.util.HttpUtils;
import com.stylefeng.guns.modular.system.controller.util.TokenUtils;
import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
import com.stylefeng.guns.modular.system.dao.AccountChangeDetailMapper;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TDriverWork;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.stylefeng.guns.modular.system.model.TRegion;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.DateUtil;
import com.stylefeng.guns.modular.system.util.RedisUtil;
@@ -32,6 +31,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
@@ -42,12 +42,14 @@
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
@@ -93,6 +95,12 @@
    @Autowired
    private ITRechargeRecordService tRechargeRecordService;
    @Autowired
    private ITSystemConfigService systemConfigService;
    @Resource
    private AccountChangeDetailMapper accountChangeDetailMapper;
    private Logger log = LoggerFactory.getLogger(this.getClass());
    /**
@@ -123,10 +131,17 @@
     * 跳转到修改
     */
    @RequestMapping("/tDriver_update")
    public String tDriverUpdate( Integer tDriverId, Model model) {
    public String tDriverUpdate( Integer tDriverId, Model model) throws ParseException {
        TDriver tDriver = tDriverService.selectById(tDriverId);
        TDriverResp tDriverResp = new TDriverResp();
        BeanUtils.copyProperties(tDriver,tDriverResp);
        if(Objects.nonNull(tDriverResp.getFirstCertificateTime())){
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String format1 = format.format(tDriverResp.getFirstCertificateTime());
            tDriverResp.setFirstCertificateTimeStr(format1);
        }
//        tDriverResp.setFirstCertificateTime(format.parse(format1));
        // 查询邀请人
        TDriver tDriver1 = tDriverService.selectById(tDriver.getInviterId());
@@ -520,6 +535,28 @@
        tDriver.setApprovalUserId(shiroUser.getId());
        tDriver.setApprovalTime(new Date());
        tDriverService.updateById(tDriver);
        //增加积分奖励
        if(approvalStatus == 2 &&  null != tDriver.getInviterId()){
            TSystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 4));
            Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7");
            TDriver tDriver1 = tDriverService.selectById(tDriver.getInviterId());
            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
            accountChangeDetail.setUserType(2);
            accountChangeDetail.setUserId(tDriver1.getId());
            accountChangeDetail.setType(2);
            accountChangeDetail.setChangeType(10);
            accountChangeDetail.setOldData(tDriver1.getIntegral().doubleValue());
            tDriver1.setIntegral(tDriver1.getIntegral() + num7);
            accountChangeDetail.setNewData(tDriver1.getIntegral().doubleValue());
            accountChangeDetail.setExplain("推荐奖励");
            accountChangeDetail.setCreateTime(new Date());
            accountChangeDetailMapper.insert(accountChangeDetail);
            tDriverService.updateById(tDriver1);
        }
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
@@ -556,8 +556,7 @@
        }else {
            // 业绩排名 performanceTable
            // 查询广东全区域数据 查询广东所有的代理商
            List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>()
                    .eq("provinceCode", "440000"));
            List<TAgent> tAgentList = tAgentService.selectList(null);
            List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
            if (1 == type){
                // 单量
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -2,26 +2,34 @@
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.log.LogObjectHolder;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.controller.resp.TAppUserDetailOrderResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.model.TOrderPosition;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
@@ -30,7 +38,7 @@
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.io.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -57,6 +65,15 @@
    private ITAppUserService tAppUserService;
    @Autowired
    private ITCancelOrderService tCancelOrderService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private ITDriverService driverService;
    @Value("${filePath}")
    private String filePath;
    /**
     * 跳转到首页
@@ -227,6 +244,57 @@
    }
    @RequestMapping(value = "/getOrderTrack")
    @ResponseBody
    public ResultUtil getOrderTrack(Integer orderDetailId){
        if(ToolUtil.isNotEmpty(orderDetailId)){
            try {
                //将数据存储到文件中
                File file = new File(filePath + orderDetailId + ".json");
                if(!file.exists()){
                    return ResultUtil.success(new ArrayList<>());
                }
                //读取文件(字符流)
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
                //循环取出数据
                String str = null;
                StringBuffer sb = new StringBuffer();
                while ((str = in.readLine()) != null) {
                    sb.append(str);
                }
                List<TOrderPosition> list = JSONArray.parseArray(sb.toString(), TOrderPosition.class);
                return ResultUtil.success(list);
            }catch (Exception e){
                e.printStackTrace();
                return ResultUtil.runErr();
            }
        }else {
            return ResultUtil.paranErr();
        }
    }
    /**
     * 关闭订单
     */
    @RequestMapping(value = "/cancelOrderUpdate")
    @ResponseBody
    public Object cancelOrderUpdate(@RequestParam Integer tOrderId) {
        TOrder tOrder = tOrderService.selectById(tOrderId);
        tOrder.setState(OrderStateEnum.CANCELED.getCode());
        tOrderService.updateById(tOrder);
        if(null != tOrder.getDriverId()){
            redisUtil.delSetValue("orderService", tOrder.getId().toString());
            TDriver tDriver = driverService.selectById(tOrder.getDriverId());
            tDriver.setServerStatus(1);
            driverService.updateById(tDriver);
        }
        return SUCCESS_TIP;
    }
    /**
     * 获取列表
     */
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java
@@ -81,7 +81,7 @@
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        model.addAttribute("num4",jsonObject.getInteger("num4"));
        model.addAttribute("num5",jsonObject.getInteger("num5"));
//        model.addAttribute("num5",jsonObject.getInteger("num5"));
        return PREFIX + "tSystemConfigDispatchRules.html";
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java
@@ -37,6 +37,15 @@
    @ApiModelProperty(value = "加盟区域ID")
    private String areaId;
    private String firstCertificateTimeStr;
    public String getFirstCertificateTimeStr() {
        return firstCertificateTimeStr;
    }
    public void setFirstCertificateTimeStr(String firstCertificateTimeStr) {
        this.firstCertificateTimeStr = firstCertificateTimeStr;
    }
    @Override
    public String getAreaId() {
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java
@@ -59,7 +59,6 @@
    /**
     * 跳转到修改字典
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping("/dict_edit/{dictId}")
    public String deptUpdate(@PathVariable Integer dictId, Model model) {
        Dict dict = dictService.selectById(dictId);
@@ -77,7 +76,6 @@
     */
    @BussinessLog(value = "添加字典记录", key = "dictName,dictValues", dict = DictMap.class)
    @RequestMapping(value = "/add")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object add(String dictCode,String dictTips,String dictName, String dictValues) {
        if (ToolUtil.isOneEmpty(dictCode,dictName, dictValues)) {
@@ -91,7 +89,6 @@
     * 获取所有字典列表
     */
    @RequestMapping(value = "/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object list(String condition) {
        List<Map<String, Object>> list = this.dictService.list(condition);
@@ -102,7 +99,6 @@
     * 字典详情
     */
    @RequestMapping(value = "/detail/{dictId}")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object detail(@PathVariable("dictId") Integer dictId) {
        return dictService.selectById(dictId);
@@ -113,7 +109,6 @@
     */
    @BussinessLog(value = "修改字典", key = "dictName,dictValues", dict = DictMap.class)
    @RequestMapping(value = "/update")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object update(Integer dictId,String dictCode,String dictName, String dictTips,String dictValues) {
        if (ToolUtil.isOneEmpty(dictId, dictCode, dictName, dictValues)) {
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java
@@ -49,7 +49,6 @@
     * 查询操作日志列表
     */
    @RequestMapping("/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName, @RequestParam(required = false) Integer logType) {
        Page<OperationLog> page = new PageFactory<OperationLog>().defaultPage();
@@ -62,7 +61,6 @@
     * 查询操作日志详情
     */
    @RequestMapping("/detail/{id}")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object detail(@PathVariable Integer id) {
        OperationLog operationLog = operationLogService.selectById(id);
@@ -75,7 +73,6 @@
     */
    @BussinessLog(value = "清空业务日志")
    @RequestMapping("/delLog")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object delLog() {
        SqlRunner.db().delete("delete from sys_operation_log");
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -143,7 +143,7 @@
                if(f==5){
                    model.addAttribute("number", "5");
                }
                model.addAttribute("message","账号或密码错误!");
                model.addAttribute("tips","账号或密码错误!");
                return "/login.html";
            }
        }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java
@@ -46,7 +46,6 @@
     * 查询登录日志列表
     */
    @RequestMapping("/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName) {
        Page<LoginLog> page = new PageFactory<LoginLog>().defaultPage();
@@ -60,7 +59,6 @@
     */
    @BussinessLog("清空登录日志")
    @RequestMapping("/delLoginLog")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object delLog() {
        SqlRunner.db().delete("delete from sys_login_log");
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
@@ -66,7 +66,6 @@
    /**
     * 跳转到菜单详情列表页面
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping(value = "/menu_edit/{menuId}")
    public String menuEdit(@PathVariable Long menuId, Model model) {
        if (ToolUtil.isEmpty(menuId)) {
@@ -97,7 +96,6 @@
    /**
     * 修该菜单
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping(value = "/edit")
    @BussinessLog(value = "修改菜单", key = "name", dict = MenuDict.class)
    @ResponseBody
@@ -117,7 +115,6 @@
    /**
     * 获取菜单列表
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(@RequestParam(required = false) String menuName, @RequestParam(required = false) String level) {
@@ -128,7 +125,6 @@
    /**
     * 新增菜单
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping(value = "/add")
    @BussinessLog(value = "菜单新增", key = "name", dict = MenuDict.class)
    @ResponseBody
@@ -156,7 +152,6 @@
    /**
     * 删除菜单
     */
    @Permission(Const.ADMIN_NAME)
    @RequestMapping(value = "/remove")
    @BussinessLog(value = "删除菜单", key = "menuId", dict = MenuDict.class)
    @ResponseBody
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java
@@ -117,7 +117,6 @@
     */
    @RequestMapping(value = "/add")
    @BussinessLog(value = "添加角色", key = "name", dict = RoleDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip add(@Valid Role role, BindingResult result) {
        if (result.hasErrors()) {
@@ -135,7 +134,6 @@
     */
    @RequestMapping(value = "/edit")
    @BussinessLog(value = "修改角色", key = "name", dict = RoleDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip edit(@Valid Role role, BindingResult result) {
        if (result.hasErrors()) {
@@ -154,7 +152,6 @@
     */
    @RequestMapping(value = "/remove")
    @BussinessLog(value = "删除角色", key = "roleId", dict = RoleDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip remove(@RequestParam Integer roleId) {
        if (ToolUtil.isEmpty(roleId)) {
@@ -196,7 +193,6 @@
     */
    @RequestMapping("/setAuthority")
    @BussinessLog(value = "配置权限", key = "roleId,ids", dict = RoleDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip setAuthority(@RequestParam("roleId") Integer roleId, @RequestParam("ids") String ids) {
        if (ToolUtil.isOneEmpty(roleId)) {
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
@@ -232,7 +232,6 @@
     */
    @RequestMapping("/add")
    @BussinessLog(value = "添加管理员", key = "account", dict = UserDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip add(@Valid UserDto user, BindingResult result) {
        if (result.hasErrors()) {
@@ -252,11 +251,9 @@
        user.setCreatetime(new Date());
        User objectUser = UserFactory.createUser(user);
        //查找平台所属公司
        TCompany company = itCompanyService.selectOne(new EntityWrapper<TCompany>().eq("type", 1).orderBy("id", true).last(" limit 1"));
        if (SinataUtil.isNotEmpty(company)){
            objectUser.setObjectId(company.getId());
        }
        ShiroUser user1 = ShiroKit.getUser();
        objectUser.setRoleType(user1.getRoleType());
        objectUser.setObjectId(user1.getObjectId());
        objectUser.setPassWordUpdate(new Date());
        this.userService.insert(objectUser);
@@ -334,7 +331,6 @@
     */
    @RequestMapping("/reset")
    @BussinessLog(value = "重置管理员密码", key = "userId", dict = UserDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip reset(@RequestParam Integer userId) {
        if (ToolUtil.isEmpty(userId)) {
@@ -349,15 +345,11 @@
        return SUCCESS_TIP;
    }
    @Autowired
    private ITCompanyService itCompanyService;
    /**
     * 冻结用户
     */
    @RequestMapping("/freeze")
    @BussinessLog(value = "冻结用户", key = "userId", dict = UserDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip freeze(@RequestParam Integer userId) {
        if (ToolUtil.isEmpty(userId)) {
@@ -369,26 +361,6 @@
        }
        assertAuth(userId);
        this.userService.setStatus(userId, ManagerStatus.FREEZED.getCode());
        User user = userService.selectById(userId);
        if (user.getRoleType() == 2){
            //查询分公司
            TCompany company = itCompanyService.selectById(user.getObjectId());
            company.setState(1);
            itCompanyService.updateById(company);
            //设置该分公司下的所有司机状态
//            itDriverService.updateCompanyDriverState(3,company.getId());
        }else if (user.getRoleType() == 3){
            //查询加盟商
            TCompany franchisee = itCompanyService.selectById(user.getObjectId());
            franchisee.setState(1);
            itCompanyService.updateById(franchisee);
            //设置该加盟商下的所有司机状态
//            itDriverService.updateFranchiseeDriverState(3,franchisee.getId());
        }
        return SUCCESS_TIP;
    }
@@ -397,7 +369,6 @@
     */
    @RequestMapping("/unfreeze")
    @BussinessLog(value = "解除冻结用户", key = "userId", dict = UserDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip unfreeze(@RequestParam Integer userId) {
        if (ToolUtil.isEmpty(userId)) {
@@ -407,24 +378,6 @@
        this.userService.setStatus(userId, ManagerStatus.OK.getCode());
        User user = userService.selectById(userId);
        if (user.getRoleType() == 2){
            //查询分公司
            TCompany company = itCompanyService.selectById(user.getObjectId());
            company.setState(0);
            itCompanyService.updateById(company);
            //设置该分公司下的所有司机状态
//            itDriverService.updateCompanyDriverState(2,company.getId());
        }else if (user.getRoleType() == 3){
            //查询加盟商
            TCompany franchisee = itCompanyService.selectById(user.getObjectId());
            franchisee.setState(0);
            itCompanyService.updateById(franchisee);
            //设置该加盟商下的所有司机状态
//            itDriverService.updateFranchiseeDriverState(2,franchisee.getId());
        }
        return SUCCESS_TIP;
    }
@@ -433,7 +386,6 @@
     */
    @RequestMapping("/setRole")
    @BussinessLog(value = "分配角色", key = "userId,roleIds", dict = UserDict.class)
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Tip setRole(@RequestParam("userId") Integer userId, @RequestParam("roleIds") String roleIds) {
        if (ToolUtil.isOneEmpty(userId, roleIds)) {
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/AccountChangeDetailMapper.java
New file
@@ -0,0 +1,11 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.stylefeng.guns.modular.system.model.AccountChangeDetail;
/**
 * @author zhibing.pu
 * @date 2023/3/4 11:33
 */
public interface AccountChangeDetailMapper extends BaseMapper<AccountChangeDetail> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/RechargeRecordMapper.java
New file
@@ -0,0 +1,17 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.stylefeng.guns.modular.system.model.RechargeRecord;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @date 2023/6/2 14:25
 */
public interface RechargeRecordMapper extends BaseMapper<RechargeRecord> {
    Double querSumSurplusDividedAmount(@Param("type") Integer type);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java
New file
@@ -0,0 +1,11 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.stylefeng.guns.modular.system.model.SettlementRecord;
/**
 * @author zhibing.pu
 * @date 2023/6/2 12:46
 */
public interface SettlementRecordMapper extends BaseMapper<SettlementRecord> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/AccountChangeDetailMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.AccountChangeDetailMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.AccountChangeDetail">
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="userType" property="userType"/>
        <result column="userId" property="userId"/>
        <result column="type" property="type"/>
        <result column="changeType" property="changeType"/>
        <result column="oldData" property="oldData"/>
        <result column="newData" property="newData"/>
        <result column="orderId" property="orderId"/>
        <result column="explain" property="explain"/>
        <result column="createTime" property="createTime"/>
    </resultMap>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RechargeRecordMapper.xml
New file
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.RechargeRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.RechargeRecord">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="userId" property="userId" />
        <result column="code" property="code" />
        <result column="amount" property="amount"/>
        <result column="payType" property="payType" />
        <result column="payTime" property="payTime" />
        <result column="payStatus" property="payStatus" />
        <result column="orderNumber" property="orderNumber" />
        <result column="createTime" property="createTime" />
        <result column="agentId" property="agentId" />
        <result column="surplusDividedAmount" property="surplusDividedAmount"/>
    </resultMap>
    <select id="querSumSurplusDividedAmount" resultType="double">
        select ifnull(sum(surplusDividedAmount), 0) from t_recharge_record where payStatus = 2
        <if test="null != type">
            and `type` = #{type}
        </if>
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.SettlementRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.SettlementRecord">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="objectId" property="objectId" />
        <result column="amount" property="amount" />
        <result column="arrivalTime" property="arrivalTime" />
        <result column="insertTime" property="insertTime" />
    </resultMap>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml
@@ -58,7 +58,7 @@
                AND o.agentId = #{objectId}
            </if>
        </where>
        ORDER BY co.createTime
        ORDER BY co.createTime desc
    </select>
    <select id="userCancelOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
        select co.createTime,o.code,o.startAddress,o.endAddress
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
@@ -66,8 +66,8 @@
        o.id, o.code, o.userId, o.driverId, o.`source`, o.agentId, o.branchOfficeId, o.startTime, o.startAddress, o.startLat, o.startLng, o.endAddress, o.endLat, o.endLng,
        o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
        o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
        o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,a.nickname AS userName,
        a.phone AS userPhone,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
        o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,
        o.userPhone,o.userName,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
    </sql>
    <sql id="Base_Column_Server_Order">
@@ -75,7 +75,7 @@
        o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
        o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
        o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,
        d.name AS driverName,d.phone AS driverPhone
        o.userPhone,o.userName,d.name AS driverName,d.phone AS driverPhone
    </sql>
    <select id="getOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/AccountChangeDetail.java
New file
@@ -0,0 +1,75 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
 * 账户变动记录
 * @author zhibing.pu
 * @date 2023/3/4 11:30
 */
@Data
@TableName("t_account_change_detail")
public class AccountChangeDetail {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 编号
     */
    @TableField("code")
    private String code;
    /**
     * 用户类型(1=用户,2=司机)
     */
    @TableField("userType")
    private Integer userType;
    /**
     * 用户id
     */
    @TableField("userId")
    private Integer userId;
    /**
     * 类型(1=余额,2=积分)
     */
    @TableField("type")
    private Integer type;
    /**
     * 变动类型(1=订单收入,2=订单支出,3=充值,4=提现,5=佣金收入,6=佣金提现,7=优惠券收入,8=保险支付,9=线下收款支付,10=推荐奖励)
     */
    @TableField("changeType")
    private Integer changeType;
    /**
     * 历史数据
     */
    @TableField("oldData")
    private Double oldData;
    /**
     * 新数据
     */
    @TableField("newData")
    private Double newData;
    /**
     * 订单id
     */
    @TableField("orderId")
    private Long orderId;
    /**
     * 变动说明
     */
    @TableField("explain")
    private String explain;
    /**
     * 变动时间
     */
    @TableField("createTime")
    private Date createTime;
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/RechargeRecord.java
New file
@@ -0,0 +1,80 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
 * 系统充值记录
 * @author zhibing.pu
 * @date 2023/3/21 23:08
 */
@Data
@TableName("t_recharge_record")
public class RechargeRecord {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 数据类型(1=用户,2=司机,3=代理商,4=平台)
     */
    @TableField("type")
    private Integer type;
    /**
     * 用户id
     */
    @TableField("userId")
    private Integer userId;
    /**
     * 流水号
     */
    @TableField("code")
    private String code;
    /**
     * 充值金额
     */
    @TableField("amount")
    private Double amount;
    /**
     * 支付方式(1=微信,2=系统充值)
     */
    @TableField("payType")
    private Integer payType;
    /**
     * 完成支付时间
     */
    @TableField("payTime")
    private Date payTime;
    /**
     * 支付状态(1=待支付,2=已完成)
     */
    @TableField("payStatus")
    private Integer payStatus;
    /**
     * 第三方流水号
     */
    @TableField("orderNumber")
    private String orderNumber;
    /**
     * 添加时间
     */
    @TableField("createTime")
    private Date createTime;
    /**
     * 代理商id
     */
    @TableField("agentId")
    private Integer agentId;
    /**
     * 剩余待分账金额
     */
    @TableField("surplusDividedAmount")
    private Double surplusDividedAmount;
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java
New file
@@ -0,0 +1,54 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
 * 结算记录
 * @author zhibing.pu
 * @date 2023/6/2 12:43
 */
@Data
@TableName("t_settlement_record")
public class SettlementRecord {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 1=平台,2=代理商,3=司机
     */
    @TableField("type")
    private Integer type;
    /**
     * 结算对象id
     */
    @TableField("objectId")
    private Integer objectId;
    /**
     * 提现金额
     */
    @TableField("amount")
    private Double amount;
    /**
     * 第三方流水号
     */
    @TableField("orderNumber")
    private String orderNumber;
    /**
     * 到账时间
     */
    @TableField("arrivalTime")
    private Date arrivalTime;
    /**
     * 添加时间
     */
    @TableField("insertTime")
    private Date insertTime;
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java
@@ -57,6 +57,14 @@
     */
    private String cityName;
    /**
     * 代理区域区编号
     */
    private String districtCode;
    /**
     * 代理区域区名称
     */
    private String districtName;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
@@ -68,7 +76,131 @@
    @TableField(value = "serviceCalls")
    @ApiModelProperty(value = "客服电话")
    private String serviceCalls;
    /**
     * 商户类型(1=个体工商户,2=企业)
     */
    @TableField("userType")
    private Integer userType;
    /**
     * 公司名称
     */
    @TableField("merchantName")
    private String merchantName;
    /**
     * 经营范围
     */
    @TableField("businessScope")
    private String businessScope;
    /**
     * 统一社会信用码
     */
    @TableField("socialCreditCode")
    private String socialCreditCode;
    /**
     * 统一社会信用证有效期
     */
    @TableField("socialCreditCodeExpires")
    private Date socialCreditCodeExpires;
    /**
     * 企业注册省编号
     */
    @TableField("provCodeEnterprise")
    private String provCodeEnterprise;
    /**
     * 企业注册市编号
     */
    @TableField("cityCodeEnterprise")
    private String cityCodeEnterprise;
    /**
     * 企业注册区编号
     */
    @TableField("areaCodeEnterprise")
    private String areaCodeEnterprise;
    /**
     * 企业注册详细地址
     */
    @TableField("address")
    private String address;
    /**
     * 法人姓名
     */
    @TableField("legalPerson")
    private String legalPerson;
    /**
     * 法人身份证号码
     */
    @TableField("merchantIDCode")
    private String merchantIDCode;
    /**
     * 法人身份证有效期
     */
    @TableField("certIdExpires")
    private Date certIdExpires;
    /**
     * 法人手机号
     */
    @TableField("legalPhone")
    private String legalPhone;
    /**
     * 附件编号
     */
    @TableField("fileNo")
    private String fileNo;
    /**
     * 结算账户名
     */
    @TableField("cardName")
    private String cardName;
    /**
     * 结算账户号
     */
    @TableField("cardNo")
    private String cardNo;
    /**
     * 银行账户类型(1=对公,2=对私)
     */
    @TableField("bankAcctType")
    private Integer bankAcctType;
    /**
     * 银行预留手机号
     */
    @TableField("phone")
    private String phone;
    /**
     * 开户行编号
     */
    @TableField("bankCode")
    private String bankCode;
    /**
     * 开户行地区省编号
     */
    @TableField("provCodeBank")
    private String provCodeBank;
    /**
     * 开户行地区市编号
     */
    @TableField("cityCodeBank")
    private String cityCodeBank;
    /**
     * 开户行地区区编号
     */
    @TableField("areaCodeBank")
    private String areaCodeBank;
    /**
     * 商户号
     */
    @TableField("merchantNumber")
    private String merchantNumber;
    /**
     * 商户状态(0=审核中,1=已成功,2=审核失败)
     */
    @TableField("merchantStatus")
    private Integer merchantStatus;
    /**
     * 结算账户状态(0=审核中,1=已成功,2=审核失败)
     */
    @TableField("bankStatus")
    private Integer bankStatus;
@@ -87,6 +219,22 @@
    @TableField(exist = false)
    @ApiModelProperty(value = "密码")
    private String password;
    public String getDistrictCode() {
        return districtCode;
    }
    public void setDistrictCode(String districtCode) {
        this.districtCode = districtCode;
    }
    public String getDistrictName() {
        return districtName;
    }
    public void setDistrictName(String districtName) {
        this.districtName = districtName;
    }
    public String getAccount() {
        return account;
@@ -208,6 +356,206 @@
        this.createTime = createTime;
    }
    public Integer getUserType() {
        return userType;
    }
    public void setUserType(Integer userType) {
        this.userType = userType;
    }
    public String getMerchantName() {
        return merchantName;
    }
    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }
    public String getBusinessScope() {
        return businessScope;
    }
    public void setBusinessScope(String businessScope) {
        this.businessScope = businessScope;
    }
    public String getSocialCreditCode() {
        return socialCreditCode;
    }
    public void setSocialCreditCode(String socialCreditCode) {
        this.socialCreditCode = socialCreditCode;
    }
    public Date getSocialCreditCodeExpires() {
        return socialCreditCodeExpires;
    }
    public void setSocialCreditCodeExpires(Date socialCreditCodeExpires) {
        this.socialCreditCodeExpires = socialCreditCodeExpires;
    }
    public String getProvCodeEnterprise() {
        return provCodeEnterprise;
    }
    public void setProvCodeEnterprise(String provCodeEnterprise) {
        this.provCodeEnterprise = provCodeEnterprise;
    }
    public String getCityCodeEnterprise() {
        return cityCodeEnterprise;
    }
    public void setCityCodeEnterprise(String cityCodeEnterprise) {
        this.cityCodeEnterprise = cityCodeEnterprise;
    }
    public String getAreaCodeEnterprise() {
        return areaCodeEnterprise;
    }
    public void setAreaCodeEnterprise(String areaCodeEnterprise) {
        this.areaCodeEnterprise = areaCodeEnterprise;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getLegalPerson() {
        return legalPerson;
    }
    public void setLegalPerson(String legalPerson) {
        this.legalPerson = legalPerson;
    }
    public String getMerchantIDCode() {
        return merchantIDCode;
    }
    public void setMerchantIDCode(String merchantIDCode) {
        this.merchantIDCode = merchantIDCode;
    }
    public Date getCertIdExpires() {
        return certIdExpires;
    }
    public void setCertIdExpires(Date certIdExpires) {
        this.certIdExpires = certIdExpires;
    }
    public String getLegalPhone() {
        return legalPhone;
    }
    public void setLegalPhone(String legalPhone) {
        this.legalPhone = legalPhone;
    }
    public String getFileNo() {
        return fileNo;
    }
    public void setFileNo(String fileNo) {
        this.fileNo = fileNo;
    }
    public String getCardName() {
        return cardName;
    }
    public void setCardName(String cardName) {
        this.cardName = cardName;
    }
    public String getCardNo() {
        return cardNo;
    }
    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }
    public Integer getBankAcctType() {
        return bankAcctType;
    }
    public void setBankAcctType(Integer bankAcctType) {
        this.bankAcctType = bankAcctType;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getBankCode() {
        return bankCode;
    }
    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }
    public String getProvCodeBank() {
        return provCodeBank;
    }
    public void setProvCodeBank(String provCodeBank) {
        this.provCodeBank = provCodeBank;
    }
    public String getCityCodeBank() {
        return cityCodeBank;
    }
    public void setCityCodeBank(String cityCodeBank) {
        this.cityCodeBank = cityCodeBank;
    }
    public String getAreaCodeBank() {
        return areaCodeBank;
    }
    public void setAreaCodeBank(String areaCodeBank) {
        this.areaCodeBank = areaCodeBank;
    }
    public String getMerchantNumber() {
        return merchantNumber;
    }
    public void setMerchantNumber(String merchantNumber) {
        this.merchantNumber = merchantNumber;
    }
    public Integer getMerchantStatus() {
        return merchantStatus;
    }
    public void setMerchantStatus(Integer merchantStatus) {
        this.merchantStatus = merchantStatus;
    }
    public Integer getBankStatus() {
        return bankStatus;
    }
    public void setBankStatus(Integer bankStatus) {
        this.bankStatus = bankStatus;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java
@@ -95,7 +95,7 @@
    @TableField(value = "cancelCount")
    private Integer cancelCount;
    @ApiModelProperty(value = "是否拥有9折优惠 1是 0否")
    @ApiModelProperty(value = "是否拥有95折优惠 1是 0否")
    @TableField(value = "havDiscount")
    private Integer havDiscount;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
@@ -92,11 +92,11 @@
    @ApiModelProperty(value = "优惠券数量")
    @TableField("coupon_count")
    private Integer couponCount;
    private Long couponCount;
    @ApiModelProperty(value = "剩余数量")
    @TableField("remaining_quantity")
    private Integer remainingQuantity;
    private Long remainingQuantity;
    @ApiModelProperty(value = "删除 true未删除 false已删除")
    @TableField("status")
@@ -111,19 +111,19 @@
        this.status = status;
    }
    public Integer getRemainingQuantity() {
    public Long getRemainingQuantity() {
        return remainingQuantity;
    }
    public void setRemainingQuantity(Integer remainingQuantity) {
    public void setRemainingQuantity(Long remainingQuantity) {
        this.remainingQuantity = remainingQuantity;
    }
    public Integer getCouponCount() {
    public Long getCouponCount() {
        return couponCount;
    }
    public void setCouponCount(Integer couponCount) {
    public void setCouponCount(Long couponCount) {
        this.couponCount = couponCount;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java
@@ -9,6 +9,7 @@
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -145,6 +146,8 @@
    @ApiModelProperty(value = "后台充值余额")
    private BigDecimal backgroundBalance;
    @ApiModelProperty(value = "优惠券余额")
    private BigDecimal couponBalance;
    @ApiModelProperty(value = "启用冻结理由")
    private String remark;
@@ -168,6 +171,7 @@
    private String areaName;
    @ApiModelProperty(value = "驾驶证初次领证时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date firstCertificateTime;
    @ApiModelProperty(value = "佣金")
    private BigDecimal commission;
@@ -188,6 +192,13 @@
    @ApiModelProperty(value = "邀请人电话")
    private String inviterPhone;
    public BigDecimal getCouponBalance() {
        return couponBalance;
    }
    public void setCouponBalance(BigDecimal couponBalance) {
        this.couponBalance = couponBalance;
    }
    public String getInviterName() {
        return inviterName;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
@@ -216,6 +216,28 @@
    @ApiModelProperty(value = "是否已开票 1是 0否")
    private Integer isInvoice;
    @ApiModelProperty(value = "用户手机号")
    private String userPhone;
    @ApiModelProperty(value = "用户姓名")
    private String userName;
    public String getUserPhone() {
        return userPhone;
    }
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Integer getIsInvoice() {
        return isInvoice;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IRechargeRecordService.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.service.IService;
import com.stylefeng.guns.modular.system.model.RechargeRecord;
/**
 * @author zhibing.pu
 * @date 2023/6/2 14:26
 */
public interface IRechargeRecordService extends IService<RechargeRecord> {
    /**
     *
     * @param type
     * @return
     * @throws Exception
     */
    Double querSumSurplusDividedAmount(Integer type);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java
New file
@@ -0,0 +1,11 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.service.IService;
import com.stylefeng.guns.modular.system.model.SettlementRecord;
/**
 * @author zhibing.pu
 * @date 2023/6/2 12:48
 */
public interface ISettlementRecordService extends IService<SettlementRecord> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/RechargeRecordServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.dao.RechargeRecordMapper;
import com.stylefeng.guns.modular.system.model.RechargeRecord;
import com.stylefeng.guns.modular.system.service.IRechargeRecordService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @date 2023/6/2 14:26
 */
@Service
public class RechargeRecordServiceImpl extends ServiceImpl<RechargeRecordMapper, RechargeRecord> implements IRechargeRecordService {
    @Override
    public Double querSumSurplusDividedAmount(Integer type) {
        return this.baseMapper.querSumSurplusDividedAmount(type);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.dao.SettlementRecordMapper;
import com.stylefeng.guns.modular.system.model.SettlementRecord;
import com.stylefeng.guns.modular.system.service.ISettlementRecordService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @date 2023/6/2 12:48
 */
@Service
public class SettlementRecordServiceImpl extends ServiceImpl<SettlementRecordMapper, SettlementRecord> implements ISettlementRecordService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
@@ -111,7 +111,7 @@
        // 过滤已使用优惠券
        List<TOrder> usedCoupon = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                && Objects.nonNull(order.getCouponId()) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
        model.addAttribute("usedCoupon",usedCoupon.size());
//        model.addAttribute("usedCoupon",usedCoupon.size());
        // 已使用优惠券金额求和,已使用优惠券id
//        List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
//        if(CollectionUtils.isEmpty(usedCouponId)){
@@ -133,12 +133,18 @@
        BigDecimal couponPriceSum = BigDecimal.ZERO;
        for (TUserToCoupon userToCoupon : tUserToCoupons) {
            TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
            couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
            if(Objects.nonNull(tCoupons1)){
                couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
            }
        }
        model.addAttribute("couponPriceSum", couponPriceSum);
        // 过滤代理商发放的优惠券
        int sum = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
        model.addAttribute("issuedCoupon",sum);
        // 总量减去有效数量和过期数量为使用数量
        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
        model.addAttribute("usedCoupon",sum-validCount-expireCount);
        // 司机信息
        // 司机数
        List<TDriver> drivers = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("agentId", tAgent.getId()));
@@ -162,7 +168,7 @@
        List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
        // 查询优惠券
        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>());
        // 用户
        // 用户优惠券
        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>());
        // 查询司机信息
        List<TDriver> tDrivers = tDriverMapper.selectList(new EntityWrapper<TDriver>());
@@ -186,7 +192,13 @@
                // 过滤已使用优惠券
                List<TOrder> usedCoupon = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                        && Objects.nonNull(order.getCouponId()) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                // 通过订单总量获取已完成订单的使用优惠券数量及优惠券金额
                tAgentResp.setUsedCoupon(usedCoupon.size());
                // 金额
                Optional<BigDecimal> reduce = usedCoupon.stream().map(TOrder::getDiscountedPrice).reduce(BigDecimal::add);
                reduce.ifPresent(tAgentResp::setCouponPriceSum);
                // 已使用优惠券金额求和,已使用优惠券id
//                List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
//                if(CollectionUtils.isEmpty(usedCouponId)){
@@ -202,18 +214,24 @@
//                }
            }
            if(!CollectionUtils.isEmpty(tUserToCoupons)){
                // 过滤代理商发放的优惠券
                List<TUserToCoupon> userToCoupons = tUserToCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getObjectId()) && coupon.getRoleType() == 3).collect(Collectors.toList());
                int sum = userToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
                tAgentResp.setIssuedCoupon(sum);
                BigDecimal couponPriceSum = BigDecimal.ZERO;
                for (TUserToCoupon userToCoupon : userToCoupons) {
                    TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
                    couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
                }
                tAgentResp.setCouponPriceSum(couponPriceSum);
            }
//            if(!CollectionUtils.isEmpty(tUserToCoupons)){
//                // 过滤代理商发放的优惠券
//                List<TUserToCoupon> userToCoupons = tUserToCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getObjectId()) && coupon.getRoleType() == 3).collect(Collectors.toList());
//                int sum = userToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
//                tAgentResp.setIssuedCoupon(sum);
//                // 总量减去有效数量和过期数量为使用数量
//                int validCount = userToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
//                int expireCount = userToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
//                tAgentResp.setUsedCoupon(sum-validCount-expireCount);
//                BigDecimal couponPriceSum = BigDecimal.ZERO;
//                for (TUserToCoupon userToCoupon : userToCoupons) {
//                    TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
//                    if(Objects.nonNull(tCoupons1)){
//                        couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
//                    }
//                }
//                tAgentResp.setCouponPriceSum(couponPriceSum);
//            }
            if(!CollectionUtils.isEmpty(tDrivers)){
                // 司机数
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java
@@ -185,12 +185,14 @@
            // 已发放优惠券
            tBranchOfficeResp.setTotalCount(totalCount);
            BigDecimal orderPriceCount = new BigDecimal("0");
            BigDecimal orderPriceCount = BigDecimal.ZERO;
            // 累计优惠券金额
            for (TUserToCoupon tUserToCoupon : tUserToCoupons) {
                TCoupon tCoupon = tCouponMapper.selectById(tUserToCoupon.getCouponId());
                BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
                orderPriceCount = orderPriceCount.add(price);
                if(Objects.nonNull(tCoupon)){
                    BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
                    orderPriceCount = orderPriceCount.add(price);
                }
            }
            tBranchOfficeResp.setOrderPriceCount(orderPriceCount);
@@ -226,10 +228,11 @@
            }
            tBranchOffice.setDistrictName(area.getName());
            tBranchOffice.setDistrictCode(area.getCode());
        }else {
        }
        /*else {
            tBranchOffice.setDistrictName(city.getName());
            tBranchOffice.setDistrictCode(city.getCode());
        }
        }*/
        // 通过省市查询代理商
        List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode())
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -128,9 +128,9 @@
            TDriverResp tDriverResp = new TDriverResp();
            BeanUtils.copyProperties(tDriver,tDriverResp);
            if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){
            if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance()) && Objects.nonNull(tDriver.getCouponBalance())){
                // 设置余额
                tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
                tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()).add(tDriver.getCouponBalance()));
            }
            // 所属代理商
@@ -199,9 +199,9 @@
        String monthDate = new SimpleDateFormat("yyyyMM").format(new Date());
        if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){
        if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance()) && Objects.nonNull(tDriver.getCouponBalance())){
            // 设置余额
            tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
            tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()).add(tDriver.getCouponBalance()));
            model.addAttribute("balance",tDriver.getBalance());
        }else {
            model.addAttribute("balance",BigDecimal.ZERO);
@@ -388,8 +388,12 @@
            tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode())
                    .eq("cityCode", city.getCode())
                    .eq("status", StatusEnum.NORMAL.getCode())
                    .eq("districtCode", city.getCode())
                    .last("LIMIT 1"));
//            tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode())
//                    .eq("cityCode", city.getCode())
//                    .eq("status", StatusEnum.NORMAL.getCode())
//                    .eq("districtCode", city.getCode())
//                    .last("LIMIT 1"));
        }
        if(!CollectionUtils.isEmpty(tBranchOffice)){
            tDriver.setBranchOfficeId(tBranchOffice.get(0).getId());
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -23,7 +23,10 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
@@ -39,13 +42,16 @@
@Service
public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
    @Autowired
    @Resource
    private TOrderMapper tOrderMapper;
    @Autowired
    @Resource
    private TAppUserMapper tAppUserMapper;
    @Autowired
    @Resource
    private TDriverMapper tDriverMapper;
    @Autowired
    @Resource
    private TBranchOfficeMapper tBranchOfficeMapper;
    @Override
@@ -67,6 +73,7 @@
    public void orderDetail(Integer orderId, Model model) {
        // 订单信息
        TOrder tOrder = tOrderMapper.selectById(orderId);
        model.addAttribute("id", orderId);
        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getCreateTime()));//下单时间
        model.addAttribute("code",tOrder.getCode());//订单编号
        model.addAttribute("source",tOrder.getSource());//订单来源
@@ -105,16 +112,24 @@
        model.addAttribute("discountAmount",tOrder.getDiscountAmount());//折扣金额
        model.addAttribute("userId",tOrder.getUserId());//用户id
        model.addAttribute("routeRecord",tOrder.getRouteRecord());//行程录音
        model.addAttribute("userPhone",tOrder.getUserPhone());//用户手机号
        model.addAttribute("userName",tOrder.getUserName());//用户名称
        // 查询用户
        TAppUser tAppUser = tAppUserMapper.selectById(tOrder.getUserId());
        model.addAttribute("userName",tAppUser.getNickname());
        model.addAttribute("userPhone",tAppUser.getPhone());
        model.addAttribute("havDiscount",tAppUser.getHavDiscount());
        if(1 == tAppUser.getHavDiscount()){
            // 计算9折优惠金额
            BigDecimal multiply = tOrder.getOrderMoney().multiply(new BigDecimal("0.1")).setScale(2);
            model.addAttribute("multiply",multiply);
        if(Objects.nonNull(tAppUser)){
            model.addAttribute("havDiscount",tAppUser.getHavDiscount());
            if(1 == tAppUser.getHavDiscount()){
                BigDecimal subtract = tOrder.getOrderMoney().subtract(tOrder.getDiscountedPrice());
                // 计算95折优惠金额
                BigDecimal multiply = subtract.multiply(new BigDecimal("0.05"), new MathContext(2, RoundingMode.HALF_EVEN));
                model.addAttribute("multiply",multiply);
            }else {
                model.addAttribute("multiply",0);
            }
        }else {
            model.addAttribute("havDiscount",0);
            model.addAttribute("multiply",0);
        }
        // 查询司机
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java
@@ -151,5 +151,6 @@
            list = tRevenueMapper.getDataStatisticsIncomeOrCommissionByIds(ids,2,monthDate);
        }
        model.addAttribute("performanceResp",list);
        map.put("performanceResp",list);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/config/ChannelConfig.java
New file
@@ -0,0 +1,60 @@
package com.stylefeng.guns.modular.system.util.MallBook.config;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;
import java.util.Properties;
/**
 * @Author xiaogc
 * @Date 2022/2/10 10:03
 */
public class ChannelConfig {
    /**
     * mallbook 测试环境地址
     */
    public static String payUrl;
    /**
     * 业务系统商户平台编号
     */
    public static String merchantNo;
    /**
     * 接口版本号,不同版本号触发不同接口业务
     */
    public static String version;
    /*
     * 渠道类型 HF:汇付
     */
    public static String channelType;
    /**
     * 商户平台私钥路径
     */
    public static String merchantPrivateKey;
    /**
     * mallbook公钥路径
     */
    public static String mallBookPublicKey;
    static {
        YamlPropertiesFactoryBean yamlProFb = new YamlPropertiesFactoryBean();
        yamlProFb.setResources(new ClassPathResource("application.yml"));
        Properties properties = yamlProFb.getObject();
        System.out.println("mallbook 参数配置初始化");
        System.out.println("--------------------------------");
        System.out.println("环境地址:" + properties.get("mallbook.pay_url"));
        System.out.println("商户平台编号:" + properties.get("mallbook.merchant_no"));
        System.out.println("接口版本号:" + properties.get("mallbook.version"));
        System.out.println("渠道类型:" + properties.get("mallbook.channel_type"));
        System.out.println("商户平台私钥:" + properties.get("mallbook.merchant_private_key"));
        System.out.println("mallbook 公钥:" + properties.get("mallbook.mall_book_public_key"));
        System.out.println("--------------------------------");
        payUrl = properties.get("mallbook.pay_url").toString();
        merchantNo = properties.get("mallbook.merchant_no").toString();
        version = properties.get("mallbook.version").toString();
        channelType = properties.get("mallbook.channel_type").toString();
        merchantPrivateKey = properties.get("mallbook.merchant_private_key").toString();
        mallBookPublicKey = properties.get("mallbook.mall_book_public_key").toString();
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/BindAccount.java
New file
@@ -0,0 +1,107 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class BindAccount<T> {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "bindAccount";
    //子商户编号
    private String userId;
    //身份证号
    private String certId;
    //结算账户名
    private String cardName;
    //结算账户号
    private String cardNo;
    //银行账户类型
    private String bankAcctType;
    //手机号
    private String phone;
    //开户银行名称
    private String bankName;
    //银行编码
    private String bankCode;
    //省份编码
    private String provCode;
    //地区编码
    private String areaCode;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getCertId() {
        return certId;
    }
    public void setCertId(String certId) {
        this.certId = certId;
    }
    public String getCardName() {
        return cardName;
    }
    public void setCardName(String cardName) {
        this.cardName = cardName;
    }
    public String getCardNo() {
        return cardNo;
    }
    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }
    public String getBankAcctType() {
        return bankAcctType;
    }
    public void setBankAcctType(String bankAcctType) {
        this.bankAcctType = bankAcctType;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getBankName() {
        return bankName;
    }
    public void setBankName(String bankName) {
        this.bankName = bankName;
    }
    public String getBankCode() {
        return bankCode;
    }
    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }
    public String getProvCode() {
        return provCode;
    }
    public void setProvCode(String provCode) {
        this.provCode = provCode;
    }
    public String getAreaCode() {
        return areaCode;
    }
    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Deposit.java
New file
@@ -0,0 +1,126 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class Deposit {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "deposit";
    //充值金额
    private String amount;
    //订单信息
    private String orderName;
    //支付类型
    private String payType;
    //微信或支付宝的appid
    private String appid;
    //微信或支付宝用户id
    private String openid;
    //终端IP
    private String terminalIp;
    //前台回调地址
    private String frontUrl;
    //后台回调地址
    private String notifyUrl;
    //自定义参数1
    private String parameter1;
    //自定义参数2
    private String parameter2;
    private String bankCode;
    private String cardType;
    public String getBankCode() {
        return bankCode;
    }
    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }
    public String getCardType() {
        return cardType;
    }
    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    public String getAmount() {
        return amount;
    }
    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
    public String getPayType() {
        return payType;
    }
    public void setPayType(String payType) {
        this.payType = payType;
    }
    public String getAppid() {
        return appid;
    }
    public void setAppid(String appid) {
        this.appid = appid;
    }
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
    public String getTerminalIp() {
        return terminalIp;
    }
    public void setTerminalIp(String terminalIp) {
        this.terminalIp = terminalIp;
    }
    public String getFrontUrl() {
        return frontUrl;
    }
    public void setFrontUrl(String frontUrl) {
        this.frontUrl = frontUrl;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/ImageUpload.java
New file
@@ -0,0 +1,44 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
/**
 * @author huangh
 * @version 1.0
 * @description
 * @date 2021/9/18 16:10
 */
public class ImageUpload {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "fileUpload";
    //业务系统会员编号
    private String merUserId;
    //文件名称
    private String file;
    //文件
    private String name;
    public String getMerUserId() {
        return merUserId;
    }
    public void setMerUserId(String merUserId) {
        this.merUserId = merUserId;
    }
    public String getFile() {
        return file;
    }
    public void setFile(String file) {
        this.file = file;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/InterfaceRequest.java
New file
@@ -0,0 +1,176 @@
/**
 *
 */
package com.stylefeng.guns.modular.system.util.MallBook.model;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.stylefeng.guns.modular.system.util.MallBook.config.ChannelConfig;
import com.stylefeng.guns.modular.system.util.MallBook.util.RSASignature;
import com.stylefeng.guns.modular.system.util.MallBook.util.StringUtil;
import java.io.Serializable;
/**
 * 接口请求包
 *
 */
public class InterfaceRequest<T> implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = -8130938432046696213L;
    /**
     * 商户平台编号
     */
    private String merchantNo = ChannelConfig.merchantNo;
    /**
     * 接口版本号,不同版本号触发不同接口业务
     */
    private String version = ChannelConfig.version;
    /*
     * 渠道类型  HF:汇付
     */
    private String channelType = ChannelConfig.channelType;
    /**
     * 业务系统订单ID
     */
    private String merOrderId;
    /**
     * 签名
     */
    private String sign;
    /**
     * 业务类型编号
     */
    private String serverCode;
    /**
     * 业务参数,json格式
     */
    private String params;
    /**
     * 时间戳
     */
    private String date;
    public String getChannelType() {
        return channelType;
    }
    public void setChannelType(String channelType) {
        this.channelType = channelType;
    }
    public String getMerOrderId() {
        return merOrderId;
    }
    public void setMerOrderId(String merOrderId) {
        this.merOrderId = merOrderId;
    }
    public String getMerchantNo() {
        return merchantNo;
    }
    public void setMerchantNo(String merchantNo) {
        this.merchantNo = merchantNo;
    }
    public String getSign() {
        return sign;
    }
    public void setSign(String sign) {
        this.sign = sign;
    }
    public String getServerCode() {
        return serverCode;
    }
    public void setServerCode(String serverCode) {
        this.serverCode = serverCode;
    }
    public String getParams() {
        return params;
    }
    public void setParams(String params) {
        this.params = params;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    /**
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     *  订单号 + 商户号 + 渠道类型 +  时间戳 + 业务参数json
     * @return 待签名字符串
     */
    public String content() {
        return StrUtil.builder()
                .append(StringUtil.convertNull(merOrderId))
                .append(StringUtil.convertNull(merchantNo))
                .append(StringUtil.convertNull(channelType))
                .append(StringUtil.convertNull(date))
                .append(StringUtil.convertNull(params))
                .toString();
    }
    public InterfaceRequest() {
    }
    public InterfaceRequest(T obj, String serverCode) {
        this.merOrderId = IdUtil.fastSimpleUUID();
        this.serverCode = serverCode;
        this.date = System.currentTimeMillis() + "";
        this.params = JSONUtil.toJsonStr(obj);
        // todo 使用商户平台私钥生成sign,需要修改证书对应路径
        this.sign = RSASignature.sign(content());
    }
    @Override
    public String toString() {
        return "InterfaceRequest{" +
                "merOrderId='" + merOrderId + '\'' +
                ", merchantNo='" + merchantNo + '\'' +
                ", sign='" + sign + '\'' +
                ", serverCode='" + serverCode + '\'' +
                ", params='" + params + '\'' +
                ", date='" + date + '\'' +
                ", version='" + version + '\'' +
                ", channelType='" + channelType + '\'' +
                '}';
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/InterfaceResponse.java
New file
@@ -0,0 +1,121 @@
/**
 *
 */
package com.stylefeng.guns.modular.system.util.MallBook.model;
import cn.hutool.core.util.StrUtil;
import com.stylefeng.guns.modular.system.util.MallBook.util.StringUtil;
import java.io.Serializable;
public class InterfaceResponse implements Serializable {
    /**
     * 结果字符串,json格式
     */
    private String result;
    /**
     * 签名,由code+msg+date+result根据私钥生成, 如果有参数为null,签名串中应当做空字符串("")来处理
     */
    private String sign;
    /**
     * 结果代码
     */
    private String code;
    /**
     * 结果信息
     */
    private String msg;
    /**
     * 时间戳
     */
    private String date;
    /**
     * 接口版本号
     */
    private String version;
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public String getSign() {
        return sign;
    }
    public void setSign(String sign) {
        this.sign = sign;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    @Override
    public String toString() {
        return "InterfaceResponse{" +
                "result='" + result + '\'' +
                ", sign='" + sign + '\'' +
                ", code='" + code + '\'' +
                ", msg='" + msg + '\'' +
                ", date='" + date + '\'' +
                ", version='" + version + '\'' +
                '}';
    }
    /**
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     *  结果代码 + 结果信息 + 渠道类型 +  时间戳 + 结果字符串json
     * @return 待签名字符串
     */
    public String content() {
        return StrUtil.builder()
                .append(StringUtil.convertNull(code))
                .append(StringUtil.convertNull(msg))
                .append(StringUtil.convertNull(date))
                .append(StringUtil.convertNull(result))
                .toString();
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/QueryBalance.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class QueryBalance {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "queryBalance";
    private String userId;//子商户编号
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/QueryOrder.java
New file
@@ -0,0 +1,31 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class QueryOrder {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "queryOrder";
    /**
     * 原请求订单号
     */
    private String originalMerOrderId;
    /**
     * 查询类型
     */
    private String queryType;
    public String getOriginalMerOrderId() {
        return originalMerOrderId;
    }
    public void setOriginalMerOrderId(String originalMerOrderId) {
        this.originalMerOrderId = originalMerOrderId;
    }
    public String getQueryType() {
        return queryType;
    }
    public void setQueryType(String queryType) {
        this.queryType = queryType;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Register.java
New file
@@ -0,0 +1,193 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
/**
 * @author huangh
 * @version 1.0
 * @description
 * @date 2021/12/10 16:45
 */
public class Register {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "register";
    //业务系统会员id
    private String merUserId;
    //手机号
    private String phone;
    //子商户类型
    private String userType;
    //子商户名称
    private String userName;
    //身份证号码
    private String certId;
    //法人身份证有效期
    private String certIdExpires;
    //经营范围
    private String businessScope;
    //统一社会信用码
    private String socialCreditCode;
    //统一社会信用证有效期
    private String socialCreditCodeExpires;
    //法人手机号
    private String legalPhone;
    //法人姓名
    private String legalPerson;
    //企业地址
    private String address;
    //省份编码
    private String provCode;
    //地区编码
    private String areaCode;
    //附件编号
    private String fileNo;
    //后台回调地址
    private String notifyUrl;
    //自定义参数1
    private String parameter1;
    //自定义参数2
    private String parameter2;
    public String getMerUserId() {
        return merUserId;
    }
    public void setMerUserId(String merUserId) {
        this.merUserId = merUserId;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getUserType() {
        return userType;
    }
    public void setUserType(String userType) {
        this.userType = userType;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getCertId() {
        return certId;
    }
    public void setCertId(String certId) {
        this.certId = certId;
    }
    public String getCertIdExpires() {
        return certIdExpires;
    }
    public void setCertIdExpires(String certIdExpires) {
        this.certIdExpires = certIdExpires;
    }
    public String getBusinessScope() {
        return businessScope;
    }
    public void setBusinessScope(String businessScope) {
        this.businessScope = businessScope;
    }
    public String getSocialCreditCode() {
        return socialCreditCode;
    }
    public void setSocialCreditCode(String socialCreditCode) {
        this.socialCreditCode = socialCreditCode;
    }
    public String getSocialCreditCodeExpires() {
        return socialCreditCodeExpires;
    }
    public void setSocialCreditCodeExpires(String socialCreditCodeExpires) {
        this.socialCreditCodeExpires = socialCreditCodeExpires;
    }
    public String getLegalPhone() {
        return legalPhone;
    }
    public void setLegalPhone(String legalPhone) {
        this.legalPhone = legalPhone;
    }
    public String getLegalPerson() {
        return legalPerson;
    }
    public void setLegalPerson(String legalPerson) {
        this.legalPerson = legalPerson;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getProvCode() {
        return provCode;
    }
    public void setProvCode(String provCode) {
        this.provCode = provCode;
    }
    public String getAreaCode() {
        return areaCode;
    }
    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }
    public String getFileNo() {
        return fileNo;
    }
    public void setFileNo(String fileNo) {
        this.fileNo = fileNo;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/UnbindAccount.java
New file
@@ -0,0 +1,19 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class UnbindAccount {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "unbindAccount";
    /**
     * 子商户编号
     */
    private String userId;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/Withdraw.java
New file
@@ -0,0 +1,96 @@
package com.stylefeng.guns.modular.system.util.MallBook.model;
public class Withdraw {
    /**业务类型编号,必须和接口文档一致*/
    public static String SERVICE_CODE = "withdraw";
    /**
     * 子商户编号(必填)
     */
    private String userId;
    /**
     * 结算金额(必填)
     */
    private String amount;
    /**
     * 订单名称
     */
    private String orderName;
    /**
     * 备注
     */
    private String remark;
    /**
     * 后台回调地址(必填)
     */
    private String notifyUrl;
    /**
     * 自定义参数1
     */
    private String parameter1;
    /**
     * 自定义参数2
     */
    private String parameter2;
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getAmount() {
        return amount;
    }
    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getNotifyUrl() {
        return notifyUrl;
    }
    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }
    public String getParameter1() {
        return parameter1;
    }
    public void setParameter1(String parameter1) {
        this.parameter1 = parameter1;
    }
    public String getParameter2() {
        return parameter2;
    }
    public void setParameter2(String parameter2) {
        this.parameter2 = parameter2;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/Base64.java
New file
@@ -0,0 +1,288 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
/**
 * @Author xiaogc
 * @Date 2021/12/21 14:23
 */
public class Base64 {
    static private final int BASELENGTH = 128;
    static private final int LOOKUPLENGTH = 64;
    static private final int TWENTYFOURBITGROUP = 24;
    static private final int EIGHTBIT = 8;
    static private final int SIXTEENBIT = 16;
    static private final int FOURBYTE = 4;
    static private final int SIGN = -128;
    static private final char PAD = '=';
    static private final boolean fDebug = false;
    static final private byte[] base64Alphabet = new byte[BASELENGTH];
    static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH];
    static {
        for (int i = 0; i < BASELENGTH; ++i) {
            base64Alphabet[i] = -1;
        }
        for (int i = 'Z'; i >= 'A'; i--) {
            base64Alphabet[i] = (byte) (i - 'A');
        }
        for (int i = 'z'; i >= 'a'; i--) {
            base64Alphabet[i] = (byte) (i - 'a' + 26);
        }
        for (int i = '9'; i >= '0'; i--) {
            base64Alphabet[i] = (byte) (i - '0' + 52);
        }
        base64Alphabet['+'] = 62;
        base64Alphabet['/'] = 63;
        for (int i = 0; i <= 25; i++) {
            lookUpBase64Alphabet[i] = (char) ('A' + i);
        }
        for (int i = 26, j = 0; i <= 51; i++, j++) {
            lookUpBase64Alphabet[i] = (char) ('a' + j);
        }
        for (int i = 52, j = 0; i <= 61; i++, j++) {
            lookUpBase64Alphabet[i] = (char) ('0' + j);
        }
        lookUpBase64Alphabet[62] = (char) '+';
        lookUpBase64Alphabet[63] = (char) '/';
    }
    private static boolean isWhiteSpace(char octect) {
        return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
    }
    private static boolean isPad(char octect) {
        return (octect == PAD);
    }
    private static boolean isData(char octect) {
        return (octect < BASELENGTH && base64Alphabet[octect] != -1);
    }
    /**
     * Encodes hex octects into Base64
     *
     * @param binaryData
     *            Array containing binaryData
     * @return Encoded Base64 array
     */
    public static String encode(byte[] binaryData) {
        if (binaryData == null) {
            return null;
        }
        int lengthDataBits = binaryData.length * EIGHTBIT;
        if (lengthDataBits == 0) {
            return "";
        }
        int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
        int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
        int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1
                : numberTriplets;
        char encodedData[] = null;
        encodedData = new char[numberQuartet * 4];
        byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
        int encodedIndex = 0;
        int dataIndex = 0;
        if (fDebug) {
            System.out.println("number of triplets = " + numberTriplets);
        }
        for (int i = 0; i < numberTriplets; i++) {
            b1 = binaryData[dataIndex++];
            b2 = binaryData[dataIndex++];
            b3 = binaryData[dataIndex++];
            if (fDebug) {
                System.out.println("b1= " + b1 + ", b2= " + b2 + ", b3= " + b3);
            }
            l = (byte) (b2 & 0x0f);
            k = (byte) (b1 & 0x03);
            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2)
                    : (byte) ((b1) >> 2 ^ 0xc0);
            byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4)
                    : (byte) ((b2) >> 4 ^ 0xf0);
            byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6)
                    : (byte) ((b3) >> 6 ^ 0xfc);
            if (fDebug) {
                System.out.println("val2 = " + val2);
                System.out.println("k4   = " + (k << 4));
                System.out.println("vak  = " + (val2 | (k << 4)));
            }
            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f];
        }
        // form integral number of 6-bit groups
        if (fewerThan24bits == EIGHTBIT) {
            b1 = binaryData[dataIndex];
            k = (byte) (b1 & 0x03);
            if (fDebug) {
                System.out.println("b1=" + b1);
                System.out.println("b1<<2 = " + (b1 >> 2));
            }
            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2)
                    : (byte) ((b1) >> 2 ^ 0xc0);
            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4];
            encodedData[encodedIndex++] = PAD;
            encodedData[encodedIndex++] = PAD;
        } else if (fewerThan24bits == SIXTEENBIT) {
            b1 = binaryData[dataIndex];
            b2 = binaryData[dataIndex + 1];
            l = (byte) (b2 & 0x0f);
            k = (byte) (b1 & 0x03);
            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2)
                    : (byte) ((b1) >> 2 ^ 0xc0);
            byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4)
                    : (byte) ((b2) >> 4 ^ 0xf0);
            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
            encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2];
            encodedData[encodedIndex++] = PAD;
        }
        return new String(encodedData);
    }
    /**
     * Decodes Base64 data into octects
     *
     * @param encoded
     *            string containing Base64 data
     * @return Array containind decoded data.
     */
    public static byte[] decode(String encoded) {
        if (encoded == null) {
            return null;
        }
        char[] base64Data = encoded.toCharArray();
        // remove white spaces
        int len = removeWhiteSpace(base64Data);
        if (len % FOURBYTE != 0) {
            return null;// should be divisible by four
        }
        int numberQuadruple = (len / FOURBYTE);
        if (numberQuadruple == 0) {
            return new byte[0];
        }
        byte decodedData[] = null;
        byte b1 = 0, b2 = 0, b3 = 0, b4 = 0;
        char d1 = 0, d2 = 0, d3 = 0, d4 = 0;
        int i = 0;
        int encodedIndex = 0;
        int dataIndex = 0;
        decodedData = new byte[(numberQuadruple) * 3];
        for (; i < numberQuadruple - 1; i++) {
            if (!isData((d1 = base64Data[dataIndex++]))
                    || !isData((d2 = base64Data[dataIndex++]))
                    || !isData((d3 = base64Data[dataIndex++]))
                    || !isData((d4 = base64Data[dataIndex++]))) {
                return null;
            }// if found "no data" just return null
            b1 = base64Alphabet[d1];
            b2 = base64Alphabet[d2];
            b3 = base64Alphabet[d3];
            b4 = base64Alphabet[d4];
            decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
            decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
            decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
        }
        if (!isData((d1 = base64Data[dataIndex++]))
                || !isData((d2 = base64Data[dataIndex++]))) {
            return null;// if found "no data" just return null
        }
        b1 = base64Alphabet[d1];
        b2 = base64Alphabet[d2];
        d3 = base64Data[dataIndex++];
        d4 = base64Data[dataIndex++];
        if (!isData((d3)) || !isData((d4))) {// Check if they are PAD characters
            if (isPad(d3) && isPad(d4)) {
                if ((b2 & 0xf) != 0)// last 4 bits should be zero
                {
                    return null;
                }
                byte[] tmp = new byte[i * 3 + 1];
                System.arraycopy(decodedData, 0, tmp, 0, i * 3);
                tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
                return tmp;
            } else if (!isPad(d3) && isPad(d4)) {
                b3 = base64Alphabet[d3];
                if ((b3 & 0x3) != 0)// last 2 bits should be zero
                {
                    return null;
                }
                byte[] tmp = new byte[i * 3 + 2];
                System.arraycopy(decodedData, 0, tmp, 0, i * 3);
                tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
                tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
                return tmp;
            } else {
                return null;
            }
        } else { // No PAD e.g 3cQl
            b3 = base64Alphabet[d3];
            b4 = base64Alphabet[d4];
            decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
            decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
            decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
        }
        return decodedData;
    }
    /**
     * remove WhiteSpace from MIME containing encoded Base64 data.
     *
     * @param data
     *            the byte array of base64 data (with WS)
     * @return the new length
     */
    private static int removeWhiteSpace(char[] data) {
        if (data == null) {
            return 0;
        }
        // count characters that's not whitespace
        int newSize = 0;
        int len = data.length;
        for (int i = 0; i < len; i++) {
            if (!isWhiteSpace(data[i])) {
                data[newSize++] = data[i];
            }
        }
        return newSize;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/CacheUtils.java
New file
@@ -0,0 +1,39 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.TimedCache;
/**
 * @author linqy
 * 缓存工具类,生产建议使用其他缓存中间件
 */
public class CacheUtils {
    private static final TimedCache<String, String> TIMED_CACHE = CacheUtil.newTimedCache(5000);
    static {
        /** 每1s检查一次过期 */
        TIMED_CACHE.schedulePrune(1000);
    }
    /**
     * 存入键值对,提供消逝时间
     *
     * @param key
     * @param value
     * @param timeout
     */
    public static void put(String key, String value, Long timeout) {
        /** 设置消逝时间 */
        TIMED_CACHE.put(key, value, timeout);
    }
    /**
     * 每次重新get一次缓存,均会重新刷新消逝时间
     * @param key
     * @return
     */
    public static String get(String key) {
        return TIMED_CACHE.get(key);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/RSAEncryptGeneration.java
New file
@@ -0,0 +1,65 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
/**
 * 公私钥代码生成
 * @Author xiaogc
 * @Date 2021/12/21 14:22
 */
public class RSAEncryptGeneration {
    public static void main(String[] args) {
        // 生成一对公私钥到指定路径下  .pfx私钥 .cer公钥
        RSAEncryptGeneration.genKeyPair("D:\\tools");
    }
    /**
     * 随机生成密钥对
     */
    public static void genKeyPair(String filePath) {
        // KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
        KeyPairGenerator keyPairGen = null;
        try {
            keyPairGen = KeyPairGenerator.getInstance("RSA");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        // 初始化密钥对生成器,密钥大小为96-1024位
        keyPairGen.initialize(1024, new SecureRandom());
        // 生成一个密钥对,保存在keyPair中
        KeyPair keyPair = keyPairGen.generateKeyPair();
        // 得到私钥
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        // 得到公钥
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        try {
            // 得到公钥字符串
            String publicKeyString = Base64.encode(publicKey.getEncoded());
            System.out.println("公钥字符串:"+publicKeyString);
            // 得到私钥字符串
            String privateKeyString = Base64.encode(privateKey.getEncoded());
            System.out.println("私钥字符串:"+privateKeyString);
            // 将密钥对写入到文件  .pfx私钥 .cer公钥
            FileWriter pubfw = new FileWriter(filePath + "/merchant_no.cer");
            FileWriter prifw = new FileWriter(filePath + "/merchant_no.pfx");
            BufferedWriter pubbw = new BufferedWriter(pubfw);
            BufferedWriter pribw = new BufferedWriter(prifw);
            pubbw.write(publicKeyString);
            pribw.write(privateKeyString);
            pubbw.flush();
            pubbw.close();
            pubfw.close();
            pribw.flush();
            pribw.close();
            prifw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/RSASignature.java
New file
@@ -0,0 +1,118 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
import com.stylefeng.guns.modular.system.util.MallBook.config.ChannelConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
/**
 * @author RSA签名验签类
 */
public class RSASignature {
    public static Logger logger = LoggerFactory.getLogger(RSASignature.class);
    /**
     * 签名算法
     */
    public static final String SIGN_ALGORITHMS = "SHA1WithRSA";
    /**
     * 商户平台私钥签名
     *
     * @param content
     * @return
     */
    public static String sign(String content) {
        try {
            String privateKey = ChannelConfig.merchantPrivateKey;
            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey));
            KeyFactory keyf = KeyFactory.getInstance("RSA");
            PrivateKey priKey = keyf.generatePrivate(priPKCS8);
            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
            signature.initSign(priKey);
            signature.update(content.getBytes());
            byte[] signed = signature.sign();
            return Base64.encode(signed);
        } catch (Exception e) {
            logger.error("签名失败{}", e);
        }
        return null;
    }
    /**
     * 读取证书
     *
     * @param filePath 证书文件路径
     */
    public static String loadKey(String filePath) throws Exception {
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String readLine;
            StringBuilder sb = new StringBuilder();
            while ((readLine = br.readLine()) != null) {
                sb.append(readLine);
            }
            return sb.toString();
        } catch (IOException e) {
            throw new Exception("私钥数据读取错误");
        } catch (NullPointerException e) {
            throw new Exception("私钥输入流为空");
        }
    }
    /**
     * mallbook公钥验签
     *
     * @param content 待签名数据
     * @param sign    签名值
     * @return false 验签失败 true 成功
     */
    public static boolean validate(String content, String sign) {
        boolean verify = false;
        try {
            String publicKey = ChannelConfig.mallBookPublicKey;
            verify = RSASignature.doCheck(content, sign, publicKey, "utf-8");
        } catch (Exception e) {
            logger.error("验签失败:{}", e);
        }
        return verify;
    }
    /**
     * RSA验签
     *
     * @param content   待签名数据
     * @param sign      签名值
     * @param publicKey 分配给开发商公钥
     * @param encode    字符集编码
     * @return 布尔值
     */
    public static boolean doCheck(String content, String sign, String publicKey, String encode) {
        try {
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            byte[] encodedKey = Base64.decode(publicKey);
            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
            signature.initVerify(pubKey);
            signature.update(content.getBytes(encode));
            return signature.verify(Base64.decode(sign));
        } catch (Exception e) {
            logger.error("验签失败{}", e);
        }
        return false;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/StringUtil.java
New file
@@ -0,0 +1,23 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
import cn.hutool.core.util.StrUtil;
public class StringUtil extends StrUtil {
    /**
     * null转为空字符串
     *
     * @param str
     * @return
     */
    public static String convertNull(String str) {
        if (str == null) {
            return "";
        }
        return str;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/util/TrhRequest.java
New file
@@ -0,0 +1,35 @@
package com.stylefeng.guns.modular.system.util.MallBook.util;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.exceptions.ValidateException;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.stylefeng.guns.modular.system.util.MallBook.config.ChannelConfig;
import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceRequest;
import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * @Author xiaogc
 * @Date 2022/1/24 13:45
 */
public class TrhRequest<T> {
    Logger logger = LoggerFactory.getLogger("ServerLog");
    public InterfaceResponse execute(T t, String serverCode) {
        InterfaceRequest<T> request = new InterfaceRequest(t, serverCode);
        logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request));
        String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request));
        logger.warn("mallbook响应参数:" + result);
        InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class);
        boolean verify = RSASignature.validate(response.content(), response.getSign());
        if (!verify) {
            throw new ValidateException("签名验证失败");
        } else {
            logger.warn("签名验证通过");
        }
        return response;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -55,7 +55,9 @@
                userToCoupon.setExpireCount(validCount);
                userToCoupon.setValidCount(0);
            }
            userToCouponService.updateBatchById(collect2);
            if(collect2.size() > 0){
                userToCouponService.updateBatchById(collect2);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -68,7 +70,7 @@
    @Scheduled(cron = "0 0 0 * * *")
    public void taskDay(){
        try {
            locationService.updateFence();//更新线上电子围栏
//            locationService.updateFence();//更新线上电子围栏
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -107,7 +109,9 @@
                    tAppUser.setIsException(2);
                }
            }
            appUserService.updateBatchById(appUserList);
            if(appUserList.size() > 0){
                appUserService.updateBatchById(appUserList);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -154,7 +158,9 @@
                    }
                }
            }
            driverService.updateBatchById(driverList);
            if(driverList.size() > 0){
                driverService.updateBatchById(driverList);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -178,7 +184,9 @@
                    driver.setIsException(1);
                }
            }
            driverService.updateBatchById(driverList);
            if(driverList.size() > 0){
                driverService.updateBatchById(driverList);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
management/guns-admin/src/main/resources/application.yml
@@ -15,7 +15,8 @@
spring:
  profiles:
    active: local
#    active: dev
    active: produce
  mvc:
    static-path-pattern: /static/**
    view:
@@ -45,22 +46,14 @@
  map:
    key: e0370a9a4d10739045fb0b8f4742a67e #高德key
#eureka:
#  client:
#    service-url: #注册中心地址
#      defaultZone: http://sinata:sinata@139.9.249.67:8000/eureka #启用身份验证的方式连接
#    register-with-eureka: true #在注册中心进行注册
#    fetch-registry: true #从Eureka中获取注册信息。
---
spring:
  datasource:
    url: jdbc:mysql://192.168.110.80:3306/super_save_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
    url: jdbc:mysql://127.0.0.1:3306/super_save_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
    username: root
#    password: f4OfRjqoN3jSiNGiUoiNsQdOBtCOKYRj
    password: 123456
    password: f4OfRjqoN3jSiNGiUoiNsQdOBtCOKYRj
#    password: 123456
    db-name: super_save_driving #用来搜集数据库的所有表
    filters: wall,mergeStat
@@ -77,12 +70,34 @@
      - dataSourceGuns
      - dataSourceBiz
---
---
filePath: /usr/local/server/app/orderPostionFile/ #存储订单轨迹文件路径
#filePath: C:/orderPostionFile/  #存储订单轨迹文件路径
---
#支付回调地址
#正式环境
callbackPath: https://chaoshengdaijia.com:8443
#测试环境
#callbackPath: http://121.37.15.157:8010
#交通部推送数据功能开关
pushMinistryOfTransport: false
---
#  mallbook 调起接口参数配置
mallbook:
  # pay_url:mallbook接口地址    测试环境: https://uat.mallbook.cn/api   生产环境:https://cloudpay.mallbook.cn/api
  pay_url: https://cloudpay.mallbook.cn/api
  # merchant_no 业务系统商户平台编号,需替换为mallbook工作人员提供的商户编号
  merchant_no: MBH23056
  # version 接口版本号
  version: 1.0.0
  # channel_type 渠道类型 HF:汇付
  channel_type: HF
  # merchant_private_key 商户平台私钥,需要替换成商户平台自己生成的私钥
  merchant_private_key: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALHmyTrxPYcAwABnX+3VW9vxUftm57zBpnbfOT4vizMnKdpfCkIgtdbfdnSCtt637yWM2fxnZfItnhTeQA2lL8f4SXgZt/bVXfmAWi4IxQ+HJy0Qs8nNy2nnjICPBPcpWzHwUxQ/THHqU0a7b9B91J5DFcbQb25BHeRpHwkBw6A/AgMBAAECgYAmcWq2s/7Jt53F+JDAQkTRaHqAyyH0phwkv+QMzhVUfngK2lLLK2pf/nYIg16lDjY9dQx+AJIFHVp1w/kveayzOz3BIqPoznyIVYPolRGZCWPo+2vdp0CIdBh7zahST5g5Gem4cU47wO5hPYs1kXKPG4mUPtaIAMHFxhyLvIagAQJBAOS63AIZrRrldeNCVVNXbpAT52JuWLCgravM9coOh6scmG6UQwxxcott8hneHr9fazk2LHbHMxlG8F+dQPA0+D8CQQDHHJN7Dnske8oJ+1sq4uhQP3HMsmNIgth+ZcaZpiPcxnNKYVGhzAwTVV2ruFJle5ajebo6zfWuqJhtZGRNh1gBAkA/lRoXk1+lfGfa9tOVSVa4wm+t0xLgdqoQefdRZdyc2mQdSSWiTd8Tl0qXmkFd3X6G9uJBWnp/6lJjoektXOwtAkBsZTQsw99qJzIAaSRinpDWTxPG2j6OlR0DAqkxsG7JnAfbsEteh9TzGYAbIgdJVBTX/kbSCJn9ca85rnOkeVABAkAUbDfU3Z702z20NtwAxc1IkrtQ1lKuqSpj9/LuR1/6KRkYQsUWnUiOO9hu5YDWIcflFrnCenF8j8OnvGghltxT
  # mall_book_public_key mallbook测试环境公钥 不需要替换
  mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq6OLZKgUHH5wOk9xSBgN7yC17r3PQwMlY9/IorqrOlaIqrU0eAVZ5+dWrJD/3bdu7Ctq8n8trTm/IUYs7wtMg5SKwyX4/N+KQc2N7LL4yCq4vNl41q9sYgrtA0QnZoucIZcq1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB
management/guns-admin/src/main/resources/logback-spring.xml
@@ -1,132 +1,228 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds">
    <contextName>logback</contextName>
    <!--定义日志存放的位置-->
    <springProperty scope="context" name="gunsLogPath" source="log.path" defaultValue="guns-logs"/>
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
    <property name="log.path" value="/usr/local/server/app/logs/management"/>
    <!--<property name="log.path" value="d:/logs/driver"/>-->
    <!-- ****************************************************************************************** -->
    <!-- ****************************** 本地开发只在控制台打印日志 ******************************** -->
    <!-- ****************************************************************************************** -->
    <springProfile name="local">
    <!--0. 日志格式和颜色渲染 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!--encoder 默认配置为PatternLayoutEncoder-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
        </appender>
    <!--1. 输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
        <!-- 日志记录器,日期滚动记录 -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${gunsLogPath}/log_error.log</file>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <fileNamePattern>${gunsLogPath}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
                命名日志文件,例如log-error-2013-12-21.0.log -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>2MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 追加方式记录日志 -->
            <append>true</append>
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
            <!-- 日志文件记录级别配置。
                日志级别:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
                onMatch="ACCEPT" 表示匹配该级别及以上
                onMatch="DENY" 表示不匹配该级别及以上
                onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
                onMismatch="ACCEPT" 表示匹配该级别以下
                onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
                onMismatch="DENY" 表示不匹配该级别以下的
             -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    <!--2. 输出到文档-->
    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/debug.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE"/>
    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/info.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/warn.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/error.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件  -->
    <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/all.log</file>
        <!--日志文档输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
    </appender>
    <!--
        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
        以及指定<appender>。<logger>仅有一个name属性,
        一个可选的level和一个可选的addtivity属性。
        name:用来指定受此logger约束的某一个包或者具体的某一个类。
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
              还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。
              如果未设置此属性,那么当前logger将会继承上级的级别。
        addtivity:是否向上级logger传递打印信息。默认是true。
        <logger name="org.springframework.web" level="info"/>
        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
    -->
    <!--
        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
        不能设置为INHERITED或者同义词NULL。默认是DEBUG
        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
    -->
    <!-- 4  最终的策略:
                 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)-->
    <springProfile name="dev">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
            <appender-ref ref="ALL_FILE" />
        </root>
        <logger name="ServiceLog" level="debug"/>
        <logger name="com.supersavedriving.driver.modular.system.dao" level="debug"/>
    </springProfile>
    <!-- ****************************************************************************************** -->
    <!-- ********************** 放到服务器上不管在什么环境都只在文件记录日志 ********************** -->
    <!-- ****************************************************************************************** -->
    <springProfile name="!local">
        <!-- 日志记录器,日期滚动记录 -->
        <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${gunsLogPath}/log_error.log</file>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <fileNamePattern>${gunsLogPath}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
                命名日志文件,例如log-error-2013-12-21.0.log -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>2MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 追加方式记录日志 -->
            <append>true</append>
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
            <!-- 此日志文件只记录error级别的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>error</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 日志记录器,日期滚动记录 -->
        <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${gunsLogPath}/log_total.log</file>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <fileNamePattern>${gunsLogPath}/total/log-total-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
                命名日志文件,例如log-error-2013-12-21.0.log -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>2MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 追加方式记录日志 -->
            <append>true</append>
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
        </appender>
        <root level="INFO">
            <appender-ref ref="FILE_ERROR"/>
            <appender-ref ref="FILE_ALL"/>
    <springProfile name="fat">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
            <appender-ref ref="ALL_FILE" />
        </root>
        <logger name="ServiceLog" level="debug"/>
        <logger name="com.supersavedriving.driver.modular.system.dao" level="debug"/>
    </springProfile>
</configuration>
    <springProfile name="produce">
        <root level="info">
            <!-- 生产环境最好不配置console写文件 -->
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
            <appender-ref ref="ALL_FILE" />
        </root>
        <logger name="ServiceLog" level="debug"/>
        <logger name="com.supersavedriving.driver.modular.system.dao" level="debug"/>
    </springProfile>
</configuration>
management/guns-admin/src/main/resources/redis.properties
@@ -1,19 +1,20 @@
#redisÅäÖÿªÊ¼
# RedisÊý¾Ý¿âË÷Òý£¨Ä¬ÈÏΪ0£©
spring.redis.database=0
# Redis·þÎñÆ÷µØÖ·
#spring.redis.host=127.0.0.1
### Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú
#spring.redis.port=16379
### Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
#spring.redis.password=cKsEeyffDXG5PzNg8CIbrWxFluXrCprZ
## Redis·þÎñÆ÷µØÖ·
spring.redis.host=127.0.0.1
# Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú
spring.redis.port=6379
# Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
spring.redis.password=123456
## Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú
spring.redis.port=16379
## Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
spring.redis.password=cKsEeyffDXG5PzNg8CIbrWxFluXrCprZ
# Redis·þÎñÆ÷µØÖ·
#spring.redis.host=127.0.0.1
## Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú
#spring.redis.port=6379
## Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
#spring.redis.password=123456
# Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©
spring.redis.jedis.pool.max-active=1024
management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html
@@ -372,11 +372,16 @@
            selectMonth(value)// change 每点一次都会监听一遍
        }
    });
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
    // 进度条加载
    function loading(){
        var options = $.extend({
            percentage : $('#agentTotal').text(),
            percentage : $('#agentTotal').text()<100?$('#agentTotal').text():($('#agentTotal').text()>1000?$('#agentTotal').text()/100:$('#agentTotal').text()/10),
            ShowProgressCount: false,
            duration: 10,
@@ -389,7 +394,7 @@
        });
        $('#pro1').LineProgressbar(options);
        var options = $.extend({
            percentage : $('#agentMonthTotal').text(),
            percentage : $('#agentMonthTotal').text()<100?$('#agentMonthTotal').text():($('#agentMonthTotal').text()>1000?$('#agentMonthTotal').text()/100:$('#agentMonthTotal').text()/10),
            ShowProgressCount: false,
            duration: 10,
@@ -402,7 +407,7 @@
        });
        $('#pro2').LineProgressbar(options);
        var options = $.extend({
            percentage : $('#driverTotal').text(),
            percentage : $('#driverTotal').text()<100?$('#driverTotal').text():($('#driverTotal').text()>1000?$('#driverTotal').text()/100:$('#driverTotal').text()/10),
            ShowProgressCount: false,
            duration: 10,
@@ -415,7 +420,7 @@
        });
        $('#pro3').LineProgressbar(options);
        var options = $.extend({
            percentage : $('#driverMonthTotal').text(),
            percentage : $('#driverMonthTotal').text()<100?$('#driverMonthTotal').text():($('#driverMonthTotal').text()>1000?$('#driverMonthTotal').text()/100:$('#driverMonthTotal').text()/10),
            ShowProgressCount: false,
            duration: 10,
@@ -670,9 +675,9 @@
            document.getElementById("serverCount").innerText=data.serverCount
            document.getElementById("finishCount").innerText=data.finishCount
            document.getElementById("cancelCount").innerText=data.cancelCount
            $('#allList').val(data.allList);
            console.log(data.allList)
            map(data.allList,data.addressLon,data.addressLat)
            $('#onLineDriver').val(data.onLineDriver);
            console.log(data.onLineDriver)
            map(data.onLineDriver,data.addressLon,data.addressLat)
            getOrderData()
        }, function (data) {
@@ -690,8 +695,8 @@
            document.getElementById("serverCount").innerText=data.serverCount
            document.getElementById("finishCount").innerText=data.finishCount
            document.getElementById("cancelCount").innerText=data.cancelCount
            $('#allList').val(data.allList);
            map(data.allList,data.addressLon,data.addressLat)
            $('#onLineDriver').val(data.onLineDriver);
            map(data.onLineDriver,data.addressLon,data.addressLat)
            getOrderData()
        }, function (data) {
        });
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html
New file
@@ -0,0 +1,450 @@
@layout("/common/_container.html"){
<style type="text/css">
    table{
        width: 100%;
    }
    td, th{
        border: 1px solid #eee;
        text-align: center;
        height: 40px;
        line-height: 40px;
    }
    td select, td div, td div input, td input{
        height: 100%;
        width: 95%;
        border: none;
        text-indent: 10px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="tAgentInfoForm">
            <input type="hidden" id="provCodeEnterprise1" value="${item.provCodeEnterprise}">
            <input type="hidden" id="areaCodeEnterprise1" value="${item.areaCodeEnterprise}">
            <input type="hidden" id="provCodeBank1" value="${item.provCodeBank}">
            <input type="hidden" id="areaCodeBank1" value="${item.areaCodeBank}">
            <div class="row">
                <div class="col-sm-6">
                    <div class="form-group">
                        企业信息
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*负责人姓名:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="principal" name="principal" value="${item.principal}" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*联系电话:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="principalPhone" name="principalPhone" value="${item.principalPhone}" maxlength="11" type="number" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group" ${roleType == 1 ? 'hidden' : ''}>
                        <input id="areaId" type="hidden">
                        <label class="col-sm-3 control-label">*代理区域:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="area" onclick="TAgent.area()" name="area" value="${item.provinceName}/${item.cityName}" placeholder="请选择" readonly>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*邮箱:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="email" name="email" type="email" value="${item.email}" maxlength="40" placeholder="请输入">
                        </div>
                    </div>
                </div>
            </div>
            <div class="row" ${roleType == 1 ? 'hidden' : ''}>
                <div class="col-sm-6">
                    <div class="form-group">
                        商户信息
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*商户类型:</label>
                        <div class="col-sm-9">
                            <select class="form-control" id="userType">
                                <option value="0" ${item.userType == 0 ? 'selected' : '' }>小微商户</option>
                                <option value="1" ${item.userType == 1 ? 'selected' : '' }>个体工商户</option>
                                <option value="2" ${item.userType == 2 ? 'selected' : '' }>企业</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*姓名:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="merchantName" name="merchantName" value="${item.merchantName}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*经营范围:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="businessScope" name="businessScope" value="${item.businessScope}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*统一社会信用码:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="socialCreditCode" name="socialCreditCode" value="${item.socialCreditCode}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*统一社会信用证有效期:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="socialCreditCodeExpires" name="socialCreditCodeExpires" value="${socialCreditCodeExpires}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*地区:</label>
                        <div class="col-sm-4">
                            <select class="form-control" id="provCodeEnterprise" name="provCodeEnterprise" onchange="initArea(this, 'areaCodeEnterprise')"></select>
                        </div>
                        <div class="col-sm-4">
                            <select class="form-control" id="areaCodeEnterprise" name="areaCodeEnterprise"></select>
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*企业详细地址:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="address" name="address" value="${item.address}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*结算账户名:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="cardName" name="cardName" value="${item.cardName}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*结算账户号:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="cardNo" name="cardNo" value="${item.cardNo}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*银行账户类型:</label>
                        <div class="col-sm-9">
                            <select class="form-control" id="bankAcctType">
                                <option value="1" ${item.bankAcctType == 1 ? 'selected' : ''}>对公</option>
                                <option value="2" ${item.bankAcctType == 2 ? 'selected' : ''}>对私</option>
                            </select>
                        </div>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group">
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*法人姓名:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="legalPerson" name="legalPerson" value="${item.legalPerson}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*身份证号:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="merchantIDCode" name="merchantIDCode" value="${item.merchantIDCode}" type="text" maxlength="20" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*法人身份证有效期:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="certIdExpires" name="certIdExpires" value="${certIdExpires}">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*法人手机号:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="legalPhone" name="legalPhone" value="${item.legalPhone}" type="text" maxlength="11" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">营业执照扫描件:</label>
                        <div class="col-sm-7">
                            <input class="form-control" id="fileNo" name="fileNo" value="${item.fileNo}" value="" readonly style="height: 100%;width: 100%;border: none;"/>
                        </div>
                        <div class="col-sm-2">
                            <button class="form-control" id="fileNoBtnId">上传</button>
                        </div>
                        <input type="file" id="file" style="display: none;">
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*银行名称:</label>
                        <div class="col-sm-9">
                            <select class="form-control" id="bankCode" name="bankCode">
                                <option value="01020000" ${item.bankAcctType == '01020000' ? 'selected' : ''}>工商银行</option>
                                <option value="01030000" ${item.bankAcctType == '01030000' ? 'selected' : ''}>农业银行</option>
                                <option value="01040000" ${item.bankAcctType == '01040000' ? 'selected' : ''}>中国银行</option>
                                <option value="01050000" ${item.bankAcctType == '01050000' ? 'selected' : ''}>建设银行</option>
                                <option value="03010000" ${item.bankAcctType == '03010000' ? 'selected' : ''}>交通银行</option>
                                <option value="03134402" ${item.bankAcctType == '03134402' ? 'selected' : ''}>平安银行</option>
                                <option value="03020000" ${item.bankAcctType == '03020000' ? 'selected' : ''}>中信银行</option>
                                <option value="03030000" ${item.bankAcctType == '03030000' ? 'selected' : ''}>光大银行</option>
                                <option value="03040000" ${item.bankAcctType == '03040000' ? 'selected' : ''}>华夏银行</option>
                                <option value="03050000" ${item.bankAcctType == '03050000' ? 'selected' : ''}>民生银行</option>
                                <option value="03060000" ${item.bankAcctType == '03060000' ? 'selected' : ''}>广发银行</option>
                                <option value="03080000" ${item.bankAcctType == '03080000' ? 'selected' : ''}>招商银行</option>
                                <option value="03090000" ${item.bankAcctType == '03090000' ? 'selected' : ''}>兴业银行</option>
                                <option value="03100000" ${item.bankAcctType == '03100000' ? 'selected' : ''}>浦发银行</option>
                                <option value="03130011" ${item.bankAcctType == '03130011' ? 'selected' : ''}>北京银行</option>
                                <option value="03130012" ${item.bankAcctType == '03130012' ? 'selected' : ''}>天津银行</option>
                                <option value="03130031" ${item.bankAcctType == '03130031' ? 'selected' : ''}>上海银行</option>
                                <option value="03130032" ${item.bankAcctType == '03130032' ? 'selected' : ''}>江苏银行</option>
                                <option value="03130050" ${item.bankAcctType == '03130050' ? 'selected' : ''}>重庆银行</option>
                                <option value="03132102" ${item.bankAcctType == '03132102' ? 'selected' : ''}>大连银行</option>
                                <option value="03132301" ${item.bankAcctType == '03132301' ? 'selected' : ''}>哈尔滨银行</option>
                                <option value="03133201" ${item.bankAcctType == '03133201' ? 'selected' : ''}>南京银行</option>
                                <option value="03133301" ${item.bankAcctType == '03133301' ? 'selected' : ''}>杭州银行</option>
                                <option value="03133302" ${item.bankAcctType == '03133302' ? 'selected' : ''}>宁波银行</option>
                                <option value="03133308" ${item.bankAcctType == '03133308' ? 'selected' : ''}>温州银行</option>
                                <option value="03150000" ${item.bankAcctType == '03150000' ? 'selected' : ''}>恒丰银行</option>
                                <option value="03160000" ${item.bankAcctType == '03160000' ? 'selected' : ''}>浙商银行</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group qy">
                        <label class="col-sm-3 control-label">*开户行地区:</label>
                        <div class="col-sm-4">
                            <select class="form-control" id="provCodeBank" name="provCodeBank" onchange="initArea(this, 'areaCodeBank')"></select>
                        </div>
                        <div class="col-sm-4">
                            <select class="form-control" id="areaCodeBank" name="areaCodeBank"></select>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*银行预留手机号:</label>
                        <div class="col-sm-9">
                            <input class="form-control" id="phone" name="phone" value="${item.phone}" type="number" maxlength="11" placeholder="请输入">
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*注册状态:</label>
                        <div class="col-sm-4">
                            商户开户状态:
                        </div>
                        <div class="col-sm-4">
                            结算账户绑定状态:
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-6">
                    <div class="form-group">
                        账户信息
                    </div>
                    <div class="form-group" ${roleType != 1 ? 'hidden' : ''}>
                        <label class="col-sm-3 control-label">充值余额:</label>
                        <div class="col-sm-3">
                            <span>${marketingAmount}</span>
                        </div>
                        <div class="col-sm-3">
                            <input class="form-control" id="amount" type="number" min="0" placeholder="请输入充值金额">
                        </div>
                        <div class="col-sm-3">
                            <button onclick="accountRecharge()">充值</button>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">可提现余额:</label>
                        <div class="col-sm-3">
                            <span id="balance">${balance}</span>
                        </div>
                        <div class="col-sm-3">
                            <button onclick="withdrawCash()">提现</button>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">提现记录:</label>
                        <div class="col-sm-9">
                            <table>
                                <thead>
                                    <tr><th>提现时间</th><th>提现金额</th><th>到账时间</th></tr>
                                </thead>
                                <tbody>
                                    @for(obj in settlementRecords){
                                        <tr><td>${obj.insertTime}</td><td>${obj.amount}</td><td>${obj.arrivalTime}</td></tr>
                                    @}
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tAgent/tAgent_info.js"></script>
<script src="${ctxPath}/static/modular/system/tAgent/tAgent.js"></script>
<script src="${ctxPath}/static/js/qrcode.js"></script>
<script src="${ctxPath}/static/js/jquery.qrcode.js"></script>
<script type="text/javascript">
    var citys = [{"value":"0011","title":"北京市","cities":[{"value":"1100","title":"北京市"}]},{"value":"0012","title":"天津市","cities":[{"value":"1200","title":"天津市"}]},{"value":"0013","title":"河北省","cities":[{"value":"1301","title":"石家庄"},{"value":"1302","title":"保定"},{"value":"1303","title":"沧州"},{"value":"1304","title":"承德"},{"value":"1305","title":"邯郸"},{"value":"1306","title":"衡水"},{"value":"1307","title":"廊坊"},{"value":"1308","title":"秦皇岛"},{"value":"1309","title":"唐山"},{"value":"1310","title":"邢台"},{"value":"1311","title":"张家口"}]},{"value":"0014","title":"山西省","cities":[{"value":"1401","title":"太原"},{"value":"1402","title":"长治"},{"value":"1403","title":"大同"},{"value":"1404","title":"晋城"},{"value":"1405","title":"离石"},{"value":"1406","title":"临汾"},{"value":"1407","title":"朔州"},{"value":"1408","title":"忻州"},{"value":"1409","title":"阳泉"},{"value":"1410","title":"榆次"},{"value":"1411","title":"运城"},{"value":"1412","title":"晋中"},{"value":"1413","title":"吕梁"}]},{"value":"0015","title":"内蒙古自治区","cities":[{"value":"1501","title":"呼和浩特"},{"value":"1502","title":"包头"},{"value":"1503","title":"阿拉善"},{"value":"1504","title":"巴彦淖尔"},{"value":"1505","title":"赤峰"},{"value":"1506","title":"呼伦贝尔"},{"value":"1507","title":"乌海"},{"value":"1508","title":"乌兰察布"},{"value":"1509","title":"锡林郭勒"},{"value":"1510","title":"兴安"},{"value":"1511","title":"鄂尔多斯"},{"value":"1512","title":"通辽"},{"value":"1513","title":"满洲里"}]},{"value":"0021","title":"辽宁省","cities":[{"value":"2101","title":"沈阳"},{"value":"2102","title":"大连"},{"value":"2103","title":"鞍山"},{"value":"2104","title":"本溪"},{"value":"2105","title":"朝阳"},{"value":"2106","title":"丹东"},{"value":"2107","title":"抚顺"},{"value":"2108","title":"阜新"},{"value":"2109","title":"葫芦岛"},{"value":"2110","title":"锦州"},{"value":"2111","title":"辽阳"},{"value":"2112","title":"盘锦"},{"value":"2113","title":"铁岭"},{"value":"2114","title":"营口"}]},{"value":"0022","title":"吉林省","cities":[{"value":"2201","title":"长春"},{"value":"2202","title":"白城"},{"value":"2203","title":"白山"},{"value":"2204","title":"吉林"},{"value":"2205","title":"辽源"},{"value":"2206","title":"四平"},{"value":"2207","title":"松原"},{"value":"2208","title":"通化"},{"value":"2209","title":"延边"}]},{"value":"0023","title":"黑龙江省","cities":[{"value":"2301","title":"哈尔滨"},{"value":"2302","title":"大庆"},{"value":"2303","title":"大兴安岭"},{"value":"2304","title":"鹤岗"},{"value":"2305","title":"黑河"},{"value":"2306","title":"鸡西"},{"value":"2307","title":"佳木斯"},{"value":"2308","title":"牡丹江"},{"value":"2309","title":"七台河"},{"value":"2310","title":"齐齐哈尔"},{"value":"2311","title":"双鸭山"},{"value":"2312","title":"绥化"},{"value":"2313","title":"伊春"}]},{"value":"0031","title":"上海市","cities":[{"value":"3100","title":"上海市"}]},{"value":"0032","title":"江苏省","cities":[{"value":"3201","title":"南京"},{"value":"3202","title":"常州"},{"value":"3203","title":"淮安"},{"value":"3204","title":"连云港"},{"value":"3205","title":"南通"},{"value":"3206","title":"苏州"},{"value":"3207","title":"宿迁"},{"value":"3208","title":"泰州"},{"value":"3209","title":"无锡"},{"value":"3210","title":"徐州"},{"value":"3211","title":"盐城"},{"value":"3212","title":"扬州"},{"value":"3213","title":"镇江"},{"value":"3214","title":"胥浦"},{"value":"3215","title":"昆山"}]},{"value":"0033","title":"浙江省","cities":[{"value":"3301","title":"杭州"},{"value":"3302","title":"宁波"},{"value":"3303","title":"湖州"},{"value":"3304","title":"嘉兴"},{"value":"3305","title":"金华"},{"value":"3306","title":"绍兴"},{"value":"3307","title":"台州"},{"value":"3308","title":"温州"},{"value":"3309","title":"舟山"},{"value":"3310","title":"衢州"},{"value":"3311","title":"丽水"}]},{"value":"0034","title":"安徽省","cities":[{"value":"3401","title":"合肥"},{"value":"3402","title":"安庆"},{"value":"3403","title":"蚌埠"},{"value":"3404","title":"巢湖"},{"value":"3405","title":"池州"},{"value":"3406","title":"滁州"},{"value":"3407","title":"阜阳"},{"value":"3408","title":"淮北"},{"value":"3409","title":"淮南"},{"value":"3410","title":"黄山"},{"value":"3411","title":"六安"},{"value":"3412","title":"马鞍山"},{"value":"3414","title":"铜陵"},{"value":"3415","title":"芜湖"},{"value":"3416","title":"宣城"},{"value":"3417","title":"亳州"},{"value":"3418","title":"宿州"}]},{"value":"0035","title":"福建省","cities":[{"value":"3501","title":"福州"},{"value":"3502","title":"厦门"},{"value":"3503","title":"龙岩"},{"value":"3504","title":"南平"},{"value":"3505","title":"宁德"},{"value":"3506","title":"莆田"},{"value":"3507","title":"泉州"},{"value":"3508","title":"三明"},{"value":"3509","title":"漳州"}]},{"value":"0036","title":"江西省","cities":[{"value":"3601","title":"南昌"},{"value":"3602","title":"抚州"},{"value":"3603","title":"赣州"},{"value":"3604","title":"吉安"},{"value":"3605","title":"景德镇"},{"value":"3606","title":"九江"},{"value":"3607","title":"萍乡"},{"value":"3608","title":"上饶"},{"value":"3609","title":"新余"},{"value":"3610","title":"宜春"},{"value":"3611","title":"鹰潭"}]},{"value":"0037","title":"山东省","cities":[{"value":"3701","title":"济南"},{"value":"3702","title":"青岛"},{"value":"3703","title":"滨州"},{"value":"3704","title":"德州"},{"value":"3705","title":"东营"},{"value":"3706","title":"菏泽"},{"value":"3707","title":"济宁"},{"value":"3708","title":"莱芜"},{"value":"3709","title":"聊城"},{"value":"3710","title":"临沂"},{"value":"3711","title":"日照"},{"value":"3712","title":"泰安"},{"value":"3713","title":"威海"},{"value":"3714","title":"潍坊"},{"value":"3715","title":"烟台"},{"value":"3716","title":"枣庄"},{"value":"3717","title":"淄博"}]},{"value":"0041","title":"河南省","cities":[{"value":"4101","title":"郑州"},{"value":"4102","title":"安阳"},{"value":"4103","title":"焦作"},{"value":"4104","title":"鹤壁"},{"value":"4105","title":"开封"},{"value":"4106","title":"洛阳"},{"value":"4107","title":"南阳"},{"value":"4108","title":"平顶山"},{"value":"4109","title":"三门峡"},{"value":"4110","title":"商丘"},{"value":"4111","title":"新乡"},{"value":"4112","title":"信阳"},{"value":"4113","title":"许昌"},{"value":"4114","title":"周口"},{"value":"4115","title":"驻马店"},{"value":"4116","title":"漯河"},{"value":"4117","title":"濮阳"},{"value":"4118","title":"济源"}]},{"value":"0042","title":"湖北省","cities":[{"value":"4201","title":"武汉"},{"value":"4202","title":"鄂州"},{"value":"4203","title":"恩施"},{"value":"4204","title":"黄冈"},{"value":"4205","title":"黄石"},{"value":"4206","title":"荆门"},{"value":"4207","title":"荆州"},{"value":"4208","title":"十堰"},{"value":"4209","title":"随州"},{"value":"4210","title":"咸宁"},{"value":"4211","title":"襄樊"},{"value":"4212","title":"孝感"},{"value":"4213","title":"神农架"},{"value":"4214","title":"天门"},{"value":"4215","title":"宜昌"},{"value":"4216","title":"三峡"},{"value":"4217","title":"潜江"},{"value":"4218","title":"仙桃"}]},{"value":"0043","title":"湖南省","cities":[{"value":"4301","title":"长沙"},{"value":"4302","title":"常德"},{"value":"4303","title":"郴州"},{"value":"4304","title":"衡阳"},{"value":"4305","title":"怀化"},{"value":"4306","title":"娄底"},{"value":"4307","title":"邵阳"},{"value":"4308","title":"湘潭"},{"value":"4309","title":"湘西"},{"value":"4310","title":"益阳"},{"value":"4311","title":"永州"},{"value":"4312","title":"岳阳"},{"value":"4313","title":"张家界"},{"value":"4314","title":"株洲"},{"value":"4331","title":"吉首"}]},{"value":"0044","title":"广东省","cities":[{"value":"4401","title":"广州"},{"value":"4402","title":"深圳"},{"value":"4403","title":"潮州"},{"value":"4404","title":"东莞"},{"value":"4405","title":"佛山"},{"value":"4406","title":"惠州"},{"value":"4407","title":"江门"},{"value":"4408","title":"揭阳"},{"value":"4409","title":"茂名"},{"value":"4410","title":"梅州"},{"value":"4411","title":"清远"},{"value":"4412","title":"汕头"},{"value":"4413","title":"汕尾"},{"value":"4414","title":"韶关"},{"value":"4415","title":"阳江"},{"value":"4416","title":"云浮"},{"value":"4417","title":"湛江"},{"value":"4418","title":"肇庆"},{"value":"4419","title":"中山"},{"value":"4420","title":"河源"},{"value":"4421","title":"珠海"}]},{"value":"0045","title":"广西壮族自治区","cities":[{"value":"4501","title":"南宁"},{"value":"4502","title":"百色"},{"value":"4503","title":"北海"},{"value":"4504","title":"桂林"},{"value":"4505","title":"河池"},{"value":"4506","title":"柳州"},{"value":"4507","title":"梧州"},{"value":"4508","title":"玉林"},{"value":"4509","title":"崇左"},{"value":"4510","title":"防城港"},{"value":"4511","title":"贵港"},{"value":"4512","title":"贺州"},{"value":"4513","title":"来宾"},{"value":"4514","title":"钦州"}]},{"value":"0046","title":"海南省","cities":[{"value":"4601","title":"海口"},{"value":"4602","title":"三亚"},{"value":"4603","title":"白沙"},{"value":"4604","title":"保亭"},{"value":"4605","title":"昌江"},{"value":"4606","title":"澄迈"},{"value":"4607","title":"儋州"},{"value":"4608","title":"定安"},{"value":"4609","title":"东方"},{"value":"4610","title":"乐东"},{"value":"4611","title":"临高"},{"value":"4612","title":"陵水"},{"value":"4613","title":"琼海"},{"value":"4614","title":"琼中"},{"value":"4615","title":"屯昌"},{"value":"4616","title":"万宁"},{"value":"4617","title":"文昌"},{"value":"4618","title":"五指山"},{"value":"4619","title":"洋浦"}]},{"value":"0050","title":"重庆市","cities":[{"value":"5000","title":"重庆市"}]},{"value":"0051","title":"四川省","cities":[{"value":"5101","title":"成都"},{"value":"5102","title":"巴中"},{"value":"5103","title":"达州"},{"value":"5104","title":"德阳"},{"value":"5105","title":"广安"},{"value":"5106","title":"广元"},{"value":"5107","title":"乐山"},{"value":"5108","title":"凉山"},{"value":"5109","title":"眉山"},{"value":"5110","title":"绵阳"},{"value":"5111","title":"南充"},{"value":"5112","title":"内江"},{"value":"5113","title":"攀枝花"},{"value":"5114","title":"遂宁"},{"value":"5115","title":"雅安"},{"value":"5116","title":"宜宾"},{"value":"5117","title":"自贡"},{"value":"5118","title":"泸州"},{"value":"5119","title":"阿坝"},{"value":"5120","title":"甘孜"},{"value":"5121","title":"资阳"}]},{"value":"0052","title":"贵州省","cities":[{"value":"5201","title":"贵阳"},{"value":"5202","title":"安顺"},{"value":"5203","title":"毕节"},{"value":"5204","title":"六盘水"},{"value":"5205","title":"铜仁"},{"value":"5206","title":"遵义"},{"value":"5207","title":"黔东南"},{"value":"5208","title":"黔南"},{"value":"5209","title":"黔西南"}]},{"value":"0053","title":"云南省","cities":[{"value":"5301","title":"昆明"},{"value":"5302","title":"西双版纳"},{"value":"5303","title":"保山"},{"value":"5304","title":"楚雄"},{"value":"5305","title":"大理"},{"value":"5306","title":"德宏"},{"value":"5307","title":"红河"},{"value":"5308","title":"丽江"},{"value":"5309","title":"临沧"},{"value":"5310","title":"怒江"},{"value":"5311","title":"曲靖"},{"value":"5312","title":"思茅"},{"value":"5313","title":"文山"},{"value":"5314","title":"玉溪"},{"value":"5315","title":"昭通"},{"value":"5316","title":"中甸"},{"value":"5317","title":"迪庆州"}]},{"value":"0054","title":"西藏自治区","cities":[{"value":"5401","title":"拉萨"},{"value":"5402","title":"阿里"},{"value":"5403","title":"昌都"},{"value":"5404","title":"林芝"},{"value":"5405","title":"那曲"},{"value":"5406","title":"日喀则"},{"value":"5407","title":"山南"},{"value":"5424","title":"樟木口岸"}]},{"value":"0061","title":"陕西省","cities":[{"value":"6101","title":"西安"},{"value":"6102","title":"安康"},{"value":"6103","title":"宝鸡"},{"value":"6104","title":"汉中"},{"value":"6105","title":"商洛"},{"value":"6106","title":"铜川"},{"value":"6107","title":"渭南"},{"value":"6108","title":"咸阳"},{"value":"6109","title":"延安"},{"value":"6110","title":"榆林"}]},{"value":"0062","title":"甘肃省","cities":[{"value":"6201","title":"兰州"},{"value":"6202","title":"白银"},{"value":"6203","title":"定西"},{"value":"6204","title":"东风"},{"value":"6205","title":"合作"},{"value":"6206","title":"嘉峪关"},{"value":"6207","title":"金昌"},{"value":"6208","title":"酒泉"},{"value":"6209","title":"矿区"},{"value":"6210","title":"临夏"},{"value":"6211","title":"陇南"},{"value":"6212","title":"平凉"},{"value":"6213","title":"庆阳"},{"value":"6214","title":"天水"},{"value":"6215","title":"武威"},{"value":"6216","title":"张掖"},{"value":"6217","title":"甘南州"}]},{"value":"0063","title":"青海省","cities":[{"value":"6301","title":"西宁"},{"value":"6302","title":"海东"},{"value":"6322","title":"海北"},{"value":"6323","title":"黄南"},{"value":"6325","title":"海南"},{"value":"6326","title":"果洛"},{"value":"6327","title":"玉树"},{"value":"6328","title":"海西"}]},{"value":"0064","title":"宁夏回族自治区","cities":[{"value":"6401","title":"银川"},{"value":"6402","title":"中卫"},{"value":"6403","title":"固原"},{"value":"6404","title":"石嘴山"},{"value":"6405","title":"吴忠"}]},{"value":"0065","title":"新疆维吾尔自治区","cities":[{"value":"6501","title":"乌鲁木齐"},{"value":"6502","title":"阿克苏"},{"value":"6503","title":"阿勒泰"},{"value":"6504","title":"巴州"},{"value":"6505","title":"博州"},{"value":"6506","title":"昌吉"},{"value":"6507","title":"哈密"},{"value":"6508","title":"和田"},{"value":"6509","title":"喀什"},{"value":"6510","title":"克拉玛依"},{"value":"6511","title":"马兰"},{"value":"6512","title":"石河子"},{"value":"6513","title":"塔城"},{"value":"6514","title":"吐鲁番"},{"value":"6515","title":"伊犁"},{"value":"6516","title":"克州"},{"value":"6517","title":"阿拉尔"},{"value":"6518","title":"五家渠"}]},{"value":"2003","title":"台湾省","cities":[{"value":"9903","title":"台湾省"}]},{"value":"2001","title":"香港特别行政区","cities":[{"value":"9901","title":"香港特别行政区"}]},{"value":"2002","title":"澳门特别行政区","cities":[{"value":"9902","title":"澳门特别行政区"}]}];
    laydate.render({
        elem: '#socialCreditCodeExpires',
        type: "date"
    });
    laydate.render({
        elem: '#certIdExpires',
        type: "date"
    });
    $('#userType').change(function () {
        let userType = $(this).val();
        if(userType == 0){
            $('.qy').hide();
            $('#bankAcctType').html('<option value="2">对私</option>')
            $('#merchantIDCode').parent('div').siblings('label').text('*身份证号')
            $('#merchantName').parent('div').siblings('label').text('*姓名')
        }else{
            $('.qy').show();
            $('#bankAcctType').html('<option value="1">对公</option>')
            $('#merchantIDCode').parent('div').siblings('label').text('*法人身份证号')
            $('#merchantName').parent('div').siblings('label').text('*公司名称')
        }
    })
    function initCity(id) {
        let city = "";
        for(let i in citys){
            let p = citys[i];
            city += '<option value="' + p.value + '">' +  p.title+ '</option>'
        }
        $('#' + id).html(city);
    }
    function initArea(e, id) {
        let city = "";
        let cityCode = $(e).val();
        for(let i in citys){
            let p = citys[i];
            if(p.value == cityCode){
                let a = p.cities;
                for(let j in a){
                    city += '<option value="' + a[j].value + '">' +  a[j].title+ '</option>'
                }
                break;
            }
        }
        $('#' + id).html(city);
    }
    $('#fileNoBtnId').click(function () {
        $('#file').click();
    })
    $('#file').change(function () {
        var formData = new FormData();
        formData.append('file', $('#file')[0].files[0])
        $.ajax({
            url : Feng.ctxPath + "/tAgent/uploadFile",
            type : "POST",
            data : formData,
            contentType : false,
            processData : false,
            success : function(data) {
                if("" == data){
                    Feng.error("上传失败");
                }else{
                    $('#fileNo').val(data);
                    $('#file').val('');
                    Feng.success("上传成功!");
                }
            },
            error : function() {
                Feng.error("上传失败");
            }
        })
    })
    function withdrawCash(){
        $.ajax({
            url : Feng.ctxPath + "/tAgent/withdrawCash",
            type : "POST",
            success : function(data) {
                if(data.code == 200){
                    Feng.success("提现成功!");
                    document.location.reload();
                }else{
                    Feng.error(data.msg);
                }
            },
            error : function() {
                Feng.error("提现失败");
            }
        })
    }
    function accountRecharge(){
        let amount = $('#amount').val();
        if(null == amount || '' == amount || 0 >= amount){
            Feng.error("请填入有效的充值金额");
            return
        }
        $.ajax({
            url : Feng.ctxPath + "/tAgent/accountRecharge",
            type : "POST",
            data: {
                amount: amount
            },
            success : function(data) {
                if(data.code == 200){
                    const str = '<div class="row">\n' +
                        '                <div class="form-group" style="height: 50px;">\n' +
                        '                    <div class="col-sm-8">\n' +
                        '                        <div id="canvas"></div>\n' +
                        '                    </div>\n' +
                        '                </div>\n' +
                        '       </div>'
                    layer.open({
                        type: 1
                        ,title: '支付宝收款二维码'
                        ,area: ['343px', '386px']
                        ,offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
                        ,id: 'layerDemo' //防止重复弹出
                        ,content: '<div style="padding: 20px">' + str + '</div>'
                        ,btnAlign: 'c' //按钮居中
                        ,shade: 0.5 //不显示遮罩
                    });
                    $("#canvas").qrcode({
                        render: "canvas", //设置渲染方式:table和canvas,使用canvas方式性能相对来说比较好.
                        width: 300, //默认宽度
                        height: 300, //默认高度
                        typeNumber: -1, //计算模式一般默认为-1
                        correctLevel: 2, //二维码纠错级别
                        background: "#ffffff", //背景颜色
                        foreground: "#000000", //二维码颜色
                        text: data.data, //二维码内容:可以直接填一个网址
                    });
                }else{
                    Feng.error(data.msg);
                }
            },
            error : function() {
                Feng.error("提现失败");
            }
        })
    }
    $(function () {
        initCity('provCodeBank');
        initCity('provCodeEnterprise');
        $('#provCodeBank').val($('#provCodeBank1').val());
        initArea($('#provCodeBank'), 'areaCodeBank');
        $('#areaCodeBank').val($('#areaCodeBank1').val());
        $('#provCodeEnterprise').val($('#provCodeEnterprise1').val());
        initArea($('#provCodeEnterprise'), 'areaCodeEnterprise');
        $('#areaCodeEnterprise').val($('#areaCodeEnterprise1').val());
        $('#userType').change();
    })
</script>
@}
Diff truncated after the above file
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentArea.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigBalanceRules.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigCommissionShareRules.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigDispatchRules.html management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html management/guns-admin/src/main/webapp/static/js/jquery.qrcode.js management/guns-admin/src/main/webapp/static/js/qrcode.js management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent_info.js management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js management/guns-admin/src/main/webapp/static/modular/system/user/user_info.js management/guns-core/guns-core.iml management/guns-generator/guns-generator.iml management/guns-logs/error/log-error-2023-07-24.0.log management/guns-logs/log_error.log management/guns-logs/log_total.log management/guns-parent.iml super_save_driving.sql user/guns-admin/src/main/java/com/supersavedriving/user/core/common/constant/JwtConstants.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/HtmlController.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/OrderMapper.xml user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/RechargeRecordMapper.xml user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/DivisionRecord.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IOrderService.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/DriverServiceImpl.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/config/ChannelConfig.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/model/QueryOrder.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderInfoWarpper.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPriceInfoWarpper.java user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPriceWarpper.java user/guns-admin/src/main/resources/application.yml user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java zuul/src/main/resources/application.yml zuul/src/main/resources/redis.properties