소스 검색

新仓库初始化提交

hurx 1 개월 전
커밋
14345c4e1f
100개의 변경된 파일4857개의 추가작업 그리고 0개의 파일을 삭제
  1. 18 0
      .editorconfig
  2. 47 0
      .gitignore
  3. 12 0
      .run/ruoyi-auth.run.xml
  4. 12 0
      .run/ruoyi-bill.run.xml
  5. 12 0
      .run/ruoyi-customer.run.xml
  6. 12 0
      .run/ruoyi-external.run.xml
  7. 12 0
      .run/ruoyi-gateway.run.xml
  8. 12 0
      .run/ruoyi-mall.run.xml
  9. 12 0
      .run/ruoyi-nacos.run.xml
  10. 12 0
      .run/ruoyi-order.run.xml
  11. 12 0
      .run/ruoyi-product.run.xml
  12. 12 0
      .run/ruoyi-resource.run.xml
  13. 12 0
      .run/ruoyi-system.run.xml
  14. 3 0
      .vscode/settings.json
  15. 21 0
      LICENSE
  16. 187 0
      README.md
  17. 584 0
      pom.xml
  18. 30 0
      ruoyi-api/pom.xml
  19. 25 0
      ruoyi-api/ruoyi-api-bill/pom.xml
  20. 8 0
      ruoyi-api/ruoyi-api-bill/src/main/java/org/dromara/bill/api/RemoteBillService.java
  21. 80 0
      ruoyi-api/ruoyi-api-bom/pom.xml
  22. 28 0
      ruoyi-api/ruoyi-api-customer/pom.xml
  23. 8 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerContactService.java
  24. 10 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerDeptService.java
  25. 12 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerSalesService.java
  26. 46 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerService.java
  27. 35 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteErpCustomerService.java
  28. 16 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerInfoService.java
  29. 25 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerPreparedService.java
  30. 14 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierContractService.java
  31. 72 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierInfoService.java
  32. 13 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierProcurementService.java
  33. 35 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/CustomerApiVo.java
  34. 14 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/CustomerAddressDTO.java
  35. 23 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/CustomerInfoDTO.java
  36. 18 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/PartnerPreparedDTO.java
  37. 21 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/SupplierAreaDTO.java
  38. 161 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/SupplierAuthorizeDTO.java
  39. 77 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerContactVo.java
  40. 63 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerDeptVo.java
  41. 84 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerSalesVo.java
  42. 18 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/erp/domain/ErpCompanyScaleData.java
  43. 18 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/erp/domain/ErpIndustryData.java
  44. 38 0
      ruoyi-api/ruoyi-api-external/pom.xml
  45. 32 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/domain/ExternalItemDto.java
  46. 101 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/domain/ExternalProductDto.java
  47. 26 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpBank.java
  48. 22 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpBrand.java
  49. 24 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCity.java
  50. 42 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompany.java
  51. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompanyScale.java
  52. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCountry.java
  53. 25 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomer.java
  54. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerGrade.java
  55. 47 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerSalesPriceList.java
  56. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerType.java
  57. 28 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpDepartment.java
  58. 24 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpDistrict.java
  59. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpExpense.java
  60. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpExpress.java
  61. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIncomeApplication.java
  62. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIncomeExpenseType.java
  63. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIndustry.java
  64. 27 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpPerson.java
  65. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpPosition.java
  66. 24 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpProductCategory.java
  67. 22 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpProvince.java
  68. 28 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesDelivery.java
  69. 22 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesOrder.java
  70. 46 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesPriceList.java
  71. 22 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesReturnApplication.java
  72. 21 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSupplierType.java
  73. 22 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpTaxCode.java
  74. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpUnit.java
  75. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpWarehouse.java
  76. 130 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BProductCategory.java
  77. 197 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BProductExternal.java
  78. 45 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BRegion.java
  79. 202 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BYggcOrder.java
  80. 52 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BYggcOrderTrack.java
  81. 128 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BProductCategoryBo.java
  82. 190 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BProductExternalBo.java
  83. 49 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BRegionBo.java
  84. 222 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BYggcOrderBo.java
  85. 57 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BYggcOrderTrackBo.java
  86. 12 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetAreaBo.java
  87. 16 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetProductDetailBo.java
  88. 13 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetSkusBo.java
  89. 196 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/SaveBYggcOrderBo.java
  90. 12 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/TokenBo.java
  91. 14 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalItemService.java
  92. 29 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalProductService.java
  93. 96 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderAddBo.java
  94. 23 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderBo.java
  95. 93 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderListBo.java
  96. 57 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyApplyReconBo.java
  97. 33 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAuthBo.java
  98. 28 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyConfirmOrderBo.java
  99. 28 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderBo.java
  100. 82 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderInvoiceBo.java

+ 18 - 0
.editorconfig

@@ -0,0 +1,18 @@
+# http://editorconfig.org
+root = true
+
+# 空格替代Tab缩进在各种编辑工具下效果一致
+[*]
+indent_style = space
+indent_size = 4
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.{json,yml,yaml}]
+indent_size = 2
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 47 - 0
.gitignore

@@ -0,0 +1,47 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+*.swp
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
+
+.flattened-pom.xml

+ 12 - 0
.run/ruoyi-auth.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-auth" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-auth:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-auth/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-bill.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-bill" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-ruoyi-bill:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-bill/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-customer.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-customer" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-customer:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-customer/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-external.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-external" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-external:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-external/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-gateway.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-gateway" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-gateway:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-gateway/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-mall.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-mall" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-ruoyi-mall:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-mall/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-nacos.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-nacos" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-ruoyi-nacos:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-visual/ruoyi-nacos/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-order.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-order" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-order:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-order/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-product.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-product" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-product:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-product/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-resource.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-resource" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-resource:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-resource/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 12 - 0
.run/ruoyi-system.run.xml

@@ -0,0 +1,12 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ruoyi-system" type="docker-deploy" factoryName="dockerfile" server-name="119.97.180.88">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="ruoyi/ruoyi-system:2.4.1" />
+        <option name="containerName" value="" />
+        <option name="sourceFilePath" value="ruoyi-modules/ruoyi-system/Dockerfile" />
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 3 - 0
.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "java.compile.nullAnalysis.mode": "automatic"
+}

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 RuoYi-Cloud-Plus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 187 - 0
README.md

@@ -0,0 +1,187 @@
+<img src="https://foruda.gitee.com/images/1679673780944866919/d908a86f_1766278.png" width="56%" height="56%">
+<div style="height: 10px; clear: both;"></div>
+
+- - -
+## 平台简介
+
+[![码云Gitee](https://gitee.com/dromara/RuoYi-Cloud-Plus/badge/star.svg?theme=blue)](https://gitee.com/dromara/RuoYi-Cloud-Plus)
+[![GitHub](https://img.shields.io/github/stars/dromara/RuoYi-Cloud-Plus.svg?style=social&label=Stars)](https://github.com/dromara/RuoYi-Cloud-Plus)
+[![Star](https://gitcode.com/dromara/RuoYi-Cloud-Plus/star/badge.svg)](https://gitcode.com/dromara/RuoYi-Cloud-Plus)
+[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitee.com/dromara/RuoYi-Cloud-Plus/blob/2.X/LICENSE)
+[![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Cloud-Plus)
+<br>
+[![RuoYi-Cloud-Plus](https://img.shields.io/badge/RuoYi_Cloud_Plus-2.4.1-success.svg)](https://gitee.com/dromara/RuoYi-Cloud-Plus)
+[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4-blue.svg)]()
+[![JDK-17](https://img.shields.io/badge/JDK-17-green.svg)]()
+[![JDK-21](https://img.shields.io/badge/JDK-21-green.svg)]()
+
+> Dromara RuoYi-Cloud-Plus `微服务通用权限管理系统` 重写 RuoYi-Cloud 全方位升级(不兼容原框架)
+
+> 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可<br>
+活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源
+
+> 系统演示: [传送门](https://plus-doc.dromara.org/#/common/demo_system)
+
+> 官方前端项目地址: [gitee](https://gitee.com/JavaLionLi/plus-ui) - [github](https://github.com/JavaLionLi/plus-ui) - [gitcode](https://gitcode.com/dromara/plus-ui)<br>
+> 成员前端项目地址: 基于vben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)<br>
+> 成员前端项目地址: 基于soybean [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean)<br>
+> 成员项目地址: 删除多租户与工作流 [RuoYi-Vue-Plus-Single](https://gitee.com/ColorDreams/RuoYi-Vue-Plus-Single)<br>
+
+> 文档地址: [plus-doc](https://plus-doc.dromara.org) 文档在华为云上如果打不开大概率是DNS问题 可以尝试切换网络等方式(或者科学上网)
+
+## 赞助商
+
+MaxKey 业界领先单点登录产品 - https://gitee.com/dromara/MaxKey <br>
+CCFlow 驰聘低代码-流程-表单 - https://gitee.com/opencc/RuoYi-JFlow <br>
+数舵科技 软件定制开发APP小程序等 - http://www.shuduokeji.com/ <br>
+引迈信息 软件开发平台 - https://www.jnpfsoft.com/index.html?from=plus-doc <br>
+<font color="red">**启山商城系统 多租户商城源码可免费商用可二次开发 - https://www.73app.cn/** </font><br>
+Mall4J 高质量Java商城系统 - https://www.mall4j.com/cn/?statId=11 <br>
+[如何成为赞助商 加群联系作者详谈](https://plus-doc.dromara.org/#/common/add_group)
+
+# 本框架与RuoYi的功能差异
+
+| 功能          | 本框架                                                                                                               | RuoYi                                                                              |
+|-------------|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
+| 前端项目        | 采用 Vue3 + TS + ElementPlus 重写                                                                                     | 基于Vue2/Vue3 + JS                                                                   | 
+| 后端项目结构      | 采用插件化 + 扩展包形式 结构解耦 易于扩展                                                                                           | 模块相互注入耦合严重难以扩展                                                                     | 
+| 后端代码风格      | 严格遵守Alibaba规范与项目统一配置的代码格式化                                                                                        | 代码书写与常规结构不同阅读障碍大                                                                   |
+| 分布式注册中心     | 采用 Alibaba Nacos 源码集成便于调试扩展与二次开发 框架还为其增加了各种监控                                                                     | 采用 Alibaba Nacos 自行搭建纯官方版本不可靠                                                      | 
+| 分布式配置中心     | 采用 Alibaba Nacos 源码集成便于调试扩展与二次开发 框架还为其增加了各种监控                                                                     | 采用 Alibaba Nacos 自行搭建纯官方版本不可靠                                                      | 
+| 服务网关        | 采用 SpringCloud Gateway 框架扩展了多种功能<br/>例如:内网鉴权、请求体缓存、跨域配置、请求响应日志等                                                   | 采用 SpringCloud Gateway 功能单一                                                        | 
+| 负载均衡        | 采用 SpringCloud Loadbalancer 扩展支持了开发团队路由 便于多团队开发调试                                                                 | 采用 SpringCloud Loadbalancer 功能单一                                                   |
+| RPC远程调用     | 采用 全新 Apache Dubbo 3.X 历史悠远不用多说                                                                                   | 采用 feign 功能有限编写方式 网络波动大 不稳定                                                        | 
+| 分布式限流熔断     | 采用 Alibaba Sentinel 源码集成便于调试扩展与二次开发 框架还为其增加了各种监控                                                                  | 采用 Alibaba Sentinel 自行搭建纯官方版本不可靠                                                   | 
+| 分布式事务       | 采用 Alibaba Seata 源码集成对接了Nacos与各种监控 简化了搭建部署流程                                                                      | 采用 Alibaba Seata 自行搭建纯官方版本 搭建繁琐与Nacos不挂钩 代码内使用方式怪异等                                |
+| Web容器       | 采用 Undertow 基于 XNIO 的高性能容器                                                                                        | 采用 Tomcat                                                                          |
+| 权限认证        | 采用 Sa-Token、Jwt 静态使用功能齐全 低耦合 高扩展                                                                                  | Spring Security 配置繁琐扩展性极差                                                          |
+| 权限注解        | 采用 Sa-Token 支持注解 登录校验、角色校验、权限校验、二级认证校验、HttpBasic校验、忽略校验<br/>角色与权限校验支持多种条件 如 `AND` `OR` 或 `权限 OR 角色` 等复杂表达式        | 只支持是否存在匹配                                                                          |
+| 关系数据库支持     | 原生支持 MySQL、Oracle、PostgreSQL、SQLServer<br/>可同时使用异构切换(支持其他 mybatis-plus 支持的所有数据库 只需要增加jdbc依赖即可使用 达梦金仓等均有成功案例)      | 支持 Mysql、Oracle 不支持同时使用、不支持异构切换                                                    |
+| 缓存数据库       | 支持 Redis 5-7 支持大部分新功能特性 如 分布式限流、分布式队列                                                                             | Redis 简单 get set 支持                                                                |
+| Redis客户端    | 采用 Redisson Redis官方推荐 基于Netty的客户端工具<br/>支持Redis 90%以上的命令 底层优化规避很多不正确的用法 例如: keys被转换为scan<br/>支持单机、哨兵、单主集群、多主集群等模式 | Lettuce + RedisTemplate 支持模式少 工具使用繁琐<br/>连接池采用 common-pool Bug多经常性出问题              |
+| 缓存注解        | 采用 Spring-Cache 注解 对其扩展了实现支持了更多功能<br/>例如 过期时间 最大空闲时间 组最大长度等 只需一个注解即可完成数据自动缓存                                      | 需手动编写Redis代码逻辑                                                                     |
+| ORM框架       | 采用 Mybatis-Plus 基于对象几乎不用写SQL全java操作 功能强大插件众多<br/>例如多租户插件 分页插件 乐观锁插件等等                                             | 采用 Mybatis 基于XML需要手写SQL                                                            |
+| SQL监控       | 采用 p6spy 可输出完整SQL与执行时间监控                                                                                          | log输出 需手动拼接sql与参数无法快速查看调试问题                                                        |
+| 数据分页        | 采用 Mybatis-Plus 分页插件<br/>框架对其进行了扩展 对象化分页对象 支持多种方式传参 支持前端多排序 复杂排序                                                  | 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好                               |
+| 数据权限        | 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤<br/>只需为Mapper设置好注解条件 支持多种自定义 不限于部门角色                                           | 采用 注解+aop 实现 基于部门角色 生成的sql兼容性差 不支持其他业务扩展<br/>生成sql后需手动拼接到具体业务sql上 对于多个Mapper查询不起作用 |
+| 数据脱敏        | 采用 注解 + jackson 序列化期间脱敏 支持不同模块不同的脱敏条件<br/>支持多种策略 如身份证、手机号、地址、邮箱、银行卡等 可自行扩展                                        | 无                                                                                  |
+| 数据加解密       | 采用 注解 + mybatis 拦截器 对存取数据期间自动加解密<br/>支持多种策略 如BASE64、AES、RSA、SM2、SM4等                                              | 无                                                                                  |
+| 数据翻译        | 采用 注解 + jackson 序列化期间动态修改数据 数据进行翻译<br/>支持多种模式: `映射翻译` `直接翻译` `其他扩展条件翻译` 接口化两步即可完成自定义扩展 内置多种翻译实现                   | 无                                                                                  |
+| 多数据源框架      | 采用 dynamic-datasource 支持市面大部分数据库<br/>通过yml配置即可动态管理异构不同种类的数据库 也可通过前端页面添加数据源<br/>支持spel表达式从请求头参数等条件切换数据源            | 基于 druid 手动编写代码配置数据源 配置繁琐 支持性差                                                     |
+| 多数据源事务      | 采用 dynamic-datasource 支持多数据源不同种类的数据库事务回滚                                                                          | 不支持                                                                                |
+| 数据库连接池      | 采用 HikariCP Spring官方内置连接池 配置简单 以性能与稳定性闻名天下                                                                        | 采用 druid bug众多 社区维护差 活跃度低 配置众多繁琐性能一般                                               |
+| 数据库主键       | 采用 雪花ID 基于时间戳的 有序增长 唯一ID 再也不用为分库分表 数据合并主键冲突重复而发愁                                                                  | 采用 数据库自增ID 支持数据量有限 不支持多数据源主键唯一                                                     |
+| WebSocket协议 | 基于 Spring 封装的 WebSocket 协议 扩展了Token鉴权与分布式会话同步 不再只是基于单机的废物                                                         | 无                                                                                  |
+| SSE推送       | 采用 Spring SSE 实现 扩展了Token鉴权与分布式会话同步                                                                               | 无                                                                                  |
+| 序列化         | 采用 Jackson Spring官方内置序列化 靠谱!!!                                                                                    | 采用 fastjson bugjson 远近闻名                                                           | 
+| 分布式幂等       | 参考美团GTIS防重系统简化实现(细节可看文档)                                                                                          | 手动编写注解基于aop实现                                                                      |
+| 分布式任务调度     | 采用 SnailJob 天生支持分布式 统一的管理中心 支持多种数据库 支持分片重试DAG任务流等                                                                 | 采用 Quartz 基于数据库锁性能差 集群需要做很多配置与改造                                                   | 
+| 分布式日志中心     | 采用 ELK 业界成熟解决方案 实时收集所有服务的运行日志 快速发现定位问题                                                                            | 无                                                                                  | 
+| 分布式搜索引擎     | 采用 ElasticSearch、Easy-Es 以 Mybatis-Plus 方式操作 ElasticSearch                                                        | 无                                                                                  | 
+| 分布式消息队列     | 采用 支持 Kafka、RocketMQ、RabbitMQ 各种 延迟消息 事务消息 流消息                                                                    | 无                                                                                  | 
+| 分布式消息总线     | 采用 SpringCloud Bus 实现事件总线 跨服务通知 支持 Kafka、RocketMQ、RabbitMQ                                                        | 无                                                                                  |
+| 分库分表功能      | 采用 Apache Sharding-Proxy 代理服务无入侵支持分库分表 只需编写分库分表规则即可                                                               | 无                                                                                  |
+| 文件存储        | 采用 Minio 分布式文件存储 天生支持多机、多硬盘、多分片、多副本存储<br/>支持权限管理 安全可靠 文件可加密存储                                                     | 采用 本机文件存储 文件裸漏 易丢失泄漏 不支持集群有单点效应                                                    |
+| 云存储         | 采用 AWS S3 协议客户端 支持 七牛、阿里、腾讯 等一切支持S3协议的厂家                                                                          | 不支持                                                                                |
+| 短信          | 支持 阿里、腾讯 只需在yml配置好厂家密钥即可使用 接口化支持扩展其他厂家                                                                            | 不支持                                                                                |
+| 邮件          | 采用 mail-api 通用协议支持大部分邮件厂商                                                                                         | 不支持                                                                                |
+| 接口文档        | 采用 SpringDoc、javadoc 无注解零入侵基于java注释<br/>只需把注释写好 无需再写一大堆的文档注解了                                                     | 采用 Springfox 已停止维护 需要编写大量的注解来支持文档生成                                                | 
+| 校验框架        | 采用 Validation 支持注解与工具类校验 注解支持国际化                                                                                  | 仅支持注解 且注解不支持国际化                                                                    |
+| Excel框架     | 采用 FastExcel(原Alibaba EasyExcel) 基于插件化<br/>框架对其增加了很多功能 例如 自动合并相同内容 自动排列布局 字典翻译等                                   | 基于 POI 手写实现 功能有限 复杂 扩展性差                                                           |
+| 工作流支持       | 支持各种复杂审批 转办 委派 加减签 会签 或签 票签 等功能                                                                                   | 无                                                                                  |
+| 工具类框架       | 采用 Hutool、Lombok 上百种工具覆盖90%的使用需求 基于注解自动生成 get set 等简化框架大量代码                                                       | 手写工具稳定性差易出问题 工具数量有限 代码臃肿需自己手写 get set 等                                            | 
+| 服务监控框架      | 采用 SpringBoot-Admin 基于SpringBoot官方 actuator 探针机制<br/>实时监控服务状态 框架还为其扩展了在线日志查看监控                                    | 无                                                                                  | 
+| 全方位监控报警     | 采用 Prometheus、Grafana 多样化采集 多模板大屏展示 实时报警监控 提供详细的搭建文档                                                              | 无                                                                                  | 
+| 链路追踪        | 采用 Apache SkyWalking 还在为请求不知道去哪了 到哪出了问题而烦恼吗<br/>用了它即可实时查看请求经过的每一处每一个节点                                            | 无                                                                                  |
+| 代码生成器       | 只需设计好表结构 一键生成所有crud代码与页面<br/>降低80%的开发量 把精力都投入到业务设计上<br/>框架为其适配MP、SpringDoc规范化代码 同时支持动态多数据源代码生成                    | 代码生成原生结构 只支持单数据源生成                                                                 |
+| 部署方式        | 支持 Docker 编排 一键搭建所有环境 让开发人员从此不再为搭建环境而烦恼                                                                           | 原生jar部署 其他环境需手动下载安装 自行搭建                                                           | 
+| 项目路径修改      | 提供详细的修改方案文档 并为其做了一些改动 非常简单即可修改成自己想要的                                                                              | 需要做很多改造 文档说明有限                                                                     |
+| 国际化         | 基于请求头动态返回不同语种的文本内容 开发难度低 有对应的工具类 支持大部分注解内容国际化                                                                     | 只提供基础功能 其他需自行编写扩展                                                                  |
+| 代码单例测试      | 提供单例测试 使用方式编写方法与maven多环境单测插件                                                                                      | 只提供基础功能 其他需自行编写扩展                                                                  |
+| Demo案例      | 提供框架功能的实际使用案例 单独一个模块提供了很多很全                                                                                       | 无                                                                                  |
+
+## 本框架与RuoYi的业务差异
+
+| 业务     | 功能说明                                    | 本框架 | RuoYi            |
+|--------|-----------------------------------------|-----|------------------|
+| 租户管理   | 系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等         | 支持  | 无                |
+| 租户套餐管理 | 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等             | 支持  | 无                |
+| 用户管理   | 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等          | 支持  | 支持               |
+| 部门管理   | 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限          | 支持  | 支持               |
+| 岗位管理   | 配置系统用户所属担任职务                            | 支持  | 支持               |
+| 菜单管理   | 配置系统菜单、操作权限、按钮权限标识等                     | 支持  | 支持               |
+| 角色管理   | 角色菜单权限分配、设置角色按机构进行数据范围权限划分              | 支持  | 支持               |
+| 字典管理   | 对系统中经常使用的一些较为固定的数据进行维护                  | 支持  | 支持               |
+| 参数管理   | 对系统动态配置常用参数                             | 支持  | 支持               |
+| 通知公告   | 系统通知公告信息发布维护                            | 支持  | 支持               |
+| 操作日志   | 系统正常操作日志记录和查询 系统异常信息日志记录和查询             | 支持  | 支持               |
+| 登录日志   | 系统登录日志记录查询包含登录异常                        | 支持  | 支持               |
+| 文件管理   | 系统文件展示、上传、下载、删除等管理                      | 支持  | 无                |
+| 文件配置管理 | 系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理          | 支持  | 无                |
+| 在线用户管理 | 已登录系统的在线用户信息监控与强制踢出操作                   | 支持  | 支持               |
+| 定时任务   | 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等         | 支持  | 仅支持任务与日志管理       |
+| 代码生成   | 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 | 支持  | 仅支持单数据源          |
+| 系统接口   | 根据业务代码自动生成相关的api接口文档                    | 支持  | 支持               |
+| 服务监控   | 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等     | 支持  | 仅支持单机CPU、内存、磁盘监控 |
+| 缓存监控   | 对系统的缓存信息查询,命令统计等。                       | 支持  | 支持               |
+| 使用案例   | 系统的一些功能案例                               | 支持  | 不支持              |
+
+## 参考文档
+
+使用框架前请仔细阅读文档重点注意事项
+<br>
+>[初始化项目 必看](https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/init)
+>>[https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/init](https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/init)
+>
+>[专栏与视频 入门必看](https://plus-doc.dromara.org/#/common/column)
+>>[https://plus-doc.dromara.org/#/common/column](https://plus-doc.dromara.org/#/common/column)
+>
+>[部署项目 必看](https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/deploy)
+>>[https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/deploy](https://plus-doc.dromara.org/#/ruoyi-cloud-plus/quickstart/deploy)
+>
+>[如何加群](https://plus-doc.dromara.org/#/common/add_group)
+>>[https://plus-doc.dromara.org/#/common/add_group](https://plus-doc.dromara.org/#/common/add_group)
+>
+>[参考文档 Wiki](https://plus-doc.dromara.org)
+>>[https://plus-doc.dromara.org](https://plus-doc.dromara.org)
+
+
+## 软件架构图
+
+![Plus部署架构图](https://foruda.gitee.com/images/1678980131147747524/5c2d5a5c_1766278.png "Plus部署架构图.png")
+
+## 贡献代码
+
+[参与贡献的方式 https://plus-doc.dromara.org/#/common/contribution](https://plus-doc.dromara.org/#/common/contribution)
+
+## 捐献作者
+
+作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭  
+<img src="https://foruda.gitee.com/images/1678975784848381069/d8661ed9_1766278.png" width="300px" height="450px" />
+<img src="https://foruda.gitee.com/images/1678975801230205215/6f96229d_1766278.png" width="300px" height="450px" />
+
+## 演示图例
+
+|                                                                                            |                                                                                            |
+|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
+| ![输入图片说明](https://foruda.gitee.com/images/1680077524361362822/270bb429_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680077619939771291/989bf9b6_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680077681751513929/1c27c5bd_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680077721559267315/74d63e23_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680077765638904515/1b75d4a6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078026375951297/eded7a4b_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078237104531207/0eb1b6a7_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078254306078709/5931e22f_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078287971528493/0b9af60a_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078308138770249/8d3b6696_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078352553634393/db5ef880_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078378238393374/601e4357_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078414983206024/2aae27c1_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078446738419874/ecce7d59_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078475971341775/149e8634_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078491666717143/3fadece7_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078558863188826/fb8ced2a_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078574561685461/ae68a0b2_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078594932772013/9d8bfec6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078626493093532/fcfe4ff6_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078643608812515/0295bd4f_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078685196286463/d7612c81_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078703877318597/56fce0bc_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078716586545643/b6dbd68f_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078734103217688/eb1e6aa6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078759131415480/73c525d8_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078779416197879/75e3ed02_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078802329118061/77e10915_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078893627848351/34a1c342_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078928175016986/f126ec4a_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078941718318363/b68a0f72_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078963175518631/3bb769a1_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1735829153637063344/3c21fd4c_1419627.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1735829181303499815/4522cefa_1419627.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1735829377205259767/76a705d7_1419627.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1722959592856812900/e2d0d342_1419627.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680079274333484664/4dfdc7c0_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680079290467458224/d6715fcf_1766278.png "屏幕截图") |
+
+

+ 584 - 0
pom.xml

@@ -0,0 +1,584 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.dromara</groupId>
+    <artifactId>ruoyi-cloud-plus</artifactId>
+    <version>${revision}</version>
+
+    <name>RuoYi-Cloud-Plus</name>
+    <url>https://gitee.com/dromara/RuoYi-Cloud-Plus</url>
+    <description>Dromara RuoYi-Cloud-Plus微服务系统</description>
+
+    <properties>
+        <revision>2.4.1</revision>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>17</java.version>
+        <spring-boot.version>3.4.7</spring-boot.version>
+        <spring-cloud.version>2024.0.0</spring-cloud.version>
+        <spring-boot-admin.version>3.4.7</spring-boot-admin.version>
+        <mybatis.version>3.5.16</mybatis.version>
+        <mybatis-plus.version>3.5.12</mybatis-plus.version>
+        <p6spy.version>3.9.1</p6spy.version>
+        <dynamic-ds.version>4.3.1</dynamic-ds.version>
+        <velocity.version>2.3</velocity.version>
+        <swagger.core.version>2.2.30</swagger.core.version>
+        <springdoc.version>2.8.8</springdoc.version>
+        <therapi-javadoc.version>0.15.0</therapi-javadoc.version>
+        <fastexcel.version>1.2.0</fastexcel.version>
+        <hutool.version>5.8.38</hutool.version>
+        <redisson.version>3.50.0</redisson.version>
+        <lock4j.version>2.2.7</lock4j.version>
+        <snailjob.version>1.5.0</snailjob.version>
+        <satoken.version>1.44.0</satoken.version>
+        <lombok.version>1.18.36</lombok.version>
+        <logstash.version>7.4</logstash.version>
+        <easy-es.version>3.0.0</easy-es.version>
+        <skywalking-toolkit.version>9.3.0</skywalking-toolkit.version>
+        <bouncycastle.version>1.80</bouncycastle.version>
+        <mapstruct-plus.version>1.4.8</mapstruct-plus.version>
+        <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
+        <justauth.version>1.16.7</justauth.version>
+        <!-- 离线IP地址定位库 -->
+        <ip2region.version>2.7.0</ip2region.version>
+        <!-- 临时修复 fastjson 漏洞 -->
+        <fastjson.version>1.2.83</fastjson.version>
+        <!-- OSS 配置 -->
+        <aws.sdk.version>2.28.22</aws.sdk.version>
+        <!-- SMS 配置 -->
+        <sms4j.version>3.3.4</sms4j.version>
+        <!-- 面向运行时的D-ORM依赖 -->
+        <anyline.version>8.7.2-20250603</anyline.version>
+        <!-- 工作流配置 -->
+        <warm-flow.version>1.7.4</warm-flow.version>
+        <!-- mq配置 -->
+        <rocketmq.version>2.3.0</rocketmq.version>
+
+        <!-- 插件版本 -->
+        <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
+        <maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version>
+        <flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
+        <!-- 打包默认跳过测试 -->
+        <skipTests>true</skipTests>
+    </properties>
+
+    <profiles>
+
+        <profile>
+            <id>ljy</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>5d634656-98fc-4cfe-90ee-ef2129fc58bd</profiles.active>
+                <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+        </profile>
+
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>dev</profiles.active>
+                <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+
+        </profile>
+        <profile>
+            <id>zl</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>zl</profiles.active>
+                <nacos.server>169.254.38.213:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+             <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>xiaolu</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>9e017a3a-a9c0-4a4a-9581-7c8f38e42131</profiles.active>
+                <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+
+        </profile>
+        <profile>
+            <id>hrx</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>hrx</profiles.active>
+                <profiles.active>5346d34f-9daf-4259-bc2f-5219f814987f</profiles.active>
+                <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <profiles.active>prod</profiles.active>
+                <nacos.server>127.0.0.1:8848</nacos.server>
+                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
+                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
+                <nacos.username>nacos</nacos.username>
+                <nacos.password>nacos</nacos.password>
+                <logstash.address>127.0.0.1:4560</logstash.address>
+            </properties>
+        </profile>
+    </profiles>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+
+            <dependency>
+                <groupId>org.bouncycastle</groupId>
+                <artifactId>bcprov-jdk18on</artifactId>
+                <version>1.78.1</version>
+            </dependency>
+
+            <!-- SpringCloud 微服务 -->
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- SpringCloud Alibaba 微服务 -->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-common-alibaba-bom</artifactId>
+                <version>${revision}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- SpringBoot 依赖配置 -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- hutool 的依赖配置-->
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-bom</artifactId>
+                <version>${hutool.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- JustAuth 的依赖配置-->
+            <dependency>
+                <groupId>me.zhyd.oauth</groupId>
+                <artifactId>JustAuth</artifactId>
+                <version>${justauth.version}</version>
+            </dependency>
+
+            <!-- common 的依赖配置-->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-common-bom</artifactId>
+                <version>${revision}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- api 的依赖配置-->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-bom</artifactId>
+                <version>${revision}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.dev33</groupId>
+                <artifactId>sa-token-core</artifactId>
+                <version>${satoken.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.dev33</groupId>
+                <artifactId>sa-token-spring-boot3-starter</artifactId>
+                <version>${satoken.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.mybatis</groupId>
+                <artifactId>mybatis</artifactId>
+                <version>${mybatis.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-jsqlparser</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-annotation</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <!-- sql性能分析插件 -->
+            <dependency>
+                <groupId>p6spy</groupId>
+                <artifactId>p6spy</artifactId>
+                <version>${p6spy.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>io.swagger.core.v3</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.core.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.springdoc</groupId>
+                <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
+                <version>${springdoc.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.github.therapi</groupId>
+                <artifactId>therapi-runtime-javadoc</artifactId>
+                <version>${therapi-javadoc.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.projectlombok</groupId>
+                <artifactId>lombok</artifactId>
+                <version>${lombok.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.idev.excel</groupId>
+                <artifactId>fastexcel</artifactId>
+                <version>${fastexcel.version}</version>
+            </dependency>
+
+            <!-- 代码生成使用模板 -->
+            <dependency>
+                <groupId>org.apache.velocity</groupId>
+                <artifactId>velocity-engine-core</artifactId>
+                <version>${velocity.version}</version>
+            </dependency>
+
+            <!--redisson-->
+            <dependency>
+                <groupId>org.redisson</groupId>
+                <artifactId>redisson-spring-boot-starter</artifactId>
+                <version>${redisson.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>lock4j-redisson-spring-boot-starter</artifactId>
+                <version>${lock4j.version}</version>
+            </dependency>
+
+            <!--  SnailJob Client -->
+            <dependency>
+                <groupId>com.aizuda</groupId>
+                <artifactId>snail-job-client-starter</artifactId>
+                <version>${snailjob.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.aizuda</groupId>
+                <artifactId>snail-job-client-job-core</artifactId>
+                <version>${snailjob.version}</version>
+            </dependency>
+
+            <!-- 加密包引入 -->
+            <dependency>
+                <groupId>org.bouncycastle</groupId>
+                <artifactId>bcprov-jdk15to18</artifactId>
+                <version>${bouncycastle.version}</version>
+            </dependency>
+
+            <!-- logstash -->
+            <dependency>
+                <groupId>net.logstash.logback</groupId>
+                <artifactId>logstash-logback-encoder</artifactId>
+                <version>${logstash.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.dromara.easy-es</groupId>
+                <artifactId>easy-es-boot-starter</artifactId>
+                <version>${easy-es.version}</version>
+            </dependency>
+
+            <!-- skywalking 整合 logback -->
+            <dependency>
+                <groupId>org.apache.skywalking</groupId>
+                <artifactId>apm-toolkit-logback-1.x</artifactId>
+                <version>${skywalking-toolkit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.skywalking</groupId>
+                <artifactId>apm-toolkit-trace</artifactId>
+                <version>${skywalking-toolkit.version}</version>
+            </dependency>
+
+            <!--  AWS SDK for Java 2.x  -->
+            <dependency>
+                <groupId>software.amazon.awssdk</groupId>
+                <artifactId>s3</artifactId>
+                <version>${aws.sdk.version}</version>
+            </dependency>
+            <!-- 基于 AWS CRT 的 S3 客户端的性能增强的 S3 传输管理器 -->
+            <dependency>
+                <groupId>software.amazon.awssdk</groupId>
+                <artifactId>s3-transfer-manager</artifactId>
+                <version>${aws.sdk.version}</version>
+            </dependency>
+            <!-- 将基于 Netty 的 HTTP 客户端从类路径中移除 -->
+            <dependency>
+                <groupId>software.amazon.awssdk</groupId>
+                <artifactId>netty-nio-client</artifactId>
+                <version>${aws.sdk.version}</version>
+            </dependency>
+
+            <!--短信sms4j-->
+            <dependency>
+                <groupId>org.dromara.sms4j</groupId>
+                <artifactId>sms4j-spring-boot-starter</artifactId>
+                <version>${sms4j.version}</version>
+            </dependency>
+
+            <!-- 离线IP地址定位库 ip2region -->
+            <dependency>
+                <groupId>org.lionsoul</groupId>
+                <artifactId>ip2region</artifactId>
+                <version>${ip2region.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+
+            <!-- dubbo 专用 -->
+            <dependency>
+                <groupId>redis.clients</groupId>
+                <artifactId>jedis</artifactId>
+                <version>5.1.0</version>
+            </dependency>
+
+            <dependency>
+                <groupId>io.github.linpeilie</groupId>
+                <artifactId>mapstruct-plus-spring-boot-starter</artifactId>
+                <version>${mapstruct-plus.version}</version>
+            </dependency>
+
+            <!--消息队列-->
+            <dependency>
+                <groupId>org.apache.rocketmq</groupId>
+                <artifactId>rocketmq-spring-boot-starter</artifactId>
+                <version>${rocketmq.version}</version>
+            </dependency>
+
+            <!-- Warm-Flow国产工作流引擎, 在线文档:http://warm-flow.cn/ -->
+            <dependency>
+                <groupId>org.dromara.warm</groupId>
+                <artifactId>warm-flow-mybatis-plus-sb3-starter</artifactId>
+                <version>${warm-flow.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.dromara.warm</groupId>
+                <artifactId>warm-flow-plugin-ui-sb-web</artifactId>
+                <version>${warm-flow.version}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>ruoyi-auth</module>
+        <module>ruoyi-gateway</module>
+        <module>ruoyi-visual</module>
+        <module>ruoyi-modules</module>
+        <module>ruoyi-api</module>
+        <module>ruoyi-common</module>
+        <module>ruoyi-example</module>
+    </modules>
+    <packaging>pom</packaging>
+
+    <dependencies>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.version}</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>com.github.therapi</groupId>
+                            <artifactId>therapi-runtime-javadoc-scribe</artifactId>
+                            <version>0.15.0</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                            <version>${lombok.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.springframework.boot</groupId>
+                            <artifactId>spring-boot-configuration-processor</artifactId>
+                            <version>${spring-boot.version}</version>
+                        </path>
+                        <path>
+                            <groupId>io.github.linpeilie</groupId>
+                            <artifactId>mapstruct-plus-processor</artifactId>
+                            <version>${mapstruct-plus.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok-mapstruct-binding</artifactId>
+                            <version>${mapstruct-plus.lombok.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                    <compilerArgs>
+                        <arg>-parameters</arg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
+            <!-- 单元测试使用 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${maven-surefire-plugin.version}</version>
+                <configuration>
+                    <argLine>-Dfile.encoding=UTF-8</argLine>
+                    <!-- 根据打包环境执行对应的@Tag测试方法 -->
+                    <groups>${profiles.active}</groups>
+                    <!-- 排除标签 -->
+                    <excludedGroups>exclude</excludedGroups>
+                </configuration>
+            </plugin>
+            <!-- 统一版本号管理 -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>flatten-maven-plugin</artifactId>
+                <version>${flatten-maven-plugin.version}</version>
+                <configuration>
+                    <updatePomFile>true</updatePomFile>
+                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>flatten</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>flatten</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>flatten.clean</id>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>clean</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <!-- 关闭过滤 -->
+                <filtering>false</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/webapp/</directory>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <!-- 引入所有 匹配文件进行过滤 -->
+                <includes>
+                    <include>application*</include>
+                    <include>bootstrap*</include>
+                    <include>logback*</include>
+                </includes>
+                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>huawei nexus</name>
+            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>huawei nexus</name>
+            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+</project>
+

+ 30 - 0
ruoyi-api/pom.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-cloud-plus</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <modules>
+        <module>ruoyi-api-bom</module>
+        <module>ruoyi-api-system</module>
+        <module>ruoyi-api-resource</module>
+        <module>ruoyi-api-workflow</module>
+        <module>ruoyi-api-product</module>
+        <module>ruoyi-api-external</module>
+        <module>ruoyi-api-order</module>
+        <module>ruoyi-api-customer</module>
+        <module>ruoyi-api-bill</module>
+    </modules>
+
+    <artifactId>ruoyi-api</artifactId>
+    <packaging>pom</packaging>
+
+    <description>
+        ruoyi-api系统接口
+    </description>
+
+</project>

+ 25 - 0
ruoyi-api/ruoyi-api-bill/pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-api</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>ruoyi-api-bill</artifactId>
+
+    <dependencies>
+
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+
+    </dependencies>
+
+</project>

+ 8 - 0
ruoyi-api/ruoyi-api-bill/src/main/java/org/dromara/bill/api/RemoteBillService.java

@@ -0,0 +1,8 @@
+package org.dromara.bill.api;
+
+/**
+ * author
+ * 时间:2026/2/4,16:52
+ */
+public interface RemoteBillService {
+}

+ 80 - 0
ruoyi-api/ruoyi-api-bom/pom.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.dromara</groupId>
+    <artifactId>ruoyi-api-bom</artifactId>
+    <packaging>pom</packaging>
+    <version>${revision}</version>
+
+    <description>
+        ruoyi-api-bom api依赖项
+    </description>
+
+    <properties>
+        <revision>2.4.1</revision>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-bill</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-customer</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <!-- 系统接口 -->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-system</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <!-- 资源服务接口 -->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-resource</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <!-- workflow接口 -->
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-workflow</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-product</artifactId>
+                <version>${revision}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-external</artifactId>
+                <version>${revision}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-order</artifactId>
+                <version>${revision}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-customer</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+</project>

+ 28 - 0
ruoyi-api/ruoyi-api-customer/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-api</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-api-customer</artifactId>
+
+    <description>
+        ruoyi-api-customer 客户模块接口模块
+    </description>
+
+    <dependencies>
+
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+
+    </dependencies>
+
+</project>

+ 8 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerContactService.java

@@ -0,0 +1,8 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.vo.RemoteCustomerContactVo;
+
+public interface RemoteCustomerContactService {
+
+    RemoteCustomerContactVo selectCustomerContactByCustomerIdAndUserId(Long customerId, Long userId);
+}

+ 10 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerDeptService.java

@@ -0,0 +1,10 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.vo.RemoteCustomerDeptVo;
+
+import java.util.List;
+
+public interface RemoteCustomerDeptService {
+
+    List<RemoteCustomerDeptVo> selectCustomerDeptListByCustomerId(Long customerId);
+}

+ 12 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerSalesService.java

@@ -0,0 +1,12 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.vo.RemoteCustomerSalesVo;
+
+public interface RemoteCustomerSalesService {
+
+    /*根据客户id 查询客户的销售信息  一对一*/
+    RemoteCustomerSalesVo selectCustomerSalesInfoByCustomerId(Long customerId);
+
+    /*更新客户销售信息*/
+    Boolean updateCustomerSalesInfo(RemoteCustomerSalesVo vo);
+}

+ 46 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerService.java

@@ -0,0 +1,46 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.CustomerApiVo;
+import org.dromara.customer.api.domain.dto.CustomerAddressDTO;
+import org.dromara.customer.api.domain.dto.CustomerInfoDTO;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemoteCustomerService {
+
+    /**
+     * 根据ids查询客户名称
+     */
+    Map<Long, String> selectCustomerNameByIds(Set<Long> ids);
+
+    /**
+     * 根据ids查询客户信息(编号+名称)
+     */
+    Map<Long, CustomerApiVo> selectCustomerByIds(Set<Long> ids);
+
+    /**
+     * 根据userId查询客户id
+     */
+    Long selectCustomerIdByUserId(Long userId);
+
+    CustomerInfoDTO selectCustomerInfoById(Long customerId);
+
+    /**
+    * 根据userId查询联系人id
+    * */
+    Long selectContactIdByUserId(Long userId);
+
+    /**
+    * 根据客户id查询公司名称
+    * */
+    String selectCompanyNameByCustomerId(Long customerId);
+
+    /**
+     * 新增收货人
+     */
+    CustomerInfoDTO addReceiver(String name, String email);
+
+    CustomerAddressDTO addReceiverAddress(String provinceId, String cityId, String countyId, String address, String mobile);
+
+}

+ 35 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteErpCustomerService.java

@@ -0,0 +1,35 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.erp.domain.*;
+
+import java.util.Map;
+
+/**
+ * erp客户服务
+ * @author
+ * @date 2026/1/23 下午6:18
+ */
+public interface RemoteErpCustomerService {
+
+    /**
+    * 同步企业规模
+    * */
+    Boolean syncCompanyScale(ErpCompanyScaleData companyScale);
+
+    /**
+    * 删除企业规模
+    * */
+    Boolean deleteCompanyScale(ErpCompanyScaleData companyScale);
+
+
+
+    /**
+    * 同步行业类别
+    * */
+    Boolean syncIndustry(ErpIndustryData industry);
+    /**
+    * 删除行业类别
+    * */
+    Boolean deleteIndustry(ErpIndustryData industry);
+
+}

+ 16 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerInfoService.java

@@ -0,0 +1,16 @@
+package org.dromara.customer.api;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemotePartnerInfoService {
+
+    /**
+     * 根据ids查询伙伴商名称
+     */
+    Map<Long, String> selectPartnerNameByIds(Set<Long> ids);
+    /**
+     * 根据userId查询伙伴商id
+     */
+    Long selectPartnerIdByUserId(Long userId);
+}

+ 25 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerPreparedService.java

@@ -0,0 +1,25 @@
+package org.dromara.customer.api;
+
+import org.dromara.common.core.domain.zhongche.vo.PrepareOrderDetailRespVo;
+import org.dromara.customer.api.domain.dto.PartnerPreparedDTO;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/2/3,17:49
+ */
+public interface RemotePartnerPreparedService {
+
+    PartnerPreparedDTO updatePartnerPreparedById(String id);
+
+    PartnerPreparedDTO cancelPartnerPreparedById(String prepareOrderNo, String cancelReason);
+
+    PartnerPreparedDTO createPartnerPrepared(PrepareOrderDetailRespVo prepareOrderDetailRespVo);
+
+    /**
+     * 根据ids查询报备订单号
+     */
+    Map<Long, String> selectPreparedOrderNoByIds(Set<Long> ids);
+}

+ 14 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierContractService.java

@@ -0,0 +1,14 @@
+package org.dromara.customer.api;
+
+/**
+ * author
+ * 时间:2026/1/23,9:21
+ */
+public interface RemoteSupplierContractService {
+
+    /**
+     * 获取待审核 以及 生效的合同,并通过定时任务批量更新合同状态
+     */
+    int updateExpiredContractStatus();
+
+}

+ 72 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierInfoService.java

@@ -0,0 +1,72 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.dto.SupplierAreaDTO;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/1/23,9:43
+ */
+public interface RemoteSupplierInfoService {
+    /**
+     * 通过生效状态下判断有效期来更新是否停用
+     */
+    int updateIsDisable();
+
+    /**
+     * 根据ids查询供应商名称
+     */
+    Map<Long, String> selectSupplierNameByIds(Set<Long> ids);
+
+    List<SupplierAuthorizeDTO> getSupplierAuthorizeList(Long brandId);
+
+    /**
+     * 根据企业名称获取供应商id集合
+     * @param enterpriseName
+     * @return
+     */
+    List<Long> getSupplierIds(String enterpriseName);
+
+    /**
+     * 根据供应区域获取供应商id集合
+     * @param areaname
+     * @param level
+     * @return
+     */
+    List<Long> getSupplierIdsBySupplyArea(String areaname,String level);
+
+    /**
+     * 根据供应商id获取合同id集合
+     * @param SupplierID
+     * @return
+     */
+    List<Long> getContractIdBySupplySupplierID(Set<Long> SupplierID);
+
+
+    Map<Long,Long> contractToSupplierMap(List<Long> contractSupplyIds);
+
+    /**
+     * 根据ids查询供应商名称
+     */
+    Map<Long, String> selectEnterpriseNameByIds(List<Long> ids);
+
+
+    Map<Long, SupplierAreaDTO> selectSupplierInfoByContractIds(List<Long> contractSupplyIds);
+
+    int updateExpiredAuthorizedStatus();
+
+    /**
+    * 根据用户id查询供应商id
+    * */
+    Long selectSupplierIdByUserId(Long userId);
+    /**
+     * 单体查询供应商审核状态
+     *
+     * @param supplierId
+     */
+    Long selectSupplierStatusById(Long supplierId);
+}

+ 13 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierProcurementService.java

@@ -0,0 +1,13 @@
+package org.dromara.customer.api;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/1/14,19:21
+ */
+public interface RemoteSupplierProcurementService {
+
+    Map<String,Long> selectSupplierProcurementIds(Long id);
+}

+ 35 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/CustomerApiVo.java

@@ -0,0 +1,35 @@
+package org.dromara.customer.api.domain;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 客户API视图对象
+ */
+@Data
+public class CustomerApiVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 客户ID
+     */
+    private Long id;
+
+    private Long companyId;
+
+    /**
+     * 客户编号
+     */
+    private String customerNo;
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
+
+
+}

+ 14 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/CustomerAddressDTO.java

@@ -0,0 +1,14 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author
+ * 时间:2026/2/6,10:59
+ */
+@Data
+public class CustomerAddressDTO implements Serializable {
+    private Long id;
+}

+ 23 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/CustomerInfoDTO.java

@@ -0,0 +1,23 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author
+ * 时间:2026/2/6,10:50
+ */
+@Data
+public class CustomerInfoDTO implements Serializable {
+    private Long id;
+
+    private String customerName;
+
+    /**
+     * 状态(0已审核 待审核)
+     */
+    private String status;
+
+
+}

+ 18 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/PartnerPreparedDTO.java

@@ -0,0 +1,18 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author
+ * 时间:2026/2/3,17:51
+ */
+@Data
+public class PartnerPreparedDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private boolean flag;
+
+    private String message;
+}

+ 21 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/SupplierAreaDTO.java

@@ -0,0 +1,21 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * author
+ * 时间:2026/3/12,15:13
+ */
+@Data
+public class SupplierAreaDTO implements Serializable {
+    private String enterpriseName;
+
+    private String provinceName;
+
+    private String cityName;
+
+    private Date endTime;
+}

+ 161 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/SupplierAuthorizeDTO.java

@@ -0,0 +1,161 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * author
+ * 时间:2026/3/11,9:56
+ */
+@Data
+public class SupplierAuthorizeDTO implements Serializable {
+    private Long id;
+
+    /**
+     * 类目ID 三级
+     */
+    private Long categoryId;
+
+    private Long brandId;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+
+    /**
+     * 供货类目
+     */
+    private String supplyProCate;
+
+    /**
+     * 可供货品牌
+     */
+    private String supplyBrand;
+
+    /**
+     * 授权单编号
+     */
+    private String authorizeNo;
+
+    /**
+     * 有授权品牌
+     */
+    private String authBrand;
+
+    /**
+     * 品牌编号
+     */
+    private String brandNo;
+
+    /**
+     * 品牌名称(中文)
+     */
+    private String brandName;
+
+    /**
+     * 品牌英文名称
+     */
+    private String brandEnglishName;
+
+    /**
+     * 品牌LOGO图片地址
+     */
+    private String brandLogo;
+
+    /**
+     * 授权类型(如独家/非独家)
+     */
+    private String authorizeType;
+
+    /**
+     * 授权品类(多个品类用分隔符区分)
+     */
+    private String authorizationCategory;
+
+    /**
+     * 品牌授权方(授权出具主体)
+     */
+    private String brandLicensor;
+
+    /**
+     * 授权关系文件存储地址
+     */
+    private String authorizationRelationshipFile;
+
+    /**
+     * 授权开始时间
+     */
+    private Date authorizationStartTime;
+
+    /**
+     * 授权结束时间
+     */
+    private Date authorizationEndTime;
+
+    /**
+     * 授权区域(如中国大陆/全球等)
+     */
+    private String authorizedArea;
+
+    /**
+     * 品牌持有类型(如自有/代理)
+     */
+    private String brandHoldType;
+
+    /**
+     * 授权层级(如一级/二级授权)
+     */
+    private String authorizeLevel;
+
+    /**
+     * 授权审核状态(0待审核/1已通过/2已驳回)
+     */
+    private String authorizedStatus;
+
+    /**
+     * 授权关系文件原文件名
+     */
+    private String authorizationRelationshipFileName;
+
+    /**
+     * 品牌注册人
+     */
+    private String brandRegistrant;
+
+    /**
+     * 审核反馈意见
+     */
+    private String reviewFeedback;
+
+    /**
+     * 供应区域(省)
+     */
+    private String province;
+
+    /**
+     * 供应区域(市)
+     */
+    private String city;
+
+    /**
+     * 一级,二级,三级品目名称 oneLevelName twoLevelName threeLevelName
+     */
+    Map<String, String> categorysMap;
+
+}

+ 77 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerContactVo.java

@@ -0,0 +1,77 @@
+package org.dromara.customer.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class RemoteCustomerContactVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 联系人ID
+     */
+    private Long id;
+
+    /*联系人编号*/
+    private String contactNo;
+
+    /*系统用户id*/
+    private Long userId;
+
+    /**
+     * 所属客户ID
+     */
+    private Long customerId;
+
+
+    /**
+     * 联系人姓名
+     */
+    private String contactName;
+
+    private String wechat;
+
+    /*自定义登录名*/
+    private String customLoginName;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 办公电话
+     */
+    private String officePhone;
+
+    /**
+     * 办公电话2
+     */
+    private String officePhoneTwo;
+
+    /**
+     * 性别
+     */
+    private String gender;
+
+    /**
+     * 采购角色(如:采购经理、财务)
+     */
+    private Long roleId;
+
+    private String roleName;
+
+    private Long deptId;
+
+    private String deptName;
+
+    /**
+     * 是否主联系人:0=是,1=否
+     */
+    private String isPrimary;
+
+}

+ 63 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerDeptVo.java

@@ -0,0 +1,63 @@
+package org.dromara.customer.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class RemoteCustomerDeptVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    private Long deptId;
+
+    /**
+     * 客户编号
+     */
+    private Long customerId;
+
+    /**
+     * 年度预算
+     */
+    private BigDecimal yearlyBudget;
+
+    /**
+     * 已使用预算
+     */
+    private BigDecimal usedBudget;
+
+    /**
+     * 月度限额
+     */
+    private BigDecimal monthLimit;
+
+    /**
+     * 月度已用预算
+     */
+    private BigDecimal monthUsedBudget;
+
+    /**
+     * 绑定状态
+     */
+    private String bindStatus;
+
+    /**
+     * 绑定地址
+     */
+    private String bindAddress;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 84 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerSalesVo.java

@@ -0,0 +1,84 @@
+package org.dromara.customer.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class RemoteCustomerSalesVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 销售信息ID
+     */
+    private Long id;
+
+    /**
+     * 关联客户ID
+     */
+    private Long customerId;
+
+    /**
+     * 信用额度
+     */
+    private BigDecimal creditAmount;
+
+    /**
+     * 剩余额度
+     */
+    private BigDecimal remainingQuota;
+
+    /**
+     * 临时额度
+     */
+    private BigDecimal temporaryQuota;
+
+    /**
+     * 账期(如:30天)
+     */
+    private Integer accountPeriod;
+
+    /**
+     * 账单日(每月几号)
+     */
+    private Integer billDate;
+
+    /**
+     * 计费日(如:每月1日)
+     */
+    private Integer billingDay;
+
+    /**
+     * 订单审核方式
+     */
+    private String orderAudit;
+
+    /**
+     * 信用管理方式
+     */
+    private Long creditManagementId;
+
+    /**
+     * 信用支付密码
+     */
+    private String creditPaymentPassword;
+
+    /**
+     * 销售人员
+     */
+    private Long salesPersonId;
+
+    /**
+     * 服务人员
+     */
+    private Long serviceStaffId;
+
+    /**
+     * 所属部门
+     */
+    private Long belongingDepartmentId;
+}

+ 18 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/erp/domain/ErpCompanyScaleData.java

@@ -0,0 +1,18 @@
+package org.dromara.customer.api.erp.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author
+ * @date 2026/1/27 下午7:13
+ */
+@Data
+public class ErpCompanyScaleData implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Long ValidityFromDate; // 有效期从(时间戳,单位通常为毫秒)
+    private Long ValidityToDate;   // 有效期至(时间戳)
+    private String CropSclId;      // 编码(如 "SMALL", "MEDIUM", "LARGE")
+    private String CropSclNm;      // 名称(如 "小型企业", "中型企业", "大型企业")
+}

+ 18 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/erp/domain/ErpIndustryData.java

@@ -0,0 +1,18 @@
+package org.dromara.customer.api.erp.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author
+ * @date 2026/1/27 下午7:28
+ */
+@Data
+public class ErpIndustryData implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String InduId;             // 编码(如 "IT", "FINANCE", "MANUFACTURE")
+    private String InduNm;             // 名称(如 "信息技术", "金融", "制造业")
+    private Long ValidityFromDate;     // 有效期从(时间戳)
+    private Long ValidityToDate;       // 有效期至(时间戳)
+}

+ 38 - 0
ruoyi-api/ruoyi-api-external/pom.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-api</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-api-external</artifactId>
+
+    <description>
+        ruoyi-api-external api接口模块,提供外部访问接口
+    </description>
+
+    <dependencies>
+
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk18on</artifactId>
+            <version>1.78.1</version>
+        </dependency>
+
+
+
+
+    </dependencies>
+
+</project>

+ 32 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/domain/ExternalItemDto.java

@@ -0,0 +1,32 @@
+package org.dromara.external.api.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author
+ * @date 2026/3/27 上午12:30
+ */
+@Data
+public class ExternalItemDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 项目id
+     */
+    private Long id;
+    /**
+     * 项目负责人id
+     * */
+    private Long purchaseId;
+
+    /**
+     * 项目logo
+     */
+    private String logo;
+    /**
+     * 项目名
+     */
+    private String itemName;
+}

+ 101 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/domain/ExternalProductDto.java

@@ -0,0 +1,101 @@
+package org.dromara.external.api.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class ExternalProductDto implements Serializable {
+
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 商品id
+     */
+    private Long productId;
+
+    /**
+     * 商品名称
+     */
+    private String itemName;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 项目id
+     */
+    private Long itemId;
+
+    /**
+     * 分类id
+     */
+    private Long categoryId;
+
+    /**
+     * 外部分类id
+     */
+    private Long externalCategoryId;
+
+    /**
+     * 推送状态 0未推送,1已推送
+     */
+    private Long pushStatus;
+
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *  第三方价格
+     * */
+    private BigDecimal externalPrice;
+
+    /**
+     * 商品状态:1=已上架,0=下架
+     * */
+    private Integer productStatus;
+
+
+    /**
+     * 第三方商品审核状态:0=待提交,1=待审核,2=审核通过,3=审核驳回
+     */
+    private Integer auditStatus;
+
+    /**
+     * 审核意见
+     */
+    private String auditReason;
+
+    /**
+     * 对接状态 0未对接,1已对接
+     */
+    private Integer connectStatus;
+
+    /**
+    * 申请类型 0更新,1移出
+    * */
+    private Integer type;
+
+    /**
+    * 计价规则(0 一品一价,1 按类目折扣率报价)
+    * */
+    private String pricingRule;
+
+    /**
+    * 起订量
+    * */
+    private Long minOrderQuantity;
+
+}

+ 26 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpBank.java

@@ -0,0 +1,26 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 银行主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpBank implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComBn comBn; // 顶层字段名,与 JSON 中的 "comBn" 一致
+
+    @Data
+    public static class ComBn {
+        private String BnAddr;     // 银行地址
+        private String BnCatgId;   // 银行类别(关联银行类别主数据)
+        private String FaxNo;      // 传真
+        private String Remark;     // 备注
+        private String TelNo;      // 联系电话
+        private String BnId;       // 编号(如 "ICBC", "BOC", "BNK001")
+        private String BnNm;       // 名称(如 "中国工商银行", "Bank of China")
+    }
+}

+ 22 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpBrand.java

@@ -0,0 +1,22 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 品牌资料实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpBrand implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComTradMrkDt comTradMrkDt; // 顶层字段名,与 JSON 中的 "comTradMrkDt" 一致
+
+    @Data
+    public static class ComTradMrkDt {
+        private String MnemonicId;  // 助记码(如 "APPL", "HW")
+        private String TradMrkId;   // 编码(品牌唯一标识)
+        private String TradMrkNm;   // 名称(如 "Apple", "华为")
+    }
+}

+ 24 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCity.java

@@ -0,0 +1,24 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 城市信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCity comCity; // 顶层字段名,与 JSON 一致
+
+    @Data
+    public static class ComCity {
+        private String AreaCode;     // 区号
+        private String CountryId;    // 所属国家
+        private String PrvnId;       // 所属省份
+        private String CityId;       // 编号
+        private String CityNm;       // 名称
+    }
+}

+ 42 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompany.java

@@ -0,0 +1,42 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 公司信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCompany implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCo comCo; // 注意:这里也改为驼峰 comCo,与 JSON 顶层字段名一致
+
+    @Data
+    public static class ComCo {
+        private String AccBnId;      // 开户银行
+        private String AccBnNo;      // 开户银行帐号
+        private String Address;      // 地址信息
+        private Long BegDa;          // 营业期限(开始)— JSON 中是数字 0
+        private String BusScp;       // 经营范围
+        private Double CapAmt;       // 注册资本 — JSON 是 0.000000
+        private String CoFuNm;       // 企业名称
+        private String Corporation;  // 法定代表人
+        private String EMail;        // E-Mail
+        private Long EndDa;          // 营业期限(结束)
+        private Long FoundDa;        // 成立日期
+        private String InCustId;     // 内部交易客户
+        private String InSupId;      // 内部交易供应商
+        private String LelPer;       // 法人代表
+        private String Phone;        // 办公电话
+        private String Principal;    // 负责人
+        private String RegAddr;      // 注册地址
+        private Long RegDa;          // 登记日期
+        private String RegOrg;       // 登记机关
+        private String Remark;       // 备注
+        private String TaxNo;        // 统一社会信用代码
+        private String CoId;         // 编号
+        private String CoNm;         // 名称
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompanyScale.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 企业规模主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCompanyScale implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private CrmCropScl crmCropScl; // 顶层字段名,与 JSON 中的 "crmCropScl" 完全一致
+
+    @Data
+    public static class CrmCropScl {
+        private Long ValidityFromDate; // 有效期从(时间戳,单位通常为毫秒)
+        private Long ValidityToDate;   // 有效期至(时间戳)
+        private String CropSclId;      // 编码(如 "SMALL", "MEDIUM", "LARGE")
+        private String CropSclNm;      // 名称(如 "小型企业", "中型企业", "大型企业")
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCountry.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 国家/地区信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCountry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCountry comCountry; // 顶层字段名,与 JSON 中的 "comCountry" 一致
+
+    @Data
+    public static class ComCountry {
+        private String CountryId;     // 编号(如 "CN", "US", "JP")
+        private String CountryName;   // 名称(如 "中国", "United States")
+    }
+}

+ 25 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomer.java

@@ -0,0 +1,25 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 客户资料设定实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCustomer implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private CustomerData data;        // 对应顶层 "data"
+    private String GathCndInfo;       // 条件说明(独立顶层字段)
+
+    @Data
+    public static class CustomerData {
+        private Integer ChkoutDa;   // 结账日(通常为 1~31 的整数)
+        private String CustId;      // 编号
+        private String CustNm;      // 名称
+        private String GathCnd;     // 收款条件
+        private Integer GathDays;   // 收款天数
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerGrade.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 客户等级信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCustomerGrade implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCustGad comCustGad; // 顶层字段名,与 JSON 中的 "comCustGad" 一致
+
+    @Data
+    public static class ComCustGad {
+        private String GadId; // 编号(如 "VIP", "A01", "NORMAL")
+        private String GadNm; // 名称(如 "金牌客户", "普通客户")
+    }
+}

+ 47 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerSalesPriceList.java

@@ -0,0 +1,47 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 销售价格清单-客户产品实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCustomerSalesPriceList implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Header salSalePrList;           // 单据头
+    private CompanyInfo salSalePrListCo;    // 公司信息
+    private List<Detail> salSalePrListDt;   // 明细行(客户+产品价格列表)
+
+    @Data
+    public static class Header {
+        private String TypeId;             // 单据类型
+        private Long BlDa;                 // 单据日期(时间戳)
+        private String BlNo;               // 单据编号
+        private String Remark;             // 备注
+        private Long ValidityFromDate;     // 有效期从
+        private Long ValidityToDate;       // 有效期至
+    }
+
+    @Data
+    public static class CompanyInfo {
+        private String CoId;               // 公司编号
+    }
+
+    @Data
+    public static class Detail {
+        private String CU_Remark;          // 备注(注意字段名含下划线)
+        private String CurId;              // 币别编号
+        private String CustId;             // 客户编号(新增字段!)
+        private Double Pr;                 // 未税单价
+        private String ProdId;             // 产品编号
+        private Double PrWTax;             // 含税单价
+        private String RowCd;              // 标识号
+        private Integer RowNo;             // 序号
+        private String SUiId;              // 交易单位编号
+        private String TaxId;              // 税码编号
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCustomerType.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 客户类别信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCustomerType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCustTy comCustTy; // 顶层字段名,与 JSON 中的 "comCustTy" 一致
+
+    @Data
+    public static class ComCustTy {
+        private Long ValidityFromDate; // 有效期从(时间戳,单位通常为毫秒或秒)
+        private Long ValidityToDate;   // 有效期至(时间戳)
+        private String CustTyId;       // 编号(如 "CORP", "RETAIL")
+        private String CustTyNm;       // 名称(如 "企业客户", "零售客户")
+    }
+}

+ 28 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpDepartment.java

@@ -0,0 +1,28 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 部门信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpDepartment implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComDept comDept; // 顶层字段名与 JSON 一致
+
+    @Data
+    public static class ComDept {
+        private String DepartmentCategory;   // 部门类型
+        private String Executive;            // 主管
+        private Integer Lv;                  // 级数
+        private String PDeptId;              // 上级部门
+        private String RtDeptId;             // 一级部门
+        private Long ValidityFromDate;       // 有效期从
+        private Long ValidityToDate;         // 有效期至
+        private String DeptId;               // 编号
+        private String DeptNm;               // 名称
+    }
+}

+ 24 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpDistrict.java

@@ -0,0 +1,24 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 区/县主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpDistrict implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComDistrict comDistrict; // 顶层字段名,与 JSON 中的 "comDistrict" 一致
+
+    @Data
+    public static class ComDistrict {
+        private String CityId;      // 城市(上级城市编码)
+        private String CountryId;   // 所属国家
+        private String PrvnId;      // 所属省份
+        private String DistrictId;  // 编码(如 "DIST_001", "310115")
+        private String DistrictNm;  // 名称(如 "浦东新区", "朝阳区")
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpExpense.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 费用申请单实体类(避免内部类与 Lombok @Data 冲突)
+ */
+@Data
+public class ErpExpense implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ExpenseData data; // 字段名仍为 "data",匹配 JSON;但内部类不叫 Data
+
+    @Data
+    public static class ExpenseData {
+        private String BlNo;       // 单据编号
+        private String IsRelChk;   // 是否关联确认单(通常 "Y"/"N" 或 "0"/"1",用 String 更安全)
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpExpress.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 快递主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpExpress implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComExpr comExpr; // 顶层字段名,与 JSON 中的 "comExpr" 一致
+
+    @Data
+    public static class ComExpr {
+        private String ExprId; // 编码(如 "SF", "YTO", "ZTO")
+        private String ExprNm; // 名称(如 "顺丰速运", "圆通速递")
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIncomeApplication.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 收入申请单实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpIncomeApplication implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private IncomeData data; // 字段名保持为 "data",匹配 JSON;内部类使用语义化名称
+
+    @Data
+    public static class IncomeData {
+        private String BlNo;       // 单据编号
+        private String IsRelChk;   // 是否关联确认单(通常为 "Y"/"N" 或 "1"/"0")
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIncomeExpenseType.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 收入费用类型主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpIncomeExpenseType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComIcmCs comIcmCs; // 顶层字段名,与 JSON 中的 "comIcmCs" 一致
+
+    @Data
+    public static class ComIcmCs {
+        private String IsCs;   // 费用标识(如 "Y"/"N" 或 "1"/"0")
+        private String IsIcm;  // 收入标识(如 "Y"/"N" 或 "1"/"0")
+        private String TyNm;   // 名称(如 "差旅费", "销售收入")
+        private String TypeId; // 编号(如 "EXP001", "INC001")
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpIndustry.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 行业别主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpIndustry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private CrmIndu crmIndu; // 顶层字段名,与 JSON 中的 "crmIndu" 一致
+
+    @Data
+    public static class CrmIndu {
+        private String InduId;             // 编码(如 "IT", "FINANCE", "MANUFACTURE")
+        private String InduNm;             // 名称(如 "信息技术", "金融", "制造业")
+        private Long ValidityFromDate;     // 有效期从(时间戳)
+        private Long ValidityToDate;       // 有效期至(时间戳)
+    }
+}

+ 27 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpPerson.java

@@ -0,0 +1,27 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 人员资料设定实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpPerson implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComPerDt comPerDt; // 顶层字段名,与 JSON 中的 "comPerDt" 一致
+
+    @Data
+    public static class ComPerDt {
+        private String Phone;              // 移动电话
+        private String PostId;             // 岗位(岗位编码,关联岗位主数据)
+        private String Sex;                // 性别(如 "M"/"F" 或 "男"/"女")
+        private Long ValidityFromDate;     // 有效期从(时间戳)
+        private Long ValidityToDate;       // 有效期至(时间戳)
+        private String DeptId;             // 所属部门(部门编码)
+        private String PerId;              // 编号(人员唯一标识)
+        private String PerNm;              // 姓名
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpPosition.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 岗位信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpPosition implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComPot comPot; // 顶层字段名,与 JSON 中的 "ComPot" 一致
+
+    @Data
+    public static class ComPot {
+        private String PotId; // 编号
+        private String PotNm; // 名称
+    }
+}

+ 24 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpProductCategory.java

@@ -0,0 +1,24 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 产品类别信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpProductCategory implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComProdCatg comProdCatg; // 顶层字段名,与 JSON 一致
+
+    @Data
+    public static class ComProdCatg {
+        private Integer Lv;                   // 级数
+        private String PurPerId;              // 采购员
+        private String ParentProdCatgId;      // 上级类别
+        private String ProdCatgId;            // 编码
+        private String ProdCatgNm;            // 名称
+    }
+}

+ 22 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpProvince.java

@@ -0,0 +1,22 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 省份主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpProvince implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComProvince comProvince; // 顶层字段名,与 JSON 中的 "comProvince" 一致
+
+    @Data
+    public static class ComProvince {
+        private String CountryId; // 所属国家(如 "CN")
+        private String PrvnId;    // 编号(如 "110000", "PROV_GD")
+        private String PrvnNm;    // 名称(如 "广东省", "北京市")
+    }
+}

+ 28 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesDelivery.java

@@ -0,0 +1,28 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 销售出货申请单实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpSalesDelivery implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private SalesDelivery data; // 顶层字段名,与 JSON 中的 "data" 一致
+
+    @Data
+    public static class SalesDelivery {
+        private String AnaPerId;   // 复点人员编号
+        private String BlNo;       // 单据编号
+        private String ChkPerId;   // 清货人员编号
+        private String DisPerId;   // 配货人员编号
+        private String ExprId;     // 快递编号
+        private String ExprNo;     // 快递单号
+        private String ExprPay;    // 快递付款方式
+        private String RecBlNo;    // 库存记录单号
+        private String ReSign;     // 回签信息
+    }
+}

+ 22 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesOrder.java

@@ -0,0 +1,22 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 销售订单实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpSalesOrder implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private SalesOrderData data; // 顶层字段名,对应 JSON 中的 "data"
+
+    @Data
+    public static class SalesOrderData {
+        private String BlNo;      // 单据编号
+        private String OutStkSt;  // 出库状态(数据库原值,通常为状态码如 "NOT_OUT", "PARTIAL
+
+    }
+}

+ 46 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesPriceList.java

@@ -0,0 +1,46 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 销售价格清单实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpSalesPriceList implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Header salSalePrList;           // 单据头
+    private CompanyInfo salSalePrListCo;    // 公司信息
+    private List<Detail> salSalePrListDt;   // 明细行(列表)
+
+    @Data
+    public static class Header {
+        private Long BlDa;                // 单据日期(时间戳)
+        private String BlNo;              // 单据编号
+        private String Remark;            // 备注
+        private String TypeId;            // 单据类型
+        private Long ValidityFromDate;    // 有效期从
+        private Long ValidityToDate;      // 有效期至
+    }
+
+    @Data
+    public static class CompanyInfo {
+        private String CoId;              // 公司编号
+    }
+
+    @Data
+    public static class Detail {
+        private String CU_Remark;         // 备注(注意字段名含下划线)
+        private String CurId;             // 币别编号
+        private Double Pr;                // 未税单价
+        private String ProdId;            // 产品编号
+        private Double PrWTax;            // 含税单价
+        private String RowCd;             // 标识号
+        private Integer RowNo;            // 序号
+        private String SUiId;             // 交易单位编号
+        private String TaxId;             // 税码编号
+    }
+}

+ 22 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSalesReturnApplication.java

@@ -0,0 +1,22 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 销售退货申请单实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpSalesReturnApplication implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ReturnData data; // 字段名保持为 "data",匹配 JSON;内部类使用语义化名称
+
+    @Data
+    public static class ReturnData {
+        private String BlNo;      // 商城订单退货号
+        private String InStkSt;   // 入库状态(数据库原值,如 "NOT_IN", "PARTIAL", "COMPLETE")
+        private String OrdBlno;   // 商城订单号
+    }
+}

+ 21 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpSupplierType.java

@@ -0,0 +1,21 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 供应商类别信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpSupplierType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComSupTy comSupTy; // 顶层字段名,与 JSON 中的 "comSupTy" 一致
+
+    @Data
+    public static class ComSupTy {
+        private String TyNm;   // 名称
+        private String TypeId; // 编号
+    }
+}

+ 22 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpTaxCode.java

@@ -0,0 +1,22 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 税码设定主数据实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpTaxCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComSetTax comSetTax; // 顶层字段名,与 JSON 中的 "comSetTax" 一致
+
+    @Data
+    public static class ComSetTax {
+        private String TaxId;   // 编号(如 "VAT13", "GST05")
+        private String TaxNm;   // 名称(如 "增值税-13%", "消费税")
+        private Double TaxRt;   // 税率(%),例如 13.0 表示 13%
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpUnit.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 计量单位信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpUnit implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComUnit comUnit; // 顶层字段名,与 JSON 中的 "comUnit" 一致
+
+    @Data
+    public static class ComUnit {
+        private String UnitProperty;     // 属性(数据库原值,如 "STANDARD", "WEIGHT" 等)
+        private Integer DecimalDigits;   // 小数位数(数据库原值,通常为整数)
+        private String UnitId;           // 编号(如 "KG", "PCS", "MTR")
+        private String UnitName;         // 名称(如 "千克", "件", "米")
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpWarehouse.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 仓库信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpWarehouse implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComWhs comWhs; // 顶层字段名与 JSON 一致
+
+    @Data
+    public static class ComWhs {
+        private String CoId;      // 公司
+        private String StkStu;    // 预设库存状态
+        private String WhsId;     // 编号
+        private String WhsNm;     // 名称
+    }
+}

+ 130 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BProductCategory.java

@@ -0,0 +1,130 @@
+package org.dromara.external.api.jldx;
+
+import lombok.Data;
+
+import java.io.Serial;
+
+/**
+ * 商品分类(支持多级类目)对象 b_product_category
+ *
+ * @author Lion Li
+ * @date 2025-08-05
+ */
+@Data
+public class BProductCategory {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键,自增ID
+     */
+    private Long id;
+
+    /**
+     * 分类编号,业务唯一编码,如 CAT001
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称,如“手机”、“笔记本电脑”
+     */
+    private String categoryName;
+
+    /**
+     * 父级分类ID(字符串类型),顶级分类为 NULL 或空字符串
+     */
+    private String parentId;
+
+    /**
+     * 分类层级:1 表示一级分类,2 表示二级分类,以此类推
+     */
+    private Integer classLevel;
+
+    /**
+     * 是否显示:1=显示,0=隐藏(前端展示控制)
+     */
+    private Integer isShow;
+
+    /**
+     * 是否在GPS相关模块显示:1=显示,0=不显示
+     */
+    private Integer isShowGps;
+
+    /**
+     * 折扣率配置(可能为JSON或多个折扣规则拼接)
+     */
+    private String discountRate;
+
+    /**
+     * 拼音码,用于搜索匹配,如“sj”代表“手机”
+     */
+    private String pyCode;
+
+    /**
+     * 分类描述,用于后台管理说明或前端提示信息
+     */
+    private String classDescription;
+
+    /**
+     * 数据来源标识,如 SYSTEM, ERP, MANUAL 等
+     */
+    private String dataSource;
+
+    /**
+     * 扩展标签1,可用于前端打标或筛选
+     */
+    private String oneLable1;
+
+    /**
+     * 扩展标签2
+     */
+    private String oneLable2;
+
+    /**
+     * 扩展链接1,如跳转H5页面地址
+     */
+    private String oneLink1;
+
+    /**
+     * 扩展链接2
+     */
+    private String oneLink2;
+
+    /**
+     * 排序权重,数值越大越靠前,相同则按ID倒序
+     */
+    private Integer sort;
+
+    /**
+     * 颜色标识,如用于前端分类标签颜色显示 #FF5722
+     */
+    private String color;
+
+    /**
+     * 采购组编号,关联采购部门
+     */
+    private String purchaseNo;
+
+    /**
+     * 采购组名称
+     */
+    private String purchaseName;
+
+    /**
+     * 采购负责人编号
+     */
+    private String purchaseManagerNo;
+
+    /**
+     * 采购负责人姓名
+     */
+    private String purchaseManagerName;
+
+    /**
+     * 所属平台标识:1=自营平台,2=第三方平台等(可根据业务定义)
+     */
+    private Integer platform;
+
+
+}

+ 197 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BProductExternal.java

@@ -0,0 +1,197 @@
+package org.dromara.external.api.jldx;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+
+/**
+ * 商品对外接口对象 b_product_external
+ *
+ * @author Lion Li
+ * @date 2025-08-05
+ */
+@Data
+public class BProductExternal  {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 商品编号
+     */
+    private String sku;
+
+    /**
+    * 格式:1_12_111,三级地址
+    * */
+    private String area;
+
+    /**
+     * 商品url
+     */
+    private String url;
+
+    /**
+     * 型号
+     */
+    private String model;
+
+    /**
+     * 重量
+     */
+    private String weight;
+
+    /**
+     * 主图地址
+     */
+    private String imagePath;
+    private String images;
+
+    /**
+     * 上下架状态
+     */
+    private String state;
+
+    /**
+     * 品牌
+     */
+    private String brandName;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 产地
+     */
+    private String productArea;
+
+    /**
+     * 条形码
+     */
+    private String upc;
+
+    /**
+     * 销售单位
+     */
+    private String unit;
+
+    /**
+     * 类别
+     */
+    private String category;
+
+    /**
+     * 售后服务
+     */
+    private String service;
+
+    /**
+     * 69码
+     */
+    private String code69;
+
+    /**
+     *
+     */
+    private String attributes;
+
+    /**
+     * 详细介绍
+     */
+    private String introduction;
+
+    /**
+     * 规格参数
+     */
+    private String param;
+
+    /**
+     * 货物
+     */
+    private String ware;
+
+    /**
+     * 是否是促销商品,数值类型,“0-不是促销产品, 1-是促销产品”
+     */
+    private String saleActives;
+
+    /**
+     * 标杆供应商   【product_extend_attributes参数】
+     */
+    private String exampleEmall;
+
+    /**
+     * 标杆供应商sku【product_extend_attributes参数】
+     */
+    private String exampleSku;
+
+    /**
+     * 标杆供应商官网价/凭证价格【product_extend_attributes参数】
+     */
+    private BigDecimal examplePrice;
+
+    /**
+     * 价格凭证【product_extend_attributes参数】
+     */
+    private String priceVoucher;
+
+    /**
+     * 价格凭证类别1. 标杆供应商商品的URL,2. 图片URL 【product_extend_attributes参数】说明:price_voucher_type必填。当price_voucher_type=1时,表明有标杆供应商,则example_emall、example_sku、example_price、price_voucher必填;当price_voucher_type=2时,price_voucher、example_price必填。当price_voucher_type不传或为空,则默认值为1
+     */
+    private String priceVoucherType;
+
+    /**
+     * 质量标准(多个质量标准,用英文","分隔)【product_extend_attributes参数】
+     */
+    private String qualities;
+
+    /**
+     * 是否采购人申请的商品(true是,false否)【product_extend_attributes参数】
+     */
+    private Long isApply;
+
+    /**
+     * 编码凭证【product_extend_attributes参数】
+     */
+    private String code69File;
+
+    /**
+     * 1有国际编码 2无国际编码并且有凭证【product_extend_attributes参数】说明: code_69_type为必填项。 当code_69_type=1时,code_69选填,当code_69_type=2时,code_69_file必填。当code_69_type不传或为空,则默认值为1。
+     */
+    private String code69Type;
+
+    /**
+     * 商品库存
+     */
+    private Integer num;
+
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
+    /**
+     * 商城售价
+     */
+    private BigDecimal mallPrice;
+
+    /**
+     * 分类id
+     */
+    private Long catalogId;
+
+    /**
+     * 国家标准地址
+     */
+    private String codes;
+
+
+}

+ 45 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BRegion.java

@@ -0,0 +1,45 @@
+package org.dromara.external.api.jldx;
+
+import lombok.Data;
+
+import java.io.Serial;
+
+/**
+ * 地址对象 b_region
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class BRegion {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 深度
+     */
+    private String ancestryDepth;
+
+    /**
+     * 祖籍
+     */
+    private String pccIds;
+
+    /**
+     * 祖籍名称
+     */
+    private String pccNames;
+
+
+}

+ 202 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BYggcOrder.java

@@ -0,0 +1,202 @@
+package org.dromara.external.api.jldx;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+
+/**
+ * 阳光公采商城订单对象 b_yggc_order
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+
+public class BYggcOrder{
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 自增主键
+     */
+    private Long orderId;
+
+    /**
+     * 阳光公采商城的订单单号
+     */
+    private String yggcOrder;
+
+    /**
+     * 商品SKU
+     */
+    private String sku;
+
+    /**
+     * 收货人
+     */
+    private String name;
+
+    /**
+     * 一级地址(省)
+     */
+    private Long province;
+
+    /**
+     * 二级地址(市)
+     */
+    private Long city;
+
+    /**
+     * 三级地址(区/县)
+     */
+    private Long county;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 邮编
+     */
+    private String zip;
+
+    /**
+     * 座机号(与mobile二选一)
+     */
+    private String phone;
+
+    /**
+     * 手机号(与phone二选一)
+     */
+    private String mobile;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 备注(少于100字)
+     */
+    private String remark;
+
+    /**
+     * 采购单位名称
+     */
+    private String depName;
+
+    /**
+     * 发票抬头(个人或公司名称)
+     */
+    private String invoiceTitle;
+
+    /**
+     * 发票类型:1-普通发票;2-增值税发票;3-电子发票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 纳税人识别号
+     */
+    private String invoiceOrgCode;
+
+    /**
+     * 增值税发票收票人(invoice_type=2时必填)
+     */
+    private String invoiceName;
+
+    /**
+     * 注册电话(invoice_type=2时必填)
+     */
+    private String invoicePhone;
+
+    /**
+     * 开户银行(invoice_type=2时必填)
+     */
+    private String invoiceBank;
+
+    /**
+     * 开户行账号(invoice_type=2时必填)
+     */
+    private String invoiceBankCode;
+
+    /**
+     * 注册地址(invoice_type=2时必填)
+     */
+    private String invoiceAddress;
+
+    /**
+     * 收票联系电话
+     */
+    private String invoiceMobile;
+
+    /**
+     * 收票地址
+     */
+    private String invoiceReceiptAddress;
+
+    /**
+     * 支付方式:1-货到付款;2-国库集中支付;3-在线支付;4-支票
+     */
+    private Integer payment;
+
+    /**
+     * 订单金额(含运费)
+     */
+    private BigDecimal orderPrice;
+
+    /**
+     * 运费
+     */
+    private BigDecimal freight;
+
+    /**
+     * 订单模式:1-协议价;2-团购;3-特惠;4-阶梯价
+     */
+    private Long mode;
+
+    /**
+     * 状态 0 是新建  1是妥投完成  -1是拒收 4是退换货中
+     */
+    private String state;
+
+    /**
+     * 状态 0 未确认  1 已确认
+     */
+    private String submitState;
+
+    /**
+     * 发货状态  0 未发货  1已发货(全部)  2 部分发货
+     */
+    private String deliverState;
+
+    /**
+     * 订单总价价格
+     */
+    private BigDecimal totalPrice;
+
+    /**
+     * 采购商品列表
+     */
+    private String skus;
+
+    /**
+     * 已退货的商品
+     */
+    private String returnSkus;
+
+    /**
+     * 子订单列表(拆单时必传)
+     */
+    private String corders;
+
+    /**
+     * 订单类型:1 是父订单, 2 是子订单。如果不传,则默认是父订单
+     */
+    private String type;
+
+
+}

+ 52 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/BYggcOrderTrack.java

@@ -0,0 +1,52 @@
+package org.dromara.external.api.jldx;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.util.Date;
+
+/**
+ * 订单状态记录对象 b_yggc_order_track
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class BYggcOrderTrack {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
+     * 操作时间
+     */
+    private Date operateTime;
+
+    /**
+     * 状态类型
+     */
+    private String statusType;
+
+    /**
+     * 状态名称
+     */
+    private String statusName;
+
+    /**
+     * 操作人
+     */
+    private String operator;
+
+
+}

+ 128 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BProductCategoryBo.java

@@ -0,0 +1,128 @@
+package org.dromara.external.api.jldx.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+ * 商品分类(支持多级类目)业务对象 b_product_category
+ *
+ * @author Lion Li
+ * @date 2025-08-05
+ */
+@Data
+public class BProductCategoryBo {
+
+    /**
+     * 主键,自增ID
+     */
+    private Long id;
+
+    /**
+     * 分类编号,业务唯一编码,如 CAT001
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称,如“手机”、“笔记本电脑”
+     */
+    private String categoryName;
+
+    /**
+     * 父级分类ID(字符串类型),顶级分类为 NULL 或空字符串
+     */
+    private String parentId;
+
+    /**
+     * 分类层级:1 表示一级分类,2 表示二级分类,以此类推
+     */
+    private Integer classLevel;
+
+    /**
+     * 是否显示:1=显示,0=隐藏(前端展示控制)
+     */
+    private Integer isShow;
+
+    /**
+     * 是否在GPS相关模块显示:1=显示,0=不显示
+     */
+    private Integer isShowGps;
+
+    /**
+     * 折扣率配置(可能为JSON或多个折扣规则拼接)
+     */
+    private String discountRate;
+
+    /**
+     * 拼音码,用于搜索匹配,如“sj”代表“手机”
+     */
+    private String pyCode;
+
+    /**
+     * 分类描述,用于后台管理说明或前端提示信息
+     */
+    private String classDescription;
+
+    /**
+     * 数据来源标识,如 SYSTEM, ERP, MANUAL 等
+     */
+    private String dataSource;
+
+    /**
+     * 扩展标签1,可用于前端打标或筛选
+     */
+    private String oneLable1;
+
+    /**
+     * 扩展标签2
+     */
+    private String oneLable2;
+
+    /**
+     * 扩展链接1,如跳转H5页面地址
+     */
+    private String oneLink1;
+
+    /**
+     * 扩展链接2
+     */
+    private String oneLink2;
+
+    /**
+     * 排序权重,数值越大越靠前,相同则按ID倒序
+     */
+    private Integer sort;
+
+    /**
+     * 颜色标识,如用于前端分类标签颜色显示 #FF5722
+     */
+    private String color;
+
+    /**
+     * 采购组编号,关联采购部门
+     */
+    private String purchaseNo;
+
+    /**
+     * 采购组名称
+     */
+    private String purchaseName;
+
+    /**
+     * 采购负责人编号
+     */
+    private String purchaseManagerNo;
+
+    /**
+     * 采购负责人姓名
+     */
+    private String purchaseManagerName;
+
+    /**
+     * 所属平台标识:1=自营平台,2=第三方平台等(可根据业务定义)
+     */
+    private Integer platform;
+
+
+}

+ 190 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BProductExternalBo.java

@@ -0,0 +1,190 @@
+package org.dromara.external.api.jldx.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+import java.math.BigDecimal;
+
+/**
+ * 商品对外接口业务对象 b_product_external
+ *
+ * @author Lion Li
+ * @date 2025-08-05
+ */
+@Data
+public class BProductExternalBo {
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 商品编号
+     */
+    private String sku;
+
+    /**
+     * 格式:1_12_111,三级地址
+     * */
+    private String area;
+
+    /**
+     * 商品url
+     */
+    private String url;
+
+    /**
+     * 型号
+     */
+    private String model;
+
+    /**
+     * 重量
+     */
+    private String weight;
+
+    /**
+     * 主图地址
+     */
+    private String imagePath;    private String images;
+
+    /**
+     * 上下架状态
+     */
+    private String state;
+
+    /**
+     * 品牌
+     */
+    private String brandName;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 产地
+     */
+    private String productArea;
+
+    /**
+     * 条形码
+     */
+    private String upc;
+
+    /**
+     * 销售单位
+     */
+    private String unit;
+
+    /**
+     * 类别
+     */
+    private String category;
+
+    /**
+     * 售后服务
+     */
+    private String service;
+
+    /**
+     * 69码
+     */
+    private String code69;
+
+    /**
+     *
+     */
+    private String attributes;
+
+    /**
+     * 详细介绍
+     */
+    private String introduction;
+
+    /**
+     * 规格参数
+     */
+    private String param;
+
+    /**
+     * 货物
+     */
+    private String ware;
+
+    /**
+     * 是否是促销商品,数值类型,“0-不是促销产品, 1-是促销产品”
+     */
+    private String saleActives;
+
+    /**
+     * 标杆供应商   【product_extend_attributes参数】
+     */
+    private String exampleEmall;
+
+    /**
+     * 标杆供应商sku【product_extend_attributes参数】
+     */
+    private String exampleSku;
+
+    /**
+     * 标杆供应商官网价/凭证价格【product_extend_attributes参数】
+     */
+    private BigDecimal examplePrice;
+
+    /**
+     * 价格凭证【product_extend_attributes参数】
+     */
+    private String priceVoucher;
+
+    /**
+     * 价格凭证类别1. 标杆供应商商品的URL,2. 图片URL 【product_extend_attributes参数】说明:price_voucher_type必填。当price_voucher_type=1时,表明有标杆供应商,则example_emall、example_sku、example_price、price_voucher必填;当price_voucher_type=2时,price_voucher、example_price必填。当price_voucher_type不传或为空,则默认值为1
+     */
+    private String priceVoucherType;
+
+    /**
+     * 质量标准(多个质量标准,用英文","分隔)【product_extend_attributes参数】
+     */
+    private String qualities;
+
+    /**
+     * 是否采购人申请的商品(true是,false否)【product_extend_attributes参数】
+     */
+    private Long isApply;
+
+    /**
+     * 编码凭证【product_extend_attributes参数】
+     */
+    private String code69File;
+
+    /**
+     * 1有国际编码 2无国际编码并且有凭证【product_extend_attributes参数】说明: code_69_type为必填项。 当code_69_type=1时,code_69选填,当code_69_type=2时,code_69_file必填。当code_69_type不传或为空,则默认值为1。
+     */
+    private String code69Type;
+
+    /**
+     * 商品库存
+     */
+    private Integer num;
+
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
+    /**
+     * 分类id
+     */
+    private Long catalogId;
+
+    /**
+     * 国家标准地址
+     */
+    private String codes;
+
+
+}

+ 49 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BRegionBo.java

@@ -0,0 +1,49 @@
+package org.dromara.external.api.jldx.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+/**
+ * 地址业务对象 b_region
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class BRegionBo  {
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 深度
+     */
+    @NotBlank(message = "深度不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String ancestryDepth;
+
+    /**
+     * 祖籍
+     */
+    @NotBlank(message = "祖籍不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String pccIds;
+
+    /**
+     * 祖籍名称
+     */
+    @NotBlank(message = "祖籍名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String pccNames;
+
+
+}

+ 222 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BYggcOrderBo.java

@@ -0,0 +1,222 @@
+package org.dromara.external.api.jldx.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+import java.math.BigDecimal;
+
+/**
+ * 阳光公采商城订单业务对象 b_yggc_order
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class BYggcOrderBo {
+
+    /**
+     * 自增主键
+     */
+    private Long orderId;
+
+    /**
+     * 阳光公采商城的订单单号
+     */
+    private String yggcOrder;
+
+    /**
+     * 商品SKU
+     */
+    private String sku;
+
+    /**
+     * 收货人
+     */
+    private String name;
+
+    /**
+     * 一级地址(省)
+     */
+    private Long province;
+
+    /**
+     * 二级地址(市)
+     */
+    private Long city;
+
+    /**
+     * 三级地址(区/县)
+     */
+    private Long county;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 邮编
+     */
+    private String zip;
+
+    /**
+     * 座机号(与mobile二选一)
+     */
+    @NotBlank(message = "座机号(与mobile二选一)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String phone;
+
+    /**
+     * 手机号(与phone二选一)
+     */
+    @NotBlank(message = "手机号(与phone二选一)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String mobile;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 备注(少于100字)
+     */
+    @NotBlank(message = "备注(少于100字)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+    /**
+     * 采购单位名称
+     */
+    @NotBlank(message = "采购单位名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String depName;
+
+    /**
+     * 发票抬头(个人或公司名称)
+     */
+    private String invoiceTitle;
+
+    /**
+     * 发票类型:1-普通发票;2-增值税发票;3-电子发票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 纳税人识别号
+     */
+    private String invoiceOrgCode;
+
+    /**
+     * 增值税发票收票人(invoice_type=2时必填)
+     */
+    @NotBlank(message = "增值税发票收票人(invoice_type=2时必填)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceName;
+
+    /**
+     * 注册电话(invoice_type=2时必填)
+     */
+    @NotBlank(message = "注册电话(invoice_type=2时必填)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoicePhone;
+
+    /**
+     * 开户银行(invoice_type=2时必填)
+     */
+    @NotBlank(message = "开户银行(invoice_type=2时必填)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceBank;
+
+    /**
+     * 开户行账号(invoice_type=2时必填)
+     */
+    @NotBlank(message = "开户行账号(invoice_type=2时必填)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceBankCode;
+
+    /**
+     * 注册地址(invoice_type=2时必填)
+     */
+    @NotBlank(message = "注册地址(invoice_type=2时必填)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceAddress;
+
+    /**
+     * 收票联系电话
+     */
+    @NotBlank(message = "收票联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceMobile;
+
+    /**
+     * 收票地址
+     */
+    @NotBlank(message = "收票地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceReceiptAddress;
+
+    /**
+     * 支付方式:1-货到付款;2-国库集中支付;3-在线支付;4-支票
+     */
+    private Integer payment;
+
+    /**
+     * 订单金额(含运费)
+     */
+    private BigDecimal orderPrice;
+
+    /**
+     * 运费
+     */
+    private BigDecimal freight;
+
+    /**
+     * 订单模式:1-协议价;2-团购;3-特惠;4-阶梯价
+     */
+    private Long mode;
+
+    /**
+     * 状态 0 是新建  1是妥投完成  -1是拒收 4是退换货中
+     */
+    @NotBlank(message = "状态 0 是新建  1是妥投完成  -1是拒收 4是退换货中不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String state;
+
+    /**
+     * 状态 0 未确认  1 已确认
+     */
+    @NotBlank(message = "状态 0 未确认  1 已确认 不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String submitState;
+
+    /**
+     * 发货状态  0 未发货  1已发货(全部)  2 部分发货
+     */
+    @NotBlank(message = "发货状态  0 未发货  1已发货(全部)  2 部分发货不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String deliverState;
+
+    /**
+     * 订单总价价格
+     */
+    @NotNull(message = "订单总价价格不能为空", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal totalPrice;
+
+    /**
+     * 采购商品列表
+     */
+    @NotBlank(message = "采购商品列表不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String skus;
+
+    /**
+     * 已退货的商品
+     */
+    @NotBlank(message = "已退货的商品不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String returnSkus;
+
+    /**
+     * 子订单列表(拆单时必传)
+     */
+    @NotBlank(message = "子订单列表(拆单时必传)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String corders;
+
+    /**
+     * 订单类型:1 是父订单, 2 是子订单。如果不传,则默认是父订单
+     */
+    @NotBlank(message = "订单类型:1 是父订单, 2 是子订单。如果不传,则默认是父订单不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String type;
+
+
+}

+ 57 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/BYggcOrderTrackBo.java

@@ -0,0 +1,57 @@
+package org.dromara.external.api.jldx.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+import java.util.Date;
+
+/**
+ * 订单状态记录业务对象 b_yggc_order_track
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class BYggcOrderTrackBo {
+
+    /**
+     *
+     */
+    private Long id;
+
+    /**
+     * 订单id
+     */
+    @NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long orderId;
+
+    /**
+     * 操作时间
+     */
+    @NotNull(message = "操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date operateTime;
+
+    /**
+     * 状态类型
+     */
+    private String statusType;
+
+    /**
+     * 状态名称
+     */
+    @NotBlank(message = "内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String statusName;
+
+    /**
+     * 操作人
+     */
+    @NotBlank(message = "操作人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String operator;
+
+
+}

+ 12 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetAreaBo.java

@@ -0,0 +1,12 @@
+package org.dromara.external.api.jldx.bo;
+
+import lombok.Data;
+
+/**
+ * @author
+ * @date 2025/8/12 下午6:02
+ */
+@Data
+public class GetAreaBo extends TokenBo{
+    private String id;
+}

+ 16 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetProductDetailBo.java

@@ -0,0 +1,16 @@
+package org.dromara.external.api.jldx.bo;
+
+import lombok.Data;
+
+/**
+ * @author
+ * @date 2025/8/12 下午5:57
+ */
+@Data
+public class GetProductDetailBo extends TokenBo {
+    private String sku;
+
+    private String skus;
+
+    private String area;
+}

+ 13 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/GetSkusBo.java

@@ -0,0 +1,13 @@
+package org.dromara.external.api.jldx.bo;
+
+import lombok.Data;
+
+/**
+ * @author
+ * @date 2025/8/12 下午5:51
+ */
+@Data
+public class GetSkusBo extends TokenBo{
+
+    private String catalog_id;
+}

+ 196 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/SaveBYggcOrderBo.java

@@ -0,0 +1,196 @@
+package org.dromara.external.api.jldx.bo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 阳光公采商城订单对象 b_yggc_order
+ *
+ * @author Lion Li
+ * @date 2025-08-07
+ */
+@Data
+public class SaveBYggcOrderBo extends TokenBo {
+
+
+    /**
+     *
+     */
+    private Long order_id;
+
+    /**
+     * 阳光公采商城的订单单号
+     */
+    private String yggc_order;
+
+    /**
+     * 商品SKU
+     */
+    private String sku;
+
+    /**
+     * 收货人
+     */
+    private String name;
+
+    /**
+     * 一级地址(省)
+     */
+    private Long province;
+
+    /**
+     * 二级地址(市)
+     */
+    private Long city;
+
+    /**
+     * 三级地址(区/县)
+     */
+    private Long county;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 邮编
+     */
+    private String zip;
+
+    /**
+     * 座机号(与mobile二选一)
+     */
+    private String phone;
+
+    /**
+     * 手机号(与phone二选一)
+     */
+    private String mobile;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 备注(少于100字)
+     */
+    private String remark;
+
+    /**
+     * 采购单位名称
+     */
+    private String dep_name;
+
+    /**
+     * 发票抬头(个人或公司名称)
+     */
+    private String invoice_title;
+
+    /**
+     * 发票类型:1-普通发票;2-增值税发票;3-电子发票
+     */
+    private Integer invoice_type;
+
+    /**
+     * 纳税人识别号
+     */
+    private String invoice_org_code;
+
+    /**
+     * 增值税发票收票人(invoice_type=2时必填)
+     */
+    private String invoice_name;
+
+    /**
+     * 注册电话(invoice_type=2时必填)
+     */
+    private String invoice_phone;
+
+    /**
+     * 开户银行(invoice_type=2时必填)
+     */
+    private String invoice_bank;
+
+    /**
+     * 开户行账号(invoice_type=2时必填)
+     */
+    private String invoice_bank_code;
+
+    /**
+     * 注册地址(invoice_type=2时必填)
+     */
+    private String invoice_address;
+
+    /**
+     * 收票联系电话
+     */
+    private String invoice_mobile;
+
+    /**
+     * 收票地址
+     */
+    private String invoice_receipt_address;
+
+    /**
+     * 支付方式:1-货到付款;2-国库集中支付;3-在线支付;4-支票
+     */
+    private Integer payment;
+
+    /**
+     * 订单金额(含运费)
+     */
+    private BigDecimal order_price;
+
+    /**
+     * 运费
+     */
+    private BigDecimal freight;
+
+    /**
+     * 订单模式:1-协议价;2-团购;3-特惠;4-阶梯价
+     */
+    private Long mode;
+
+    /**
+     * 状态 0 是新建  1是妥投完成  -1是拒收 4是退换货中
+     */
+    private String state;
+
+    /**
+     * 状态 0 未确认  1 已确认
+     */
+    private String submit_state;
+
+    /**
+     * 发货状态  0 未发货  1已发货(全部)  2 部分发货
+     */
+    private String deliver_state;
+
+    /**
+     * 订单总价价格
+     */
+    private BigDecimal total_price;
+
+    /**
+     * 采购商品列表
+     */
+    private String skus;
+
+    /**
+     * 已退货的商品
+     */
+    private String return_skus;
+
+    /**
+     * 子订单列表(拆单时必传)
+     */
+    private String corders;
+
+    /**
+     * 订单类型:1 是父订单, 2 是子订单。如果不传,则默认是父订单
+     */
+    private String type;
+}

+ 12 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/jldx/bo/TokenBo.java

@@ -0,0 +1,12 @@
+package org.dromara.external.api.jldx.bo;
+
+import lombok.Data;
+
+/**
+ * @author
+ * @date 2025/8/12 下午5:55
+ */
+@Data
+public class TokenBo {
+    private String token;
+}

+ 14 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalItemService.java

@@ -0,0 +1,14 @@
+package org.dromara.external.api.service;
+
+import org.dromara.external.api.domain.ExternalItemDto;
+
+/**
+ * @author
+ * @date 2026/3/27 上午12:30
+ */
+public interface RemoteExternalItemService {
+    /**
+    * 获取项目信息
+    * */
+    ExternalItemDto getItemInfo(Long itemId);
+}

+ 29 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalProductService.java

@@ -0,0 +1,29 @@
+package org.dromara.external.api.service;
+
+import org.dromara.external.api.domain.ExternalProductDto;
+
+import java.util.List;
+
+/**
+ * @author
+ * @date 2026/1/14 下午4:58
+ */
+public interface RemoteExternalProductService {
+
+    /**
+    * 获取商品的对接状态
+    * */
+    Boolean getProductDockingStatus(Long productId,String itemKey);
+
+    /**
+    * 获取项目中的商品
+    * */
+    List<ExternalProductDto> getExternalProductList(Long itemId);
+
+    /**
+    * 更新产品
+    * */
+    void syncExternalProduct(List<ExternalProductDto> productIds);
+
+
+}

+ 96 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderAddBo.java

@@ -0,0 +1,96 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 售后订单新增请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyAfterOrderAddBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 售后单号
+     */
+    private String orderID;
+
+    /**
+     * 售后金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 售后时间
+     */
+    private Date date;
+
+    /**
+     * 售后状态
+     */
+    private Integer state;
+
+    /**
+     * 售后原因
+     */
+    private String reason;
+
+    /**
+     * 售后描述
+     */
+    private String desc;
+
+    /**
+     * 商品信息
+     */
+    private List<AfterOrderProduct> productIds;
+
+    @Data
+    public static class AfterOrderProduct implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        private Integer id;
+        private String created;
+        private String modify;
+
+        /**
+         * 订单号
+         */
+        private String orderID;
+
+        /**
+         * 商品单号
+         */
+        private String productNo;
+
+        /**
+         * 商品名称
+         */
+        private String name;
+
+        /**
+         * 商品数量
+         */
+        private Integer num;
+
+        /**
+         * 商品单价
+         */
+        private BigDecimal price;
+
+        /**
+         * 商品总金额
+         */
+        private BigDecimal amount;
+    }
+}

+ 23 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderBo.java

@@ -0,0 +1,23 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 售后订单查询请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyAfterOrderBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 售后订单号
+     */
+    private String orderID;
+}

+ 93 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAfterOrderListBo.java

@@ -0,0 +1,93 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 售后订单列表查询请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyAfterOrderListBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 当前页
+     */
+    private Integer pageIndex;
+
+    /**
+     * 每页显示数量
+     */
+    private Integer pageSize;
+
+    /**
+     * 数据总行数(非分页)
+     */
+    private Integer dataCount;
+
+    /**
+     * 售后单号
+     */
+    private String orderID;
+
+    /**
+     * 订单状态
+     */
+    private Integer status;
+
+    /**
+     * 支付状态
+     */
+    private Integer paystatus;
+
+    /**
+     * 下单时间
+     */
+    private String ordertime;
+
+    /**
+     * 下单截止时间
+     */
+    private String end_ordertime;
+
+    /**
+     * 发货时间
+     */
+    private String deliverytime;
+
+    /**
+     * 发货截止时间
+     */
+    private String end_deliverytime;
+
+    /**
+     * 签收时间
+     */
+    private String signingtime;
+
+    /**
+     * 签收截止时间
+     */
+    private String end_signingtime;
+
+    /**
+     * 条件
+     */
+    private Integer condition;
+
+    /**
+     * 物流状态
+     */
+    private Integer logisticstatus;
+
+    /**
+     * 发货状态
+     */
+    private Integer deliverystatus;
+}

+ 57 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyApplyReconBo.java

@@ -0,0 +1,57 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 对账申请请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyApplyReconBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 总金额
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 申请时间
+     */
+    private Date datetime;
+
+    /**
+     * 申请状态 0未开,1已开
+     */
+    private Integer state;
+
+    /**
+     * 多订单号
+     */
+    private List<OrderIdItem> orderIds;
+
+    @Data
+    public static class OrderIdItem implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 订单id
+         */
+        private String orderID;
+
+        /**
+         * 对账金额
+         */
+        private BigDecimal amount;
+    }
+}

+ 33 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyAuthBo.java

@@ -0,0 +1,33 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 获取令牌请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyAuthBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 平台代码
+     */
+    private String patformID;
+
+    /**
+     * 账户
+     */
+    private String account;
+
+    /**
+     * 秘钥
+     */
+    private String secret;
+}

+ 28 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyConfirmOrderBo.java

@@ -0,0 +1,28 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 撤销订单请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyConfirmOrderBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 订单编号
+     */
+    private String orderID;
+
+    /**
+     * 订单状态  0-待确认 1-已确认、3-已取消、4-已完成、5-已对账、6-已开票、7-售后中、8-售后完成、9-拒绝售后
+     */
+    private Integer orderstatus;
+}

+ 28 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderBo.java

@@ -0,0 +1,28 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 订单查询请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyOrderBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主订单号
+     */
+    private String parentOrderNo;
+
+    /**
+     * 订单编号
+     */
+    private String orderID;
+}

+ 82 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/thirdparty/domain/bo/ThirdpartyOrderInvoiceBo.java

@@ -0,0 +1,82 @@
+package org.dromara.external.api.thirdparty.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 申请开票请求参数
+ *
+ * @author
+ * @date 2026/4/9
+ */
+@Data
+public class ThirdpartyOrderInvoiceBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 开票流水号
+     */
+    private String invoicenum;
+
+    /**
+     * 开票金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 发票抬头
+     */
+    private String rise;
+
+    /**
+     * 发票类型0增值税专用,1增值税普通
+     */
+    private Integer type;
+
+    /**
+     * 申请时间
+     */
+    private Date applyDate;
+
+    /**
+     * 开票时间
+     */
+    private Date billingDate;
+
+    /**
+     * 发票状态0未开,1已开
+     */
+    private Integer state;
+
+    /**
+     * 审核状态0未审,1已审
+     */
+    private Integer examine;
+
+    /**
+     * 订单数组
+     */
+    private List<OrderInvoiceItem> orderIds;
+
+    @Data
+    public static class OrderInvoiceItem implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 订单号
+         */
+        private String orderID;
+
+        /**
+         * 开票金额
+         */
+        private BigDecimal billingAmount;
+    }
+}

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.