jiangping
2025-06-17 64fa2c33cd645e86d4e2a8c34c7881ea4aa678cf
代码初始化
已添加35个文件
已删除26个文件
已复制2个文件
已修改36个文件
已重命名5个文件
1561 ■■■■ 文件已修改
.idea/libraries/Maven__com_azure_azure_core_1_49_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_core_1_55_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_core_http_netty_1_15_11.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_identity_1_15_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_json_1_1_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_json_1_5_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_security_keyvault_secrets_4_9_4.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_blob_12_14_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_blob_12_30_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_common_12_25_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_common_12_29_0.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_internal_avro_12_11_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_storage_internal_avro_12_15_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_xml_1_2_0.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_xml_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_jaxb_annotations_2_10_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_github_stephenc_jcip_jcip_annotations_1_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_microsoft_azure_msal4j_1_19_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_microsoft_azure_msal4j_persistence_extension_1_3_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_nimbusds_content_type_2_3.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_nimbusds_lang_tag_1_7.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_nimbusds_nimbus_jose_jwt_10_0_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_nimbusds_oauth2_oidc_sdk_11_23.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_buffer_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_buffer_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_dns_4_1_118_Final.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_http2_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_http_4_1_118_Final.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_socks_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_codec_socks_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_common_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_common_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_handler_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_handler_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_handler_proxy_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_handler_proxy_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_4_1_118_Final.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_classes_macos_4_1_107_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_classes_macos_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_native_macos_osx_x86_64_4_1_107_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_resolver_dns_native_macos_osx_x86_64_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_4_1_118_Final.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_classes_epoll_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_classes_kqueue_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_118_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_45_Final.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_core_1_0_43.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_core_1_0_48.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_http_1_0_43.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_http_1_0_48.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__io_projectreactor_reactor_core_3_3_3_RELEASE.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__net_minidev_accessors_smart_2_5_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__net_minidev_json_smart_2_5_2.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__org_ow2_asm_asm_9_7_1.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.test 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/package-lock.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/dict.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaManagersWindow.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/RichEditor.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/qrcodes.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDbh.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDcaChild.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/common/PublicCloudController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/system/SystemDictController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/biz/system/impl/SystemJobTriggerBizImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/quartz/JobInitializer.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/constants/Constants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/HttpsUtil.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/azure/AzureBlobUtil.java 146 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/model/Company.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/model/Managers.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/vo/CompanyTree.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/system/model/SystemDictData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/system/vo/SystemQrcodeListVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/ManagersServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/common/EmailService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/system/SystemDictService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-dev.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-pro.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-test.yml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/logback-spring.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
startsh/admin_start.sh 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__com_azure_azure_core_1_49_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_azure_azure_core_1_55_3.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-core:1.55.3">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core/1.55.3/azure-core-1.55.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core/1.55.3/azure-core-1.55.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core/1.55.3/azure-core-1.55.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_core_http_netty_1_15_11.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-core-http-netty:1.15.11">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.11/azure-core-http-netty-1.15.11.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.11/azure-core-http-netty-1.15.11-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.11/azure-core-http-netty-1.15.11-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_identity_1_15_4.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-identity:1.15.4">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-identity/1.15.4/azure-identity-1.15.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-identity/1.15.4/azure-identity-1.15.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-identity/1.15.4/azure-identity-1.15.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_json_1_1_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_azure_azure_json_1_5_0.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-json:1.5.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-json/1.5.0/azure-json-1.5.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-json/1.5.0/azure-json-1.5.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-json/1.5.0/azure-json-1.5.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_security_keyvault_secrets_4_9_4.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-security-keyvault-secrets:4.9.4">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-security-keyvault-secrets/4.9.4/azure-security-keyvault-secrets-4.9.4.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-security-keyvault-secrets/4.9.4/azure-security-keyvault-secrets-4.9.4-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-security-keyvault-secrets/4.9.4/azure-security-keyvault-secrets-4.9.4-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_storage_blob_12_14_1.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_azure_azure_storage_blob_12_30_0.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-storage-blob:12.30.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-blob/12.30.0/azure-storage-blob-12.30.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-blob/12.30.0/azure-storage-blob-12.30.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-blob/12.30.0/azure-storage-blob-12.30.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_storage_common_12_25_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_azure_azure_storage_common_12_29_0.xml
ÎļþÃû´Ó .idea/libraries/Maven__com_azure_azure_core_http_netty_1_15_0.xml ÐÞ¸Ä
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-core-http-netty:1.15.0">
  <library name="Maven: com.azure:azure-storage-common:12.29.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.0/azure-core-http-netty-1.15.0.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-common/12.29.0/azure-storage-common-12.29.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.0/azure-core-http-netty-1.15.0-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-common/12.29.0/azure-storage-common-12.29.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-core-http-netty/1.15.0/azure-core-http-netty-1.15.0-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-common/12.29.0/azure-storage-common-12.29.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_storage_internal_avro_12_11_0.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_azure_azure_storage_internal_avro_12_15_0.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-storage-internal-avro:12.15.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-internal-avro/12.15.0/azure-storage-internal-avro-12.15.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-internal-avro/12.15.0/azure-storage-internal-avro-12.15.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-storage-internal-avro/12.15.0/azure-storage-internal-avro-12.15.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_azure_azure_xml_1_2_0.xml
ÎļþÃû´Ó .idea/libraries/Maven__com_azure_azure_xml_1_0_0.xml ÐÞ¸Ä
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-xml:1.0.0">
  <library name="Maven: com.azure:azure-xml:1.2.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.2.0/azure-xml-1.2.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.2.0/azure-xml-1.2.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.2.0/azure-xml-1.2.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_xml_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_jaxb_annotations_2_10_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__com_github_stephenc_jcip_jcip_annotations_1_0_1.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.github.stephenc.jcip:jcip-annotations:1.0-1">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_microsoft_azure_msal4j_1_19_1.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.microsoft.azure:msal4j:1.19.1">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j/1.19.1/msal4j-1.19.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j/1.19.1/msal4j-1.19.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j/1.19.1/msal4j-1.19.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_microsoft_azure_msal4j_persistence_extension_1_3_0.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.microsoft.azure:msal4j-persistence-extension:1.3.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j-persistence-extension/1.3.0/msal4j-persistence-extension-1.3.0.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j-persistence-extension/1.3.0/msal4j-persistence-extension-1.3.0-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/microsoft/azure/msal4j-persistence-extension/1.3.0/msal4j-persistence-extension-1.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_nimbusds_content_type_2_3.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.nimbusds:content-type:2.3">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/content-type/2.3/content-type-2.3.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/content-type/2.3/content-type-2.3-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/content-type/2.3/content-type-2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_nimbusds_lang_tag_1_7.xml
copy from .idea/libraries/Maven__com_azure_azure_xml_1_0_0.xml copy to .idea/libraries/Maven__com_nimbusds_lang_tag_1_7.xml
Îļþ´Ó .idea/libraries/Maven__com_azure_azure_xml_1_0_0.xml ¸´ÖÆ
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.azure:azure-xml:1.0.0">
  <library name="Maven: com.nimbusds:lang-tag:1.7">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/lang-tag/1.7/lang-tag-1.7.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/lang-tag/1.7/lang-tag-1.7-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/azure/azure-xml/1.0.0/azure-xml-1.0.0-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/lang-tag/1.7/lang-tag-1.7-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_nimbusds_nimbus_jose_jwt_10_0_1.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.nimbusds:nimbus-jose-jwt:10.0.1">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/nimbus-jose-jwt/10.0.1/nimbus-jose-jwt-10.0.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/nimbus-jose-jwt/10.0.1/nimbus-jose-jwt-10.0.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/nimbus-jose-jwt/10.0.1/nimbus-jose-jwt-10.0.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__com_nimbusds_oauth2_oidc_sdk_11_23.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: com.nimbusds:oauth2-oidc-sdk:11.23">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/oauth2-oidc-sdk/11.23/oauth2-oidc-sdk-11.23.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/oauth2-oidc-sdk/11.23/oauth2-oidc-sdk-11.23-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/com/nimbusds/oauth2-oidc-sdk/11.23/oauth2-oidc-sdk-11.23-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_buffer_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-buffer:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-buffer/4.1.118.Final/netty-buffer-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-buffer/4.1.118.Final/netty-buffer-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-buffer/4.1.118.Final/netty-buffer-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_buffer_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_codec_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec/4.1.118.Final/netty-codec-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec/4.1.118.Final/netty-codec-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec/4.1.118.Final/netty-codec-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_codec_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_codec_dns_4_1_118_Final.xml
ÎļþÃû´Ó .idea/libraries/Maven__io_netty_netty_codec_http_4_1_45_Final.xml ÐÞ¸Ä
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-http:4.1.45.Final">
  <library name="Maven: io.netty:netty-codec-dns:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.118.Final/netty-codec-dns-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.118.Final/netty-codec-dns-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.118.Final/netty-codec-dns-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_codec_http2_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-http2:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.118.Final/netty-codec-http2-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.118.Final/netty-codec-http2-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.118.Final/netty-codec-http2-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_codec_http_4_1_118_Final.xml
ÎļþÃû´Ó .idea/libraries/Maven__io_netty_netty_codec_http2_4_1_45_Final.xml ÐÞ¸Ä
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-http2:4.1.45.Final">
  <library name="Maven: io.netty:netty-codec-http:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.45.Final/netty-codec-http2-4.1.45.Final.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.118.Final/netty-codec-http-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.45.Final/netty-codec-http2-4.1.45.Final-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.118.Final/netty-codec-http-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http2/4.1.45.Final/netty-codec-http2-4.1.45.Final-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.118.Final/netty-codec-http-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_codec_socks_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-socks:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-socks/4.1.118.Final/netty-codec-socks-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-socks/4.1.118.Final/netty-codec-socks-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-socks/4.1.118.Final/netty-codec-socks-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_codec_socks_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_common_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-common:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-common/4.1.118.Final/netty-common-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-common/4.1.118.Final/netty-common-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-common/4.1.118.Final/netty-common-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_common_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_handler_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-handler:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler/4.1.118.Final/netty-handler-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler/4.1.118.Final/netty-handler-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler/4.1.118.Final/netty-handler-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_handler_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_handler_proxy_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-handler-proxy:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler-proxy/4.1.118.Final/netty-handler-proxy-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler-proxy/4.1.118.Final/netty-handler-proxy-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-handler-proxy/4.1.118.Final/netty-handler-proxy-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_handler_proxy_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_4_1_118_Final.xml
ÎļþÃû´Ó .idea/libraries/Maven__io_netty_netty_codec_dns_4_1_45_Final.xml ÐÞ¸Ä
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-dns:4.1.45.Final">
  <library name="Maven: io.netty:netty-resolver:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.45.Final/netty-codec-dns-4.1.45.Final.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver/4.1.118.Final/netty-resolver-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.45.Final/netty-codec-dns-4.1.45.Final-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver/4.1.118.Final/netty-resolver-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-dns/4.1.45.Final/netty-codec-dns-4.1.45.Final-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver/4.1.118.Final/netty-resolver-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_resolver_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-resolver-dns:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns/4.1.118.Final/netty-resolver-dns-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns/4.1.118.Final/netty-resolver-dns-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns/4.1.118.Final/netty-resolver-dns-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_resolver_dns_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_dns_classes_macos_4_1_107_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_dns_classes_macos_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-classes-macos/4.1.118.Final/netty-resolver-dns-classes-macos-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-classes-macos/4.1.118.Final/netty-resolver-dns-classes-macos-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-classes-macos/4.1.118.Final/netty-resolver-dns-classes-macos-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_resolver_dns_native_macos_osx_x86_64_4_1_107_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_resolver_dns_native_macos_osx_x86_64_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-native-macos/4.1.118.Final/netty-resolver-dns-native-macos-4.1.118.Final-osx-x86_64.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-native-macos/4.1.118.Final/netty-resolver-dns-native-macos-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-resolver-dns-native-macos/4.1.118.Final/netty-resolver-dns-native-macos-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_4_1_118_Final.xml
copy from .idea/libraries/Maven__io_netty_netty_codec_http_4_1_45_Final.xml copy to .idea/libraries/Maven__io_netty_netty_transport_4_1_118_Final.xml
Îļþ´Ó .idea/libraries/Maven__io_netty_netty_codec_http_4_1_45_Final.xml ¸´ÖÆ
@@ -1,13 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-codec-http:4.1.45.Final">
  <library name="Maven: io.netty:netty-transport:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport/4.1.118.Final/netty-transport-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final-javadoc.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport/4.1.118.Final/netty-transport-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-codec-http/4.1.45.Final/netty-codec-http-4.1.45.Final-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport/4.1.118.Final/netty-transport-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_transport_classes_epoll_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-classes-epoll:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-epoll/4.1.118.Final/netty-transport-classes-epoll-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-epoll/4.1.118.Final/netty-transport-classes-epoll-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-epoll/4.1.118.Final/netty-transport-classes-epoll-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_classes_kqueue_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-classes-kqueue:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-kqueue/4.1.118.Final/netty-transport-classes-kqueue-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-kqueue/4.1.118.Final/netty-transport-classes-kqueue-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-classes-kqueue/4.1.118.Final/netty-transport-classes-kqueue-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-epoll/4.1.118.Final/netty-transport-native-epoll-4.1.118.Final-linux-x86_64.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-epoll/4.1.118.Final/netty-transport-native-epoll-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-epoll/4.1.118.Final/netty-transport-native-epoll-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-kqueue/4.1.118.Final/netty-transport-native-kqueue-4.1.118.Final-osx-x86_64.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-kqueue/4.1.118.Final/netty-transport-native-kqueue-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-kqueue/4.1.118.Final/netty-transport-native-kqueue-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_native_kqueue_osx_x86_64_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_118_Final.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.netty:netty-transport-native-unix-common:4.1.118.Final">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-unix-common/4.1.118.Final/netty-transport-native-unix-common-4.1.118.Final.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-unix-common/4.1.118.Final/netty-transport-native-unix-common-4.1.118.Final-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/netty/netty-transport-native-unix-common/4.1.118.Final/netty-transport-native-unix-common-4.1.118.Final-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_netty_netty_transport_native_unix_common_4_1_45_Final.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_core_1_0_43.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_core_1_0_48.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.projectreactor.netty:reactor-netty-core:1.0.48">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-core/1.0.48/reactor-netty-core-1.0.48.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-core/1.0.48/reactor-netty-core-1.0.48-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-core/1.0.48/reactor-netty-core-1.0.48-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_http_1_0_43.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__io_projectreactor_netty_reactor_netty_http_1_0_48.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: io.projectreactor.netty:reactor-netty-http:1.0.48">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-http/1.0.48/reactor-netty-http-1.0.48.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-http/1.0.48/reactor-netty-http-1.0.48-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/io/projectreactor/netty/reactor-netty-http/1.0.48/reactor-netty-http-1.0.48-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__io_projectreactor_reactor_core_3_3_3_RELEASE.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_2.xml
ÎļþÒÑɾ³ý
.idea/libraries/Maven__net_minidev_accessors_smart_2_5_2.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:accessors-smart:2.5.2">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/accessors-smart/2.5.2/accessors-smart-2.5.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/accessors-smart/2.5.2/accessors-smart-2.5.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/accessors-smart/2.5.2/accessors-smart-2.5.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__net_minidev_json_smart_2_5_2.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: net.minidev:json-smart:2.5.2">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/json-smart/2.5.2/json-smart-2.5.2.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/json-smart/2.5.2/json-smart-2.5.2-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/net/minidev/json-smart/2.5.2/json-smart-2.5.2-sources.jar!/" />
    </SOURCES>
  </library>
</component>
.idea/libraries/Maven__org_ow2_asm_asm_9_7_1.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<component name="libraryTable">
  <library name="Maven: org.ow2.asm:asm:9.7.1">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/org/ow2/asm/asm/9.7.1/asm-9.7.1.jar!/" />
    </CLASSES>
    <JAVADOC>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/org/ow2/asm/asm/9.7.1/asm-9.7.1-javadoc.jar!/" />
    </JAVADOC>
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/../../../maven/repository/org/ow2/asm/asm/9.7.1/asm-9.7.1-sources.jar!/" />
    </SOURCES>
  </library>
</component>
admin/.env.test
@@ -4,4 +4,4 @@
# å…³é—­DEBUG
VUE_APP_DEBUG = 'off'
VUE_APP_API_URL  = 'https://test.doumee.cn/lianhelihua_interface'
VUE_APP_API_URL  = 'https://lkshereporting-dev.unilever-china.com/lianhelihua_interface'
admin/lianhelihua_admin/index.html
@@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.27efc902.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.fd387514.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.fd387514.js"></script><script src="/lianhelihua_admin/static/js/app.27efc902.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.94e81d49.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.52ca84c8.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.52ca84c8.js"></script><script src="/lianhelihua_admin/static/js/app.94e81d49.js"></script></body></html>
admin/package-lock.json
@@ -11037,6 +11037,11 @@
      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
      "dev": true
    },
    "qrcodejs2": {
      "version": "0.0.2",
      "resolved": "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
      "integrity": "sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA=="
    },
    "qs": {
      "version": "6.5.2",
      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz",
admin/package.json
@@ -4,7 +4,7 @@
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "serve:test": "vue-cli-service serve --mode test",
    "servetest": "vue-cli-service serve --mode test",
    "build:test": "vue-cli-service build --mode test",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
@@ -17,6 +17,7 @@
    "axios": "^0.21.1",
    "core-js": "^3.6.5",
    "crypto-js": "^4.1.1",
    "qrcodejs2": "0.0.2",
    "dayjs": "^1.11.0",
    "echarts": "^5.6.0",
    "element-ui": "^2.3.6",
admin/src/api/system/dict.js
@@ -5,6 +5,9 @@
export function fetchList (data) {
  return request.post('/system/dict/page', data)
}
export function qrcodeList (data) {
  return request.post('/system/dict/qrcodeList', data)
}
// æ–°å»º
export function create (data) {
admin/src/components/business/OperaManagersWindow.vue
@@ -8,13 +8,13 @@
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="设置范围" prop="isMember" :required="true">
        <el-radio-group v-model="form.isMember">
          <el-radio :label="0">直属部门员工</el-radio>
          <el-radio :label="1">部门及其下级部门员工</el-radio>
          <el-radio :label="0">选择部门</el-radio>
<!--          <el-radio :label="1">部门及其下级部门员工</el-radio>-->
          <el-radio :label="2">指定人员</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="所属组织" prop="companyId" v-if="form.isMember==0 || form.isMember==1"  :required="true">
        <treeselect
      <el-form-item label="所属组织" prop="companyIds" v-if="form.isMember==0 || form.isMember==1"  :required="true">
<!--        <treeselect
            v-model="form.companyId"
            placeholder="请选择"
            :options="companyTree"
@@ -22,7 +22,18 @@
            :default-expand-level="1"
            noChildrenText="没有子选项"
            noOptionsText="没有可选项"
            noResultsText="没有匹配的结果" />
            noResultsText="没有匹配的结果" />-->
        <el-tree
            ref="tree"
            :data="companyTree"
            show-checkbox
            node-key="id"
            default-expand-all
            @check-change="changeTree"
            :expand-on-click-node="false"
            :check-on-click-node="true"
            :props="{children: 'childList',label: 'name'}">
        </el-tree>
      </el-form-item>
      <el-form-item  label="选择负责人:" prop="memberIds" v-if="form.isMember==2" :required="true">
        <el-select v-model="form.memberIds" filterable :multiple="true" :loading="loading"  placeholder="可输入姓名 | æ‰‹æœºå· | éƒ¨é—¨åç§°è¿›è¡Œæœç´¢">
@@ -54,6 +65,8 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/business/member'
import { treeList } from '@/api/business/company'
import { createRoleMenu } from '@/api/system/role'
import { create } from '@/api/business/managers'
export default {
  name: 'OperaManagersWindow',
@@ -67,6 +80,7 @@
        companyId: null,
        memberId: '',
        memberIds: [],
        companyIds: [],
        remark: '',
        isQw: 0,
        isEmail: 0,
@@ -78,9 +92,9 @@
      // éªŒè¯è§„则
      rules: {
        memberIds: [
          { required: true ,message: '请选择负责人' }
          { required: true, message: '请选择负责人' }
        ],
        companyId: [
        companyIds: [
          { required: true, message: '请选择部门' }
        ],
        isMember: [
@@ -96,12 +110,20 @@
    })
  },
  methods: {
    changeTree(){
      const selectedMenus = this.$refs.tree.getCheckedNodes(false, true)
      this.form.companyIds = selectedMenus.map(menu => menu.id)
      console.log(this.form.companyIds)
    },
    getfindCompanyTreePage () {
      treeList({})
        .then(res => {
          if (res && res.length > 0) {
            res[0].fsStatus = 1
            this.companyTree = res
            // æ‰¾å‡ºå¶èŠ‚ç‚¹
            this.companyTree = this.companyTree.filter(menu => this.companyTree .findIndex(m => m.parentId === menu.id) === -1)
            console.log(res)
            // this.searchForm.erpOrgId = res[0].erpId
          }
        })
admin/src/components/common/RichEditor.vue
@@ -147,7 +147,7 @@
            // è·¨åŸŸæ˜¯å¦ä¼ é€’ cookie ï¼Œé»˜è®¤ä¸º false
            withCredentials: true,
            // è¶…时时间,默认为 10 ç§’
            timeout: 10 * 1000, // 10 ç§’
            timeout: 10 * 10000, // 10 ç§’
            // ä¸Šä¼ å‰
            onBeforeUpload (files) {
              loadingInstance = Loading.service({
@@ -178,9 +178,10 @@
                //     message: `${res.data.originalName} ä¸Šä¼ å¤±è´¥ï¼Œè¯·é‡æ–°å°è¯•`
                // });
              }
              insertFn(res.data.url, res.data.originname, res.data.imgname)
              if(res.data && res.data.url){
                insertFn(res.data.url, res.data.originname, res.data.imgname)
              }
            },
            // å•个文件上传成功之后
            onSuccess (file, res) {
              console.log(`${file.originalFilename} ä¸Šä¼ æˆåŠŸ`, res)
@@ -246,7 +247,9 @@
                //     message: `${res.data.originalName} ä¸Šä¼ å¤±è´¥ï¼Œè¯·é‡æ–°å°è¯•`
                // });
              }
              insertFn(res.data.url, res.data.url)
              if(res.data && res.data.url){
                insertFn(res.data.url, res.data.url)
              }
            },
            // ä¸Šä¼ è¿›åº¦çš„回调函数
            onProgress (progress) {
admin/src/views/business/qrcodes.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
<template>
  <TableLayout >
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
        <li><el-button type="primary" @click="handlePageChange">刷新</el-button></li>
      </ul>
        <el-table
          v-loading="isWorking.search"
          :data="tableData.list"
          stripe
          @selection-change="handleSelectionChange"
        >
        <el-table-column prop="name" label="表单入口名称" min-width="100px"></el-table-column>
        <el-table-column prop="url" label="二维码" min-width="100px">
          <template slot-scope="{ row }">
            <div :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div>
          </template>
        </el-table-column>
          <el-table-column
              label="操作"
              min-width="120"  >
            <template slot-scope="{row}">
              <el-button type="text" @click="download(row)"  >下载</el-button>
            </template>
          </el-table-column>
      </el-table>
      <canvas id="QRCode_header" ref="canvas" title="扫描二维码"></canvas>
    </template>
    <!-- æ–°å»º/修改 -->
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import QRCode from 'qrcodejs2'
export default {
  name: 'Category',
  extends: BaseTable,
  components: { TableLayout },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        name: '',
        remark: '',
        status: '',
        sortnum: '',
        imgurl: '',
        type: '',
        parentId: null,
        namePath: '',
        idPath: ''
      }
    }
  },
  created () {
    this.config({
      module: '二维码管理',
      api: '/system/dict'
    })
    this.handlePageChange()
  },
  methods: {
    handlePageChange () {
      this.isWorking.search = true
      var that = this
      this.api.qrcodeList({})
        .then(data => {
          that.tableData.list = data
          setTimeout(function () {
            that.tableData.list.forEach(row => {
              that.$refs['qrcode' + row.id].innerHTML = ''
              row.qrcodeImg = that.crateQrcodeShow('qrcode' + row.id, row.url)
            })
          }, 1000)
        })
        .catch(e => {
          this.$tip.apiFailed(e)
        })
        .finally(() => {
          this.isWorking.search = false
        })
    },
    download (row) {
      const nodeList = Array.prototype.slice.call(row.qrcodeImg._el.children)
      const img = nodeList.find((item) => item.nodeName.toUpperCase() === 'IMG')// é€‰å‡ºå›¾ç‰‡ç±»åž‹
      // æž„建画布
      const canvas = document.createElement('canvas')
      canvas.width = 220
      canvas.height = 220
      const ctx = canvas.getContext('2d')
      ctx.fillStyle = 'white'
      ctx.fillRect(0, 0, canvas.width, canvas.height) // å¡«å……整个画布区域,确保背景色覆盖整个画布
      ctx.drawImage(img, 10,10,200,200)
      // æž„造url
      const url = canvas.toDataURL('image/png')
      const a = document.createElement('a')
      a.href = url
      a.download = `${row.name}-二维码.png`
      a.click()
      a.remove()
    },
    crateQrcodeShow (div, qrcode1) {
      if (qrcode1 == null || qrcode1 == '') {
        return
      }
      return new QRCode(div, {
        width: 120,
        height: 120,
        text: qrcode1
      })
    }
  }
}
</script>
admin/src/views/business/workorderDbh.vue
@@ -24,7 +24,7 @@
          <el-input v-model="searchForm.code" clearable placeholder="请输入工单号" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="状态描述" prop="status">
          <el-select v-model="searchForm.status" placeholder="请选择">
          <el-select v-model="searchForm.status" placeholder="请选择" clearable  @change="search" >
            <el-option label="待分配WTS" value="0"></el-option>
            <el-option label="待分配工程师" value="1"></el-option>
            <el-option label="SHE关闭" value="2"></el-option>
admin/src/views/business/workorderDcaChild.vue
@@ -24,13 +24,13 @@
          </el-select>
        </el-form-item>
        <el-form-item label="上报人员" prop="memberName">
          <el-input v-model="searchForm.memberName" style="width: 120px"  clearable placeholder="人员姓名或手机号" @keypress.enter.native="search"></el-input>
          <el-input v-model="searchForm.memberName" style="width: 150px"  clearable placeholder="姓名或手机号" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="工单号" prop="code">
          <el-input v-model="searchForm.code" style="width: 120px"  clearable placeholder="工单号" @keypress.enter.native="search"></el-input>
        </el-form-item>
        <el-form-item label="状态描述" prop="status">
          <el-select v-model="searchForm.status" placeholder="请选择">
          <el-select v-model="searchForm.status" placeholder="请选择" clearable  @change="search" >
            <el-option label="待分配WTS" value="0"></el-option>
            <el-option label="待分配工程师" value="1"></el-option>
            <el-option label="SHE关闭" value="2"></el-option>
server/pom.xml
@@ -15,7 +15,6 @@
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -28,15 +27,24 @@
    <apache.shiro.version>1.7.0</apache.shiro.version>
    <oshi.version>5.7.0</oshi.version>
    <jna.version>5.7.0</jna.version>
    <netty-version>4.1.118.Final</netty-version>
    <poi.version>5.0.0</poi.version>
    <jjwt.version>0.9.1</jjwt.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-dependencies</artifactId>
        <version>4.19.0</version>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>${netty-version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-sdk-bom</artifactId>
        <version>1.2.34</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
@@ -52,6 +60,16 @@
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty-bom</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>reactor-core</artifactId>
          <groupId>io.projectreactor</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- Shiro -->
    <dependency>
@@ -204,14 +222,39 @@
      <artifactId>bcprov-jdk15on</artifactId>
      <version>1.60</version>
    </dependency>
 <!--   <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>-->
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-blob</artifactId>
      <version>12.14.1</version>
      <exclusions>
        <exclusion>
          <artifactId>reactor-core</artifactId>
          <groupId>io.projectreactor</groupId>
        </exclusion>
      </exclusions>
      <!--  <exclusions>
          <exclusion>
            <artifactId>reactor-core</artifactId>
            <groupId>io.projectreactor</groupId>
          </exclusion>
        </exclusions>-->
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-secrets</artifactId>
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-common</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.projectreactor/reactor-core -->
    <dependency>
      <groupId>io.projectreactor</groupId>
      <artifactId>reactor-core</artifactId>
      <version>3.4.41</version>
    </dependency>
  </dependencies>
server/src/main/java/com/doumee/api/common/PublicCloudController.java
@@ -53,13 +53,23 @@
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private EmailService emailService;
    @Value("${upload.type")
    @Value("${upload.type}")
    private String  uploadType;
    public static FtpUtil ftp  = null;
    public static AzureBlobUtil azureBlobUtil  = null;
    @GetMapping("/image/{folder}/{date}/{name}")
    public void getImage(@PathVariable String folder,@PathVariable String date,@PathVariable String name, HttpServletResponse response) throws IOException {
       try {
           initUploadTool();
           response.setContentType("image/jpeg"); // æ ¹æ®ä½ çš„图片类型设置正确的MIME类型
           log.info("===================图片blob名称"+folder+"/"+date+"/"+name);
           azureBlobUtil.downloadBlobToStream(folder+"/"+date+"/"+name,response.getOutputStream());
       }catch (Exception e) {
           e.printStackTrace();
       }
    }
    @ApiOperation(value = "测试企业素材上传下载")
    @RequestMapping(method= RequestMethod.POST,value="/testQwImg")
    @ResponseBody
@@ -90,7 +100,7 @@
                        String fileName = folder + fName;
                        boolean r1 =false;
                        if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
                            r1 = azureBlobUtil.uploadFileWithResponse( fileName,is);//上传
                            r1 = azureBlobUtil.uploadFileWithResponseAndSize( fileName,is,null);//上传
                        }else{
                            r1 = ftp.uploadInputstreamBatch(is, fileName, true,index);
                        }
@@ -180,7 +190,7 @@
                    String fileName = folder + fName;
                    boolean r =false;
                    if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
                        r = azureBlobUtil.uploadFileWithResponse( fileName,is);//上传
                        r = azureBlobUtil.uploadFileWithResponseAndSize( fileName,is,null);//上传
                    }else{
                        r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()),index);
                    }
@@ -236,8 +246,8 @@
                        //获得每一个文件
                        String endType = ".jpg";
                        String originname = UUID.randomUUID().toString()+endType;
                        InputStream is = QywxUtil.getMediaInputstream(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(),media);
                        if(is == null){
                        Map<String,Object> map = QywxUtil.getMediaInputstreamMap(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(),media);
                        if(map == null || map.get("data") == null){
                            log.error("企业微信素材下载失败:========="+media);
                            continue;
                        }
@@ -247,9 +257,9 @@
                        String fileName = folder + fName;
                        boolean r =false;
                        if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
                            r = azureBlobUtil.uploadFileWithResponse( fileName,is);//上传
                            r = azureBlobUtil.uploadFileWithResponseAndSize( fileName, (InputStream) map.get("data"),(Integer)map.get("size"));//上传
                        }else{
                            r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,param.getMediaIds().size()),index);
                            r = ftp.uploadInputstreamBatch( (InputStream) map.get("data"), fileName, Constants.equalsInteger(index ,param.getMediaIds().size()),index);
                        }
                        if (r) {
                            JSONObject fileJSON = new JSONObject();
@@ -317,7 +327,7 @@
                        String fileName = folder + fName;
                        boolean r =false;
                        if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
                            r = azureBlobUtil.uploadFileWithResponse( fileName,is);//上传
                            r = azureBlobUtil.uploadFileWithResponseAndSize( fileName,is,null);//上传
                        }else{
                            r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()),index);
                        }
@@ -350,10 +360,13 @@
    private void initUploadTool() throws Exception{
        if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
            if(azureBlobUtil == null){
                azureBlobUtil = new AzureBlobUtil(systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ACCESSNAME).getCode(),
                azureBlobUtil = new AzureBlobUtil(
                        systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ACCESSNAME).getCode(),
                        systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ACCESSKEY).getCode(),
                        systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ENDPOINT).getCode(),
                        systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_CONTAINER).getCode());
            }else{
                azureBlobUtil.initClient();
            }
        }else{
            if(ftp == null){
@@ -405,7 +418,7 @@
                    String fileName = folder+"/"+fName;
                    boolean r =false;
                    if(StringUtils.equals(Constants.uploadType.blob,uploadType)){
                        r = azureBlobUtil.uploadFileWithResponse( fileName,is);//上传
                        r = azureBlobUtil.uploadFileWithResponseAndSize( fileName,is,null);//上传
                    }else{
                        r = ftp.uploadInputstream(is,fileName);
                    }
server/src/main/java/com/doumee/api/system/SystemDictController.java
@@ -10,6 +10,7 @@
import com.doumee.dao.system.dto.QuerySystemDictDTO;
import com.doumee.dao.system.model.SystemDict;
import com.doumee.dao.system.vo.SystemDictListVO;
import com.doumee.dao.system.vo.SystemQrcodeListVO;
import com.doumee.service.system.SystemDictService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -74,4 +75,10 @@
    public ApiResponse<PageData<SystemDictListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDTO> pageWrap) {
        return ApiResponse.success(systemDictService.findPage(pageWrap));
    }
    @ApiOperation("分页查询")
    @PostMapping("/qrcodeList")
    @RequiresPermissions("system:dict:query")
    public ApiResponse<List<SystemQrcodeListVO>> qrcodeList (@RequestBody QuerySystemDictDTO  pageWrap) {
        return ApiResponse.success(systemDictService.qrcodeList(pageWrap));
    }
}
server/src/main/java/com/doumee/biz/system/impl/SystemJobTriggerBizImpl.java
@@ -206,6 +206,7 @@
        snippet.setDistributeLimit(job.getDistributeLimit());
        snippet.setHandler(job.getHandler());
        snippet.setSnippetIndex(0);
        snippet.setCreateTime(new Date());
        snippet.setSnippetCode(UUID.randomUUID().toString());
        snippet.setWithLog(job.getWithLog());
        snippet.setAllowServerIps(job.getAllowServerIps());
@@ -236,6 +237,7 @@
            snippet.setJobDistributeGroup(distributeGroup);
            snippet.setHandler(job.getHandler());
            snippet.setSnippetIndex(i);
            snippet.setCreateTime(new Date());
            snippet.setSnippetCode(UUID.randomUUID().toString());
            snippet.setSnippetData(JSON.toJSONString(snippetData));
            snippet.setSnippetDataSize(snippetData.size());
server/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java
@@ -95,20 +95,29 @@
    /**
     * ç»™å±žæ€§èµ‹å€¼
     */
    private void setFieldValue(Field field, Object target, Object value) throws Exception {
    private void setFieldValue(Field field, Object target, Object value)   {
        try {
        field.setAccessible(true);
        field.set(target, value);
        field.setAccessible(false);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * èŽ·å–å±žæ€§å€¼
     */
    private Object getFieldValue(Field field, Object target) throws Exception {
        field.setAccessible(true);
        Object value = field.get(target);
        field.setAccessible(false);
        return value;
    private Object getFieldValue(Field field, Object target)  {
        try {
            field.setAccessible(true);
            Object value = field.get(target);
            field.setAccessible(false);
            return value;
        }catch (Exception e){
            e.printStackTrace();
        }
      return  null;
    }
    /**
@@ -116,7 +125,7 @@
     */
    private LoginUserInfo getLoginUser () {
        try {
                return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
              return (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        }catch (Exception e){
        }
server/src/main/java/com/doumee/config/quartz/JobInitializer.java
@@ -1,5 +1,6 @@
package com.doumee.config.quartz;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.doumee.core.constants.Constants;
import com.doumee.core.job.SchedulerProxy;
@@ -41,6 +42,7 @@
     */
    @PostConstruct
    public void initJobs () {
        log.debug("Initializing jobs");
        // ä¿®å¤JOB
        this.repairJobs();
@@ -52,10 +54,15 @@
        queryJobDto.setDeleted(Boolean.FALSE);
        List<SystemJob> jobs = systemJobService.findList(queryJobDto);
        for (SystemJob job : jobs) {
            schedulerProxy.createJob(new SchedulerProxy.Job(job.getId(), job.getHandler(), job.getCronExpression(), job.getDisallowConcurrent()));
            log.debug("job '{}' initialized.", job.getJobName());
            try {
                schedulerProxy.createJob(new SchedulerProxy.Job(job.getId(), job.getHandler(), job.getCronExpression(), job.getDisallowConcurrent()));
                log.info("job '{}' initialized.", job.getJobName());
            }catch (Exception e){
                e.printStackTrace();
                log.error("Jobs initialization failed: '{}''{}'  ", JSONObject.toJSONString(job),e.getStackTrace());
            }
        }
        log.debug("Jobs initialization completed in {} ms", System.currentTimeMillis() - startTime);
        log.info("Jobs initialization completed in {} ms", System.currentTimeMillis() - startTime);
    }
    /**
server/src/main/java/com/doumee/core/constants/Constants.java
@@ -40,6 +40,10 @@
    public static final Integer FOUR = 4;
    public static final Integer SIX = 6;
    public static final Integer FIVE = 5;
    public static final String QRCODE_URLS = "QRCODE_URLS";
    public static final String SHE_QRCODES_URL = "SHE_QRCODES_URL";
    public static final String DCA_QRCODES_URL = "DCA_QRCODES_URL";
    public static final String DBH_QRCODES_URL = "DBH_QRCODES_URL";
    public static boolean WORKORDER_SHE_EMAIL_SENDING = false;
    public static  boolean DEALING_COMPANY_SYNC = false ;
    public static  boolean DEALING_MEMBER_SYNC = false ;
server/src/main/java/com/doumee/core/utils/HttpsUtil.java
@@ -1,5 +1,7 @@
package com.doumee.core.utils;
import lombok.extern.slf4j.Slf4j;
import javax.net.ssl.*;
import java.io.*;
import java.net.HttpURLConnection;
@@ -9,7 +11,11 @@
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@Slf4j
public class HttpsUtil {
    public static String get(String url,boolean ignoreSSL) {
@@ -163,6 +169,7 @@
        try {
            URL _url = new URL(url);
            connection = (HttpURLConnection) _url.openConnection();
            System.out.println(connection.getContentLength());
            connection.setDoOutput(true);
            connection.setRequestMethod("GET");
            return connection.getInputStream();
@@ -171,6 +178,30 @@
        }
        return null;
    }
    public static Map<String,Object> connInputsteamReturnMap(String url, String method, String data, String contentType ){
        HttpURLConnection connection = null;
        try {
            Map<String,Object> map = new HashMap<>();
            URL _url = new URL(url);
            connection = (HttpURLConnection) _url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestMethod("GET");
            int size =connection.getContentLength();
            log.error("企业图片下载流实际大小:=========================="+size);
            InputStream in =connection.getInputStream();
            if(in == null){
                log.error("企业图片下载流实际流为空:==========================");
                return null;
            }
            log.error("企业图片下载流大小:=========================="+in.available());
            map.put("data",in);
            map.put("size",size);
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String connectionHttp(String url,String method,String data,String contentType ){
        HttpURLConnection connection = null;
        try {
server/src/main/java/com/doumee/core/utils/azure/AzureBlobUtil.java
@@ -1,17 +1,29 @@
package com.doumee.core.utils.azure;
import com.alibaba.fastjson.JSONObject;
import com.azure.core.http.rest.Response;
import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import com.azure.storage.blob.models.BlobRequestConditions;
import com.azure.storage.blob.models.BlockBlobItem;
import com.azure.core.http.rest.RestProxy;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobParallelUploadOptions;
import com.azure.storage.blob.options.BlobUploadFromFileOptions;
import com.azure.storage.blob.sas.BlobContainerSasPermission;
import com.azure.storage.blob.specialized.BlobInputStream;
import com.azure.storage.common.StorageSharedKeyCredential;
import io.netty.handler.logging.ByteBufFormat;
import io.netty.handler.logging.LogLevel;
import reactor.util.context.ContextView;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.nio.file.Path;
import java.time.OffsetDateTime;
@Data
@Slf4j
@@ -28,55 +40,155 @@
    public AzureBlobUtil(String accountName, String accountKey, String endpoint, String container){
        try {
            this.accountKey = accountKey;
            this.accountName = accountName;
            this.endpoint = endpoint;
            this.container = container;
            this.connectionString = "DefaultEndpointsProtocol=https;AccountName=" + this.accountName + ";AccountKey=" + this.accountKey + ";EndpointSuffix=" + endpoint;
            this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient();
            this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container);
//            this.connectionString = "DefaultEndpointsProtocol=https;AccountName=" + this.accountName + ";AccountKey=" + this.accountKey + ";EndpointSuffix=" + endpoint;
//            this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient();
//            this.blobServiceClient = new BlobServiceClientBuilder()
//                    .endpoint(endpoint)
//                    .sasToken(accountKey)
//                    .buildClient();
           initClient();
        }catch (Exception e) {
            e.printStackTrace();
            log.error("初始化BLOB客户端异常0=========="+e.getMessage());
        }
    }
    public   void initClient( )   {
        if(this.blobServiceClient!=null){
            log.error("初始化BLOB客户端已完成,无需重复授权==========");
            return;
        }
        try {
            this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient();
            this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container);
            StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
            // Azure SDK client builders accept the credential as a parameter
            this.blobServiceClient  = new BlobServiceClientBuilder()
                    .endpoint(endpoint)
                    .credential(credential)
                    .buildClient();
            this.blobContainerClient = this.blobServiceClient.createBlobContainerIfNotExists(this.container);
            this.blobContainerClient.setAccessPolicy(PublicAccessType.CONTAINER, null);
//            this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container);
//            String endpointString = String.format("https://%s.blob.core.windows.net/%s",
//                    accountName, container);
//
//            this.blobContainerClient = new BlobContainerClientBuilder()
//                    .endpoint(endpointString)
//                    .credential(new DefaultAzureCredentialBuilder().build())
//                    .buildClient();
        }catch (Exception e) {
            e.printStackTrace();
            log.error("初始化BLOB客户端异常1=========="+e.getMessage());
        }
    }
    public   void uploadFile(String fileName, InputStream data)   {
    public void downloadBlobToStream(String  blob, ServletOutputStream outputStream) {
        BlobClient blobClient =this.getBlobContainerClient().getBlobClient(blob);
        blobClient.downloadStream(outputStream);
    }
    public BlobInputStream readBlobFromStream(String  blob) {
        BlobClient blobClient =this.getBlobContainerClient().getBlobClient(blob);
        // Opening a blob input stream allows you to read from a blob through a normal
        // stream interface
        try (BlobInputStream blobStream = blobClient.openInputStream()) {
            blobStream.read();
            return blobStream ;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null;
    }
    public BlobInputStream readBlobFromStream(BlobClient blobClient) {
        // Opening a blob input stream allows you to read from a blob through a normal
        // stream interface
        try (BlobInputStream blobStream = blobClient.openInputStream()) {
            blobStream.read();
            return blobStream;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public   boolean upload(String fileName, InputStream data)   {
        try {
            if(getBlobContainerClient() == null){
                initClient();
            }
            BlobClient client = this.blobContainerClient.getBlobClient(fileName);
            client.upload(data, data.available(), true);
            return true;
        }catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    public  boolean uploadFileWithResponse(String fileName, InputStream inputStream)   {
    public void uploadBlockBlobWithTransferOptions(BlobContainerClient blobContainerClient, Path filePath) {
        String fileName = filePath.getFileName().toString();
        BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
        ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
                .setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
                .setMaxConcurrency(2)
                .setMaxSingleUploadSizeLong((long) 8 * 1024 * 1024); // 8 MiB max size for single request upload
        BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString());
        options.setParallelTransferOptions(parallelTransferOptions);
        try {
            Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
        } catch (UncheckedIOException ex) {
            System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
        }
    }
    /*public  boolean uploadFileWithResponse(String fileName, InputStream inputStream)   {
        try {
            log.error("BLOB上传开发:........"+fileName);
            if(getBlobContainerClient() == null){
                log.error("BLOB上传开发:........初始化客户端");
                initClient();
            }
            BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream, inputStream.available());
            options.setRequestConditions(new BlobRequestConditions().setIfNoneMatch("*"));
            Response<BlockBlobItem> rsp = this.blobContainerClient.getBlobClient(fileName).uploadWithResponse(options, null, null);
            if(rsp.getStatusCode()==201)  {
                log.info("上传成功:........"+fileName);
            if(rsp!=null && rsp.getStatusCode()==201)  {
                log.info("BLOB上传成功:........"+fileName);
                log.error("BLOB上传成功:........"+fileName);
                return true;
            }
            log.error("BLOB上传失败:........"+ JSONObject.toJSONString(rsp));
        }catch (Exception e) {
            e.printStackTrace();
            log.info("上传失败:........"+e.getMessage());
            log.error("BLOB上传失败:........"+e.getMessage());
        }
        return false;
    }*/
    public  boolean uploadFileWithResponseAndSize(String fileName, InputStream inputStream,Integer size)   {
        try {
            log.error("BLOB上传开发:........"+fileName+"===============size:"+size);
            if(getBlobContainerClient() == null){
                log.error("BLOB上传开发:........初始化客户端");
                initClient();
            }
            BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream,(size!=null && size>0)?size: inputStream.available());
            options.setRequestConditions(new BlobRequestConditions().setIfNoneMatch("*"));
            Response<BlockBlobItem> rsp = this.blobContainerClient.getBlobClient(fileName).uploadWithResponse(options, null, null);
            if(rsp!=null && rsp.getStatusCode()==201)  {
                log.info("BLOB上传成功:........"+fileName);
                log.error("BLOB上传成功:........"+fileName);
                return true;
            }
            log.error("BLOB上传失败:........"+ JSONObject.toJSONString(rsp));
        }catch (Exception e) {
            e.printStackTrace();
            log.error("BLOB上传失败:........"+e.getMessage());
        }
        return false;
    }
}
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java
@@ -10,7 +10,7 @@
    public final static String DMSECRET = "mfmGJpvqj1WNPTwo0Cue42uibhUd5W6_iSWpF39XZQ0";//客管家应用 SECRET
    public final static String CORPSECRET = "8gl5ndGr824OHZ90CkZdcIewUKHoyk13XN4hfxBS_io";
    public final static String ACCESS_TOKEN = "aOpknXCW7KBBwgGAPuacwfhJRcT1PeIg-IroZicxWamj0JayKJ0rKw2sNXGzpQzK8AMDeDrEJC_kTvPPWTgtefDNLtfsdHS7IpXqBV1P8znLG1EmsYPNgvn78dsQd5bBomLl_qPpOob9hUUsSJJKcEmxXldCNEYVBhKmYnQ4yY8WE8i4xp7aLmm-hRql0AzhzaNhUA7nAzNN5BsgSgbXMA";
    //获取accesstoken,corpid=企业ID,corpsecret=应用的凭证密钥
    //获取accesstoken,corpid=企业ID,corpsecret=应用的凭证密钥 https://wecom-qyapiqa.unilever-china.com/cgi-bin/gettoken?corpid=wwe02e8fd876f8add1&corpsecret=5e0272fabfcfcee79840f1cef24cb364
    public final static String[] GET_ACCESS_TOKEN = new String[]{"/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${secret}","获取企业微信accesstoken"};
    //获取部门信息,部门id。获取指定部门及其下的子部门(以及及子部门的子部门等等,递归)。 å¦‚果不填,默认获取全量组织架构
    public final static String[]  GET_DEPARTMENT_LIST = new String[]{"/cgi-bin/department/list?access_token=${accesstoken}&id=${id}","获取部门信息"};
server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
@@ -6,6 +6,7 @@
import com.doumee.core.utils.HttpsUtil;
import com.doumee.core.utils.qiyeweixin.model.request.QywxSendMsgRequest;
import com.doumee.core.utils.qiyeweixin.model.response.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +24,7 @@
@Component
@Slf4j
@Data
public class QywxUtil {
    private static JSONObject json = new JSONObject();
@@ -36,6 +38,8 @@
    @PostConstruct
    private void init() {
        qyUtil = this;
        System.out.println(qyUtil.qiweiUrl);
        System.out.println(qyUtil.getQiweiUrl());
//        QywxUtil.qiweiUrl =  serviceurl;
    }
@@ -59,7 +63,7 @@
    public static String getAccessToken(String corpId, String corpSecret)  {
        String[] interfaceUrl = QywxConstant.GET_ACCESS_TOKEN;
        String url = interfaceUrl[0].replace("${corpid}",corpId).replace("${secret}",corpSecret);
        QywxBaseResponse response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<String>>(){});
        QywxBaseResponse response = sendHttpGetRequest(url,interfaceUrl[1], new TypeReference<QywxBaseResponse<String>>(){});
        if(response.getErrcode()!=null && response.getErrcode() ==0){
            return response.getAccess_token();
        }
@@ -89,7 +93,7 @@
            String[] interfaceUrl = QywxConstant.SEND_MSG;
            String url = interfaceUrl[0].replace("${accesstoken}",token);
            QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param)
                    ,new TypeReference<QywxSendMsgResponse>(){});
                    ,new TypeReference<QywxSendMsgResponse>(){},true);
            log.error("推送消息结果{}",JSONObject.toJSONString(response));
            if(response.getErrcode()!=null && response.getErrcode() ==0){
                return response;
@@ -127,11 +131,26 @@
        return null;
    }
    public static   Map<String,Object> getMediaInputstreamMap(String token, String media)   {
        try {
            String[] interfaceUrl = QywxConstant.GET_MEDIA;
            String url = qyUtil.qiweiUrl+interfaceUrl[0].replace("${accesstoken}",token).replace("${media_id}",media);
            log.info("企业微信临时素材获取url=========="+url);
            Map<String,Object> map =  HttpsUtil.connInputsteamReturnMap(url,"GET",null,null);
            return map;
        }catch (Exception e){
            e.printStackTrace();
            log.error("企业微信临时素材获取error=========="+e.getMessage());
        }
        return null;
    }
    public static QywxUserInfoResponse getUserInfo(String token,String id)  {
        String[] interfaceUrl = QywxConstant.GET_USER_DETAIL;
        String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",id);
        QywxUserInfoResponse response = sendHttpRequestSingle(url,interfaceUrl[1],""
                ,new TypeReference<QywxUserInfoResponse>(){});
                ,new TypeReference<QywxUserInfoResponse>(){},false);
        if(response.getErrcode()!=null && response.getErrcode() ==0){
            return response;
        }
@@ -188,12 +207,12 @@
     * @param <T>
     */
    public static   <T> QywxBaseResponse<T> sendHttpRequest(String url, String name, String param, TypeReference<QywxBaseResponse<T>> typeReference){
        log.info("【"+name+"】================开始===="+url+"\nparam==========================:"+ JSONObject.toJSONString(param));
        log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(param));
        if ( StringUtils.isNotBlank(url)) {
            String res = null;
            try {
                Map<String,String> headers = new HashMap<>();
                res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param);
                res = HttpsUtil.get(qyUtil.qiweiUrl+url,true);
                QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType());
                logResult(result,name);
                return  result;
@@ -204,8 +223,25 @@
        }
        return  null;
    }
    public static   <T> QywxBaseResponse<T> sendHttpGetRequest(String url, String name,  TypeReference<QywxBaseResponse<T>> typeReference){
        log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(url));
        if ( StringUtils.isNotBlank(url)) {
            String res = null;
            try {
                Map<String,String> headers = new HashMap<>();
                res = HttpsUtil.get(qyUtil.qiweiUrl+url,true);
                QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType());
                logResult(result,name);
                return  result;
            }catch (Exception e){
                e.printStackTrace();
                log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(url));
            }
        }
        return  null;
    }
    public static  <T extends QywxBaseSingleResponse>  T sendHttpRequestMultifile(String url, String name, String imgUrl  , TypeReference<T> typeReference){
        log.info("【"+name+"】================开始===="+ imgUrl);
        log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ imgUrl);
        if ( StringUtils.isNotBlank(url)) {
            String res = null;
            try {
@@ -221,13 +257,17 @@
        }
        return  null;
    }
    public static  <T extends QywxBaseSingleResponse>  T sendHttpRequestSingle(String url, String name, String param, TypeReference<T> typeReference){
        log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param));
    public static  <T extends QywxBaseSingleResponse>  T sendHttpRequestSingle(String url, String name, String param, TypeReference<T> typeReference,boolean isPost){
        log.info("【"+name+"】================开始===="+qyUtil.qiweiUrl+url+"\nparam==========================:"+ JSONObject.toJSONString(param));
        if ( StringUtils.isNotBlank(url)) {
            String res = null;
            try {
                Map<String,String> headers = new HashMap<>();
                res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param);
                if(isPost){
                    res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param);
                }else{
                    res = HttpsUtil.get(qyUtil.qiweiUrl+url,true);
                }
                T result = JSONObject.parseObject(res, typeReference.getType());
//                logResult(result,name);
                return  result;
server/src/main/java/com/doumee/dao/business/model/Company.java
@@ -93,5 +93,8 @@
    @ApiModelProperty(value = "是否为部门负责人0-否;1-是", example = "1")
    @TableField(exist = false)
    private Integer isLeader;
    @ApiModelProperty(value = "是否包含子菜单")
    @TableField(exist = false)
    private Boolean hasChildren;
}
server/src/main/java/com/doumee/dao/business/model/Managers.java
@@ -94,6 +94,9 @@
    @ApiModelProperty(value = "组织编码ID")
    @TableField(exist = false)
    private Integer companyId;
    @ApiModelProperty(value = "组织编码IDs")
    @TableField(exist = false)
    private List<String> companyIds;
    @ApiModelProperty(value = "设置范围 0直属部门员工 1部门及其下级布恩员工 2指定人员")
    @TableField(exist = false)
    private Integer isMember;
server/src/main/java/com/doumee/dao/business/vo/CompanyTree.java
@@ -42,6 +42,9 @@
        for (Company treeNode : nodeList){
            // åˆ¤æ–­å½“前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
            if(origin== 1){
                if( findParentIdFromList(treeNode.getQwParentId()) == null){
                    treeNode.setQwParentId(null);//去除没获取的父节点的企微父级标识,作为顶节点
                }
                if (StringUtils.isBlank(treeNode.getQwParentId()) || StringUtils.equals(treeNode.getQwId(),"1")) {
                    // æ˜¯ï¼Œæ·»åŠ 
                    rootNodeList.add(treeNode);
@@ -54,6 +57,15 @@
            }
        }
        return rootNodeList;
    }
    private Company findParentIdFromList(String qwParentId) {
        for(Company c : nodeList){
            if(StringUtils.equals(c.getQwId(),qwParentId)){
                return  c;
            }
        }
        return null;
    }
@@ -98,6 +110,11 @@
        }
        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
        pNode.setChildList(childTree);
        if(childTree == null || childTree.size() ==0){
            pNode.setHasChildren(Boolean.FALSE);
        }else{
            pNode.setHasChildren(Boolean.TRUE);
        }
        return pNode;
    }
server/src/main/java/com/doumee/dao/system/model/SystemDictData.java
@@ -27,7 +27,7 @@
    private Integer id;
    @ApiModelProperty(value = "所属字典", example = "1")
    @NotNull(message = "所属字典不能为空", groups = {Constants.OperaType.Create.class, Constants.OperaType.Update.class})
    @NotNull(message = "所属字典不能为空", groups = {Constants.OperaType.Create.class })
    private Integer dictId;
    @ApiModelProperty(value = "数据值")
server/src/main/java/com/doumee/dao/system/vo/SystemQrcodeListVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.system.vo;
import com.doumee.dao.system.model.SystemDict;
import com.doumee.dao.system.model.SystemUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author  dm
 * @since 2025/03/31 16:44
 */
@Data
@ApiModel("二维码管理对象")
public class SystemQrcodeListVO   {
    @ApiModelProperty(value = "编码")
    private String id;
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "地址")
    private String url;
}
server/src/main/java/com/doumee/service/business/impl/ManagersServiceImpl.java
@@ -61,18 +61,22 @@
        //设置范围 0直属部门员工 1部门及其下级布恩员工 2指定人员
        if(Constants.equalsInteger(managers.getIsMember(),Constants.ZERO) || Constants.equalsInteger(managers.getIsMember(),Constants.ONE)){
            //直属部门 æˆ– éƒ¨é—¨åŠå…¶å­éƒ¨é—¨
            if(managers.getCompanyId() ==null ){
          /*  if(managers.getCompanyId() ==null ){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            Company company = companyMapper.selectById(managers.getCompanyId());
            if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,部门信息不存在,请刷新页面重试!");
            }*/
            if(managers.getCompanyIds() ==null  || managers.getCompanyIds().size() ==0 ){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            memberList  =memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                    .selectAll(Member.class)
                    .eq(Member::getIsdeleted,Constants.ZERO)
                    .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ZERO),"select (cm.id) from company_member cm where cm.company_id='"+company.getId()+"'  and cm.member_id=t.id")
                    .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ONE),"select (cm.id) from company_member cm where cm.company_id_path like '"+company.getIdPath()+"%'  and cm.member_id=t.id"));
                    .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ZERO),"select (cm.id) from company_member cm where cm.company_id in ("+String.join(",",managers.getCompanyIds())+" ) and cm.member_id=t.id")
//                    .exists(Constants.equalsInteger(managers.getIsMember(),Constants.ONE),"select (cm.id) from company_member cm where cm.company_id_path like '"+company.getIdPath()+"%'  and cm.member_id=t.id")
            );
        }else{
            if(managers.getMemberIds()==null || managers.getMemberIds().size()==0){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按要求选择指定员工信息!");
server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -309,7 +309,7 @@
                        if(StringUtils.isNotBlank(comNames)){
                            comNames += ",";
                        }
                        comNames += c.getNamePath();
                        comNames += StringUtils.defaultString(c.getNamePath(),c.getName());
                    }
                }
                cm.setCompanyList(qycom);
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -1086,6 +1086,7 @@
              status = 2;
              info ="无效员工信息,无法发送邮箱";
        }else{
            //邮箱已发送:成功:["江萍邮箱jp@doumee.com"]失败:["江萍/无邮箱","戴强强/邮箱null","郭际文武/邮箱null"]
            List<String>    successInfo = new ArrayList<>();
            List<String> errorInfo = new ArrayList<>();
            Map<String,String> contentForm = getEmailContentFormByModel(workorder);
server/src/main/java/com/doumee/service/common/EmailService.java
@@ -1,5 +1,6 @@
package com.doumee.service.common;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@@ -14,6 +15,7 @@
import java.util.Map;
@Service
@Slf4j
public class EmailService {
    @Autowired
    private JavaMailSender javaMailSender;//注入JavaMailSender
@@ -44,6 +46,7 @@
                }
            }
    public boolean sendEmailWithImages(String toEmail, String title, Map<String,String> contentForm, List<String> imgList) {
        log.error("邮件开始发送============"+toEmail);
        try {
                AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
                context.refresh();
@@ -66,13 +69,15 @@
                        content += "<a href='"+f+"' target='blank'><img style='width:200px;margin:5px' src='"+f+"'/></a>";
                    }
                }
            content += "</div></body><html>";
            helper.setText(content,true);
            javaMailSender.send(message);
                    System.out.println("邮件发送成功!");
                    return true;
                content += "</div></body><html>";
                helper.setText(content,true);
                log.error("邮件内容============"+content);
                javaMailSender.send(message);
                log.error("邮件发生成功============");
                return true;
            } catch (Exception e) {
            e.printStackTrace();
            log.error("邮件发生成功============"+e.getMessage());
                    return false;
                }
            }
server/src/main/java/com/doumee/service/system/SystemDictService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.system.dto.QuerySystemDictDTO;
import com.doumee.dao.system.model.SystemDict;
import com.doumee.dao.system.vo.SystemDictListVO;
import com.doumee.dao.system.vo.SystemQrcodeListVO;
import java.util.List;
@@ -90,4 +91,6 @@
     * @return long
     */
    long count(SystemDict systemDict);
    List<SystemQrcodeListVO> qrcodeList(QuerySystemDictDTO pageWrap);
}
server/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java
@@ -1,5 +1,10 @@
package com.doumee.service.system.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.core.constants.Constants;
import com.doumee.dao.system.SystemDictDataMapper;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.vo.SystemQrcodeListVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.doumee.core.model.PageData;
@@ -11,11 +16,13 @@
import com.doumee.service.system.SystemDictService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
@@ -28,6 +35,8 @@
    @Autowired
    private SystemDictMapper systemDictMapper;
    @Autowired
    private SystemDictDataMapper systemDictDataMapper;
    @Override
    public Integer create(SystemDict systemDict) {
@@ -88,6 +97,31 @@
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        return PageData.from(new PageInfo<>(systemDictMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause())));
    }
    @Override
    public List<SystemQrcodeListVO> qrcodeList(QuerySystemDictDTO pageWrap) {
        List<SystemQrcodeListVO> list = new ArrayList<>();
        SystemDict dict =systemDictMapper.selectOne(new LambdaQueryWrapper<SystemDict>().
                eq(SystemDict::getCode,Constants.QRCODE_URLS)
                .last("limit 1")) ;
        if(dict!=null){
            List<SystemDictData> dataList = systemDictDataMapper.selectList(new LambdaQueryWrapper<SystemDictData>().
                    eq(SystemDictData::getDictId,dict.getId()))   ;
            if(dataList!=null && dataList.size()>0){
                for(SystemDictData data :dataList){
                    SystemQrcodeListVO t = new SystemQrcodeListVO();
                    t.setId(data.getId()+"");
                    t.setName(data.getRemark());
                    t.setUrl(data.getCode());
                    if(StringUtils.equals(data.getLabel(),Constants.SHE_QRCODES_URL)
                            ||StringUtils.equals(data.getLabel(),Constants.DCA_QRCODES_URL)
                            ||StringUtils.equals(data.getLabel(),Constants.DBH_QRCODES_URL)){
                        list.add(t);
                    }
                }
            }
        }
        return list;
    }
    @Override
    public long count(SystemDict systemDict) {
server/src/main/resources/application-dev.yml
@@ -37,9 +37,13 @@
#            enable: true
#            required: true
  mail:
    host: smtp.exmail.qq.com
    username: jp@doumee.com
    password: 2Jz9HFW2U7vRnCRu
#    host: smtp.exmail.qq.com
#    username: jp@doumee.com
#    password: 2Jz9HFW2U7vRnCRu
    host: smtp.aliyun.com
    port: 80
    username: lkshereport@mail.unilever-china.com
    password: f2fLk384RChX
    default-encoding: UTF-8
    properties:
      mail:
server/src/main/resources/application-pro.yml
@@ -5,9 +5,9 @@
spring:
  # æ•°æ®æºé…ç½®
  datasource:
    url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/lianhelihua_sh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: doumee
    password: rtjgfEr@&0c0m
    url: jdbc:mysql://solution-cnn3-d-shereport-db-mysql01.mysql.database.chinacloudapi.cn:3306/lianhelihua?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: service_account
    password: yP5@jJzqME63
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
  redis:
server/src/main/resources/application-test.yml
@@ -5,9 +5,9 @@
spring:
  # æ•°æ®æºé…ç½®
  datasource:
    url: jdbc:mysql://112.26.66.25:3306/lianhelihua_sh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: Doumee@168&QWERT
    url: jdbc:mysql://solution-cnn3-d-shereport-db-mysql01.mysql.database.chinacloudapi.cn:3306/lianhelihua?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: service_account
    password: yP5@jJzqME63
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
  redis:
@@ -38,10 +38,11 @@
#            enable: true
#            required: true
  mail:
    host: smtp.exmail.qq.com
    username: jp@doumee.com
    password: 2Jz9HFW2U7vRnCRu
    host: smtpdm.aliyun.com
    username: lkshereport@mail.unilever-china.com
    password: f2fLk384RChX
    default-encoding: UTF-8
    port: 80
    properties:
      mail:
        smtp:
@@ -78,4 +79,4 @@
  type: blob
qiwei:
  serviceurl: https://qyapi.weixin.qq.com
  serviceurl: https://wecom-qyapiqa.unilever-china.com
server/src/main/resources/application.yml
@@ -9,7 +9,7 @@
spring:
  profiles:
    active: test
    active: dev
  # JSON返回配置
  jackson:
    # é»˜è®¤æ—¶åŒº
server/src/main/resources/logback-spring.xml
@@ -5,7 +5,7 @@
            <pattern>%highlight(%date{yyyy-MM-dd HH:mm:ss}) | %highlight(%-5level) | %highlight(%thread) | %highlight(%logger) | %msg%n</pattern>
        </layout>
    </appender>
    <property name="log.path" value="/usr/local/jars/lianhelihua_sh/logs"></property>
    <property name="log.path" value="/data/jars/lianhelihua/logs"></property>
    <property name="log.fileSize" value="100MB"></property>
    <property name="log.historyDays" value="7"></property>
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
startsh/admin_start.sh
@@ -4,4 +4,17 @@
/usr/local/nacos/nacos/bin/startup.sh -m standalone
nohup java -jar /usr/local/jars/lianhelihua_sh/lianhelihua.jar > /dev/null 2>&1 &
nohup java -jar /usr/local/jars/lianhelihua_sh/lianhelihua.jar > /dev/null 2>&1 &
//UAT环境执行命令
sudo chown root:root lianhelihua.jar
sudo chmod 777  lianhelihua.jar
mv /home/service_account/lianhelihua.jar /data/jars/lianhelihua/
sudo   java -jar /data/jars/lianhelihua/lianhelihua.jar
nohup java -jar /data/jars/lianhelihua/lianhelihua.jar > /dev/null 2>&1 &
cd  /data/jars/lianhelihua/logs
tail -f /data/jars/lianhelihua/logs/info.2025-05-19.1.log