Kaynağa Gözat

Merge branch 'master' of http://8.152.4.3:3000/yp_other/pet-system

# Conflicts:
#	ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
#	ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties
steelwei 1 ay önce
ebeveyn
işleme
a62feb896f
100 değiştirilmiş dosya ile 2571 ekleme ve 40 silme
  1. 16 9
      pom.xml
  2. 2 0
      ruoyi-api/pom.xml
  3. 18 0
      ruoyi-api/ruoyi-api-bom/pom.xml
  4. 2 0
      ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileService.java
  5. 6 0
      ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java
  6. 13 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteStoreService.java
  7. 2 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteTenantService.java
  8. 5 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
  9. 18 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteStoreVo.java
  10. 21 0
      ruoyi-api/yingpaipay-api-archieves/pom.xml
  11. 15 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemoteCustomerService.java
  12. 9 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemotePetService.java
  13. 20 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemoteCustomerVo.java
  14. 20 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemotePetVo.java
  15. 4 2
      ruoyi-api/yingpaipay-api-fulfiller/pom.xml
  16. 4 0
      ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/RemoteFulfillerService.java
  17. 20 0
      ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/domain/vo/RemoteFulfillerVo.java
  18. 14 0
      ruoyi-api/yingpaipay-api-order/pom.xml
  19. 5 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteOrderService.java
  20. 0 4
      ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java
  21. 18 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java
  22. 2 1
      ruoyi-common/ruoyi-common-dubbo/src/main/java/org/dromara/common/dubbo/config/CustomBeanFactoryPostProcessor.java
  23. 6 1
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
  24. 10 0
      ruoyi-common/ruoyi-common-translation/pom.xml
  25. 18 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
  26. 22 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/CustomerNameTranslationImpl.java
  27. 22 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OrderCodeTranslationImpl.java
  28. 22 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/StoreNameTranslationImpl.java
  29. 3 0
      ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  30. 1 1
      ruoyi-common/yingpaipay-common-platform/src/main/java/org/dromara/common/platform/Platform.java
  31. 6 0
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java
  32. 14 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysStoreController.java
  33. 10 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreBanBo.java
  34. 14 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreRenewBo.java
  35. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysStoreListOnOrderVo.java
  36. 68 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteStoreServiceImpl.java
  37. 17 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTenantServiceImpl.java
  38. 61 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
  39. 6 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysStoreService.java
  40. 30 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java
  41. 13 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantCategoriesServiceImpl.java
  42. 5 0
      ruoyi-modules/yingpaipay-archieves/pom.xml
  43. 2 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/YingpaipayArchievesApplication.java
  44. 22 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrCustomerController.java
  45. 13 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrPetController.java
  46. 1 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/UsrPet.java
  47. 1 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/bo/UsrPetBo.java
  48. 24 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrCustomerOnOrderVo.java
  49. 20 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrPetOnOrderVo.java
  50. 1 1
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrPetVo.java
  51. 82 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemoteCustomerServiceImpl.java
  52. 46 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemotePetServiceImpl.java
  53. 2 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/IUsrCustomerService.java
  54. 39 5
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java
  55. 5 0
      ruoyi-modules/yingpaipay-fulfiller/pom.xml
  56. 13 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java
  57. 27 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerOnOrderVo.java
  58. 32 4
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java
  59. 2 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfFulfillerService.java
  60. 50 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  61. 15 0
      ruoyi-modules/yingpaipay-order/pom.xml
  62. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/YingpaipayOrderApplication.java
  63. 3 3
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/OrderStatusController.java
  64. 26 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysOrderController.java
  65. 71 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java
  66. 27 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderLogController.java
  67. 92 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysOrder.java
  68. 150 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrder.java
  69. 77 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrderLog.java
  70. 94 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderBo.java
  71. 38 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderCreateBo.java
  72. 10 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAcceptBo.java
  73. 118 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderBo.java
  74. 10 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCancelBo.java
  75. 61 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCreateBo.java
  76. 14 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderDispatchBo.java
  77. 14 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderListPageBo.java
  78. 77 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderLogBo.java
  79. 14 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderPendingAcceptPageBo.java
  80. 18 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderRemarkBo.java
  81. 1 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/OrderStatusVo.java
  82. 104 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysOrderVo.java
  83. 22 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderCountVo.java
  84. 68 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListPageVo.java
  85. 86 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderLogVo.java
  86. 53 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderPendingAcceptPageVo.java
  87. 141 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java
  88. 29 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteOrderServiceImpl.java
  89. 24 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogActionTypeEnum.java
  90. 17 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogActionerTypeEnum.java
  91. 17 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogTypeEnum.java
  92. 1 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderStatusEnum.java
  93. 19 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderTypeEnum.java
  94. 15 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysOrderMapper.java
  95. 15 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysSubOrderLogMapper.java
  96. 15 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysSubOrderMapper.java
  97. 2 2
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/IOrderStatusService.java
  98. 7 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysOrderService.java
  99. 9 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderLogService.java
  100. 29 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java

+ 16 - 9
pom.xml

@@ -65,7 +65,22 @@
 
     <profiles>
         <profile>
-            <id>Huanyi</id>
+            <id>Huanyi-Home</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>dev</profiles.active>
+                <nacos.server>192.168.0.102: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>
+                <discovery.ip>192.168.0.102</discovery.ip>
+                <nacos.ip>192.168.0.102</nacos.ip>
+            </properties>
+        </profile>
+        <profile>
+            <id>Huanyi-Company</id>
             <properties>
                 <!-- 环境标识,需要与配置文件的名称相对应 -->
                 <profiles.active>dev</profiles.active>
@@ -78,10 +93,6 @@
                 <discovery.ip>192.168.1.118</discovery.ip>
                 <nacos.ip>192.168.1.118</nacos.ip>
             </properties>
-            <activation>
-                <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
-            </activation>
         </profile>
         <profile>
             <id>Steelwei</id>
@@ -96,10 +107,6 @@
                 <logstash.address>127.0.0.1:4560</logstash.address>
                 <discovery.ip>127.0.0.1</discovery.ip>
             </properties>
-            <activation>
-                <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
-            </activation>
         </profile>
         <profile>
             <id>prod</id>

+ 2 - 0
ruoyi-api/pom.xml

@@ -14,7 +14,9 @@
         <module>ruoyi-api-resource</module>
         <module>ruoyi-api-workflow</module>
         <module>yingpaipay-api-service</module>
+        <module>yingpaipay-api-archieves</module>
         <module>yingpaipay-api-fulfiller</module>
+        <module>yingpaipay-api-order</module>
     </modules>
 
     <artifactId>ruoyi-api</artifactId>

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

@@ -54,6 +54,24 @@
                 <version>${revision}</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>yingpaipay-api-archieves</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>yingpaipay-api-fulfiller</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>yingpaipay-api-order</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 </project>

+ 2 - 0
ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileService.java

@@ -35,4 +35,6 @@ public interface RemoteFileService {
      * @return 列表
      */
     List<RemoteFile> selectByIds(String ossIds);
+
+    List<RemoteFile> selectByIds(List<Long> ossIds);
 }

+ 6 - 0
ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteFileServiceMock.java

@@ -50,4 +50,10 @@ public class RemoteFileServiceMock implements RemoteFileService {
         return List.of();
     }
 
+    @Override
+    public List<RemoteFile> selectByIds(List<Long> ossIds) {
+        log.warn("服务调用异常 -> 降级处理");
+        return List.of();
+    }
+
 }

+ 13 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteStoreService.java

@@ -0,0 +1,13 @@
+package org.dromara.system.api;
+
+import org.dromara.system.api.domain.vo.RemoteStoreVo;
+
+import java.util.List;
+
+public interface RemoteStoreService {
+    String getNameById(Long id);
+
+    List<RemoteStoreVo> getByIds(List<Long> storeIds);
+
+    List<Long> selectIdsByName(String name);
+}

+ 2 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteTenantService.java

@@ -26,4 +26,6 @@ public interface RemoteTenantService {
     List<RemoteTenantVo> queryList();
 
     String queryNameByTenantId(String tenantId);
+
+    List<String> selectTenantIdsByName(String name);
 }

+ 5 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

@@ -182,4 +182,9 @@ public interface RemoteUserService {
      */
     int resetUserPwd(Long userId, String password);
 
+    List<Long> selectUserIdsByName(String username);
+
+    List<RemoteUserVo> getByIds(List<Long> userIds);
+
+    List<RemoteUserVo> selectListByName(String username);
 }

+ 18 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteStoreVo.java

@@ -0,0 +1,18 @@
+package org.dromara.system.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class RemoteStoreVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+}

+ 21 - 0
ruoyi-api/yingpaipay-api-archieves/pom.xml

@@ -0,0 +1,21 @@
+<?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>yingpaipay-api-archieves</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 15 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemoteCustomerService.java

@@ -0,0 +1,15 @@
+package org.dromara.api;
+
+import org.dromara.api.domain.vo.RemoteCustomerVo;
+
+import java.util.List;
+
+public interface RemoteCustomerService {
+    List<Long> selectIdsByName(String name);
+
+    String selectNameById(Long id);
+
+    List<RemoteCustomerVo> getByIds(List<Long> customerIds);
+
+    List<RemoteCustomerVo> selectListByName(String name);
+}

+ 9 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemotePetService.java

@@ -0,0 +1,9 @@
+package org.dromara.api;
+
+import org.dromara.api.domain.vo.RemotePetVo;
+
+import java.util.List;
+
+public interface RemotePetService {
+    List<RemotePetVo> getByIds(List<Long> petIds);
+}

+ 20 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemoteCustomerVo.java

@@ -0,0 +1,20 @@
+package org.dromara.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class RemoteCustomerVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String address;
+
+}

+ 20 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemotePetVo.java

@@ -0,0 +1,20 @@
+package org.dromara.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class RemotePetVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String breed;
+
+}

+ 4 - 2
ruoyi-api/yingpaipay-api-fulfiller/pom.xml

@@ -12,13 +12,15 @@
     <artifactId>yingpaipay-api-fulfiller</artifactId>
 
     <dependencies>
-
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
         <!-- RuoYi Common Core-->
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>ruoyi-common-core</artifactId>
         </dependency>
-
     </dependencies>
 
 </project>

+ 4 - 0
ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/RemoteFulfillerService.java

@@ -1,8 +1,11 @@
 package org.dromara.fulfiller.api;
 
 import org.dromara.common.core.exception.user.UserException;
+import org.dromara.fulfiller.api.domain.vo.RemoteFulfillerVo;
 import org.dromara.fulfiller.api.model.FulfillerLoginUser;
 
+import java.util.List;
+
 /**
  * 履约者服务接口
  *
@@ -28,4 +31,5 @@ public interface RemoteFulfillerService {
      */
     FulfillerLoginUser getFulfillerById(Long id) throws UserException;
 
+    List<RemoteFulfillerVo> getByIds(List<Long> fulfillerIds);
 }

+ 20 - 0
ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/domain/vo/RemoteFulfillerVo.java

@@ -0,0 +1,20 @@
+package org.dromara.fulfiller.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class RemoteFulfillerVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String status;
+
+}

+ 14 - 0
ruoyi-api/yingpaipay-api-order/pom.xml

@@ -0,0 +1,14 @@
+<?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>yingpaipay-api-order</artifactId>
+
+</project>

+ 5 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteOrderService.java

@@ -0,0 +1,5 @@
+package org.dromara.order.api;
+
+public interface RemoteOrderService {
+    String getCodeById(Long id);
+}

+ 0 - 4
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java

@@ -83,10 +83,6 @@ public class TokenController {
      * @param body 登录信息
      * @return 结果
      */
-    /**
-     * FIXME 修改不通过租户进行隔离
-     * @Author: Huanyi
-     */
     @ApiEncrypt
     @PostMapping("/login")
     public R<LoginVo> login(@RequestBody String body) {

+ 18 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -97,4 +97,22 @@ public interface CacheNames {
      * @Author: Huanyi
      */
     String SYS_TENANT_CATERGORIES_NAME = "sys_tenant_catergories_name#30d";
+
+    /**
+     * 门店名
+     * @Author: Huanyi
+     */
+    String SYS_STORE_NAME = "sys_store_name#30d";
+
+    /**
+     * 宠物用户名
+     * @Author: Huanyi
+     */
+    String USR_CUSTOMER_NAME = "usr_customer_name#30d";
+
+    /**
+     * 订单号
+     * @Author: Huanyi
+     */
+    String SYS_ORDER_CODE = "sys_order_code#30d";
 }

+ 2 - 1
ruoyi-common/ruoyi-common-dubbo/src/main/java/org/dromara/common/dubbo/config/CustomBeanFactoryPostProcessor.java

@@ -65,7 +65,8 @@ public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor,
         // 创建临时的 InetUtils 实例
         try (InetUtils inetUtils = new InetUtils(properties)) {
 //            String ip = "127.0.0.1";
-            String ip = "192.168.1.118";
+           String ip = "192.168.0.102";
+//           String ip = "192.168.1.118";
             // 获取第一个非回环地址
             InetAddress address = inetUtils.findFirstNonLoopbackAddress();
             if (address != null) {

+ 6 - 1
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java

@@ -40,6 +40,10 @@ public class TenantHelper {
     /**
      * 租户功能是否启用
      */
+    /**
+     * FIXME dubbo调用会将mvc上下文丢失
+     * @Author: Huanyi
+     */
     public static boolean isEnable() {
 
         // 通过平台进行分离 @author: Huanyi
@@ -49,8 +53,9 @@ public class TenantHelper {
                 return Platform.isNotAdmin(header);
             }
         }
+        return Convert.toBool(false);
 
-        return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
+//        return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
     }
 
     private static IgnoreStrategy getIgnoreStrategy() {

+ 10 - 0
ruoyi-common/ruoyi-common-translation/pom.xml

@@ -37,6 +37,16 @@
             <artifactId>ruoyi-api-resource</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-archieves</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-order</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 18 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java

@@ -50,4 +50,22 @@ public interface TransConstant {
      * @Author: Huanyi
      */
     String TENANT_CATERORIES_ID_TO_NAME = "tenant_catergories_id_to_name";
+
+    /**
+     * 门店ID转门店名
+     * @Author: Huanyi
+     */
+    String STORE_ID_TO_NAME = "store_id_to_name";
+
+    /**
+     * 宠物用户ID转名称
+     * @Author: Huanyi
+     */
+    String CUSTOMER_ID_TO_NAME = "customer_id_to_name";
+
+    /**
+     * 订单ID转订单号
+     * @Author: Huanyi
+     */
+    String ORDER_ID_TO_CODE = "order_id_to_code";
 }

+ 22 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/CustomerNameTranslationImpl.java

@@ -0,0 +1,22 @@
+package org.dromara.common.translation.core.impl;
+
+import cn.hutool.core.convert.Convert;
+import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.api.RemoteCustomerService;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+
+@AllArgsConstructor
+@TranslationType(type = TransConstant.CUSTOMER_ID_TO_NAME)
+public class CustomerNameTranslationImpl implements TranslationInterface<String> {
+
+    @DubboReference
+    private final RemoteCustomerService remoteCustomerService;
+
+    @Override
+    public String translation(Object key, String other) {
+        return remoteCustomerService.selectNameById(Convert.toLong(key));
+    }
+}

+ 22 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OrderCodeTranslationImpl.java

@@ -0,0 +1,22 @@
+package org.dromara.common.translation.core.impl;
+
+import cn.hutool.core.convert.Convert;
+import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.order.api.RemoteOrderService;
+
+@AllArgsConstructor
+@TranslationType(type = TransConstant.ORDER_ID_TO_CODE)
+public class OrderCodeTranslationImpl implements TranslationInterface<String> {
+
+    @DubboReference
+    private final RemoteOrderService remoteOrderService;
+
+    @Override
+    public String translation(Object key, String other) {
+        return remoteOrderService.getCodeById(Convert.toLong(key));
+    }
+}

+ 22 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/StoreNameTranslationImpl.java

@@ -0,0 +1,22 @@
+package org.dromara.common.translation.core.impl;
+
+import cn.hutool.core.convert.Convert;
+import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.system.api.RemoteStoreService;
+
+@AllArgsConstructor
+@TranslationType(type = TransConstant.STORE_ID_TO_NAME)
+public class StoreNameTranslationImpl implements TranslationInterface<String> {
+
+    @DubboReference
+    private final RemoteStoreService remoteStoreService;
+
+    @Override
+    public String translation(Object key, String other) {
+        return remoteStoreService.getNameById(Convert.toLong(key));
+    }
+}

+ 3 - 0
ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -7,3 +7,6 @@ org.dromara.common.translation.core.impl.NicknameTranslationImpl
 org.dromara.common.translation.core.impl.AreaStationTranslationImpl
 org.dromara.common.translation.core.impl.TenantNameTranslationImpl
 org.dromara.common.translation.core.impl.TenantCatergoriesNameTranslationImpl
+org.dromara.common.translation.core.impl.CustomerNameTranslationImpl
+org.dromara.common.translation.core.impl.OrderCodeTranslationImpl
+org.dromara.common.translation.core.impl.StoreNameTranslationImpl

+ 1 - 1
ruoyi-common/yingpaipay-common-platform/src/main/java/org/dromara/common/platform/Platform.java

@@ -22,7 +22,7 @@ public enum Platform {
 
     ADMIN(0, "4pwuAzDBzUd6hekvGHHKedT4VX5WHERAXHpeztPFAzRaUsBUrD", "管理后台"),
     MERCHANT(1, "MfJkMNMW2JKXBuPcbP2rxkD3ynXmReAZZFm4fN7cAGwGJdKCmd", "商户后台"),
-    FULFILLER(2, "FlfAppPlatformCodeX9kR7mT3wQ5vZ8nB1jY6pD4sL0hC2gA", "履约者App"),
+
     ;
 
     private final Integer id;

+ 6 - 0
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java

@@ -93,4 +93,10 @@ public class RemoteFileServiceImpl implements RemoteFileService {
         List<SysOssVo> sysOssVos = sysOssService.listByIds(StringUtils.splitTo(ossIds, Convert::toLong));
         return MapstructUtils.convert(sysOssVos, RemoteFile.class);
     }
+
+    @Override
+    public List<RemoteFile> selectByIds(List<Long> ossIds){
+        List<SysOssVo> sysOssVos = sysOssService.listByIds(ossIds);
+        return MapstructUtils.convert(sysOssVos, RemoteFile.class);
+    }
 }

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysStoreController.java

@@ -6,7 +6,9 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.bo.SysStoreBanBo;
 import org.dromara.system.domain.bo.SysStorePageBo;
+import org.dromara.system.domain.bo.SysStoreRenewBo;
 import org.dromara.system.domain.vo.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
@@ -134,4 +136,16 @@ public class SysStoreController extends BaseController {
         return sysStoreService.listOnOrder(name, site,  pageQuery);
     }
 
+    @RepeatSubmit()
+    @PutMapping("/renew")
+    public R<Void> renew(@RequestBody SysStoreRenewBo bo) {
+        return toAjax(sysStoreService.renew(bo));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/ban")
+    public R<Void> ban(@RequestBody SysStoreBanBo bo) {
+        return toAjax(sysStoreService.ban(bo));
+    }
+
 }

+ 10 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreBanBo.java

@@ -0,0 +1,10 @@
+package org.dromara.system.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysStoreBanBo {
+
+    private Long id;
+
+}

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreRenewBo.java

@@ -0,0 +1,14 @@
+package org.dromara.system.domain.bo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SysStoreRenewBo {
+
+    private Long id;
+
+    private Date to;
+
+}

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysStoreListOnOrderVo.java

@@ -24,4 +24,6 @@ public class SysStoreListOnOrderVo implements Serializable {
 
     private String address;
 
+    private String tenantId;
+
 }

+ 68 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteStoreServiceImpl.java

@@ -0,0 +1,68 @@
+package org.dromara.system.dubbo;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.system.api.RemoteStoreService;
+import org.dromara.system.api.domain.vo.RemoteStoreVo;
+import org.dromara.system.domain.SysStore;
+import org.dromara.system.mapper.SysStoreMapper;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteStoreServiceImpl implements RemoteStoreService {
+
+    private final SysStoreMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_STORE_NAME, key = "#id")
+    @Override
+    public String getNameById(Long id) {
+        AtomicReference<SysStore> store = new AtomicReference<>();
+        TenantHelper.ignore(() -> store.set(baseMapper.selectOne(
+            Wrappers.lambdaQuery(SysStore.class)
+                .select(SysStore::getName)
+                .eq(SysStore::getId, id)
+        )));
+        return store.get().getName();
+    }
+
+    @Override
+    public List<RemoteStoreVo> getByIds(List<Long> storeIds) {
+        if (storeIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        List<RemoteStoreVo> vos = new ArrayList<>();
+        baseMapper.selectList(
+            Wrappers.lambdaQuery(SysStore.class)
+                .select(SysStore::getId, SysStore::getName)
+                .in(SysStore::getId, storeIds)
+        ).forEach(e -> {
+            RemoteStoreVo vo = new RemoteStoreVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vos.add(vo);
+        });
+
+        return vos;
+    }
+
+    @Override
+    public List<Long> selectIdsByName(String name) {
+        List<Long> ids = new ArrayList<>();
+        baseMapper.selectList(
+            Wrappers.lambdaQuery(SysStore.class).like(SysStore::getName, name)
+        ).forEach(e -> ids.add(e.getId()));
+        return ids;
+    }
+}

+ 17 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTenantServiceImpl.java

@@ -1,15 +1,19 @@
 package org.dromara.system.dubbo;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.system.api.RemoteTenantService;
 import org.dromara.system.api.domain.vo.RemoteTenantVo;
+import org.dromara.system.domain.SysTenant;
 import org.dromara.system.domain.bo.SysTenantBo;
 import org.dromara.system.domain.vo.SysTenantVo;
+import org.dromara.system.mapper.SysTenantMapper;
 import org.dromara.system.service.ISysTenantService;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -22,6 +26,8 @@ public class RemoteTenantServiceImpl implements RemoteTenantService {
 
     private final ISysTenantService tenantService;
 
+    private final SysTenantMapper tenantMapper;
+
     /**
      * 根据租户id获取租户详情
      *
@@ -50,4 +56,15 @@ public class RemoteTenantServiceImpl implements RemoteTenantService {
         return tenantService.queryByTenantId(tenantId).getCompanyName();
     }
 
+    @Override
+    public List<String> selectTenantIdsByName(String name) {
+        List<String> tenantIds = new ArrayList<>();
+        tenantMapper.selectList(
+            Wrappers.lambdaQuery(SysTenant.class)
+                .select(SysTenant::getTenantId)
+                .like(SysTenant::getCompanyName, name)
+        ).forEach(e -> tenantIds.add(e.getTenantId()));
+        return tenantIds;
+    }
+
 }

+ 61 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Opt;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.common.core.constant.SystemConstants;
@@ -452,4 +453,64 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         return userService.resetUserPwd(userId, password);
     }
 
+    @Override
+    public List<Long> selectUserIdsByName(String username) {
+        List<Long> ids = new ArrayList<>();
+        userMapper.selectList(
+            Wrappers.lambdaQuery(SysUser.class)
+                .select(SysUser::getUserId)
+                .like(StringUtils.isNotBlank(username), SysUser::getUserName, username)
+        ).forEach(e -> ids.add(e.getUserId()));
+        return ids;
+    }
+
+    @Override
+    public List<RemoteUserVo> getByIds(List<Long> userIds) {
+        if (userIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<RemoteUserVo> vos = new ArrayList<>();
+        userMapper.selectList(
+            Wrappers.lambdaQuery(SysUser.class)
+                .in(SysUser::getUserId, userIds)
+        ).forEach(e -> {
+            RemoteUserVo vo = new RemoteUserVo();
+            vo.setUserId(e.getUserId());
+            vo.setDeptId(e.getDeptId());
+            vo.setUserName(e.getUserName());
+            vo.setNickName(e.getNickName());
+            vo.setUserType(e.getUserType());
+            vo.setEmail(e.getEmail());
+            vo.setPhonenumber(e.getPhonenumber());
+            vo.setSex(e.getSex());
+            vo.setStatus(e.getStatus());
+            vo.setCreateTime(e.getCreateTime());
+            vos.add(vo);
+        });
+        return vos;
+    }
+
+    @Override
+    public List<RemoteUserVo> selectListByName(String username) {
+        List<RemoteUserVo> vos = new ArrayList<>();
+        userMapper.selectList(
+            Wrappers.lambdaQuery(SysUser.class)
+                .like(StringUtils.isNotBlank(username), SysUser::getUserName, username)
+        ).forEach(e -> {
+            RemoteUserVo vo = new RemoteUserVo();
+            vo.setUserId(e.getUserId());
+            vo.setDeptId(e.getDeptId());
+            vo.setUserName(e.getUserName());
+            vo.setNickName(e.getNickName());
+            vo.setUserType(e.getUserType());
+            vo.setEmail(e.getEmail());
+            vo.setPhonenumber(e.getPhonenumber());
+            vo.setSex(e.getSex());
+            vo.setStatus(e.getStatus());
+            vo.setCreateTime(e.getCreateTime());
+            vos.add(vo);
+        });
+        return vos;
+    }
+
 }

+ 6 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysStoreService.java

@@ -1,7 +1,9 @@
 package org.dromara.system.service;
 
 import org.dromara.system.domain.SysStore;
+import org.dromara.system.domain.bo.SysStoreBanBo;
 import org.dromara.system.domain.bo.SysStorePageBo;
+import org.dromara.system.domain.bo.SysStoreRenewBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.domain.bo.SysStoreBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -77,4 +79,8 @@ public interface ISysStoreService {
     List<Long> selectStoreIds(Long userId);
 
     TableDataInfo<SysStoreListOnOrderVo> listOnOrder(String name, Long site, PageQuery pageQuery);
+
+    boolean renew(SysStoreRenewBo bo);
+
+    boolean ban(SysStoreBanBo bo);
 }

+ 30 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java

@@ -2,6 +2,7 @@ package org.dromara.system.service.impl;
 
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.seata.spring.annotation.GlobalTransactional;
+import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -12,13 +13,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.mybatis.utils.WrapperUtils;
+import org.dromara.common.redis.utils.CacheUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.service.api.RemoteStoreServiceService;
 import org.dromara.service.api.domain.bo.RemoteStoreServiceBo;
 import org.dromara.system.constants.StoreConstants;
 import org.dromara.system.domain.SysAreaStation;
 import org.dromara.system.domain.SysUserStore;
+import org.dromara.system.domain.bo.SysStoreBanBo;
 import org.dromara.system.domain.bo.SysStorePageBo;
+import org.dromara.system.domain.bo.SysStoreRenewBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.enums.AreaStationStatusEnum;
 import org.dromara.system.enums.SysStoreStatusEnum;
@@ -165,6 +169,8 @@ public class SysStoreServiceImpl implements ISysStoreService {
             throw new RuntimeException("批量插入关系失败");
         }
 
+        CacheUtils.put(CacheNames.SYS_STORE_NAME, add.getId(), add.getName());
+
         return true;
     }
 
@@ -178,6 +184,9 @@ public class SysStoreServiceImpl implements ISysStoreService {
     public Boolean updateByBo(SysStoreBo bo) {
         SysStore update = MapstructUtils.convert(bo, SysStore.class);
         validEntityBeforeSave(update);
+
+        CacheUtils.put(CacheNames.SYS_STORE_NAME, update.getId(), update.getName());
+
         return baseMapper.updateById(update) > 0;
     }
 
@@ -200,6 +209,7 @@ public class SysStoreServiceImpl implements ISysStoreService {
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
+        ids.forEach(id -> CacheUtils.evict(CacheNames.SYS_STORE_NAME, id));
         return baseMapper.deleteByIds(ids) > 0;
     }
 
@@ -280,7 +290,27 @@ public class SysStoreServiceImpl implements ISysStoreService {
             vo.setSite(e.getSite());
             vo.setAreaCode(e.getAreaCode());
             vo.setAddress(e.getDetailAddress());
+            vo.setTenantId(e.getTenantId());
             return vo;
         }));
     }
+
+    @Override
+    public boolean renew(SysStoreRenewBo bo) {
+        return baseMapper.update(
+            Wrappers.lambdaUpdate(SysStore.class)
+                .eq(SysStore::getId, bo.getId())
+                .set(SysStore::getEndBusinessTime, bo.getTo())
+                .set(SysStore::getStatus, SysStoreStatusEnum.IN_OPERATION.getValue())
+        ) > 0;
+    }
+
+    @Override
+    public boolean ban(SysStoreBanBo bo) {
+        return baseMapper.update(
+            Wrappers.lambdaUpdate(SysStore.class)
+                .eq(SysStore::getId, bo.getId())
+                .set(SysStore::getStatus, SysStoreStatusEnum.BANNED.getValue())
+        ) > 0;
+    }
 }

+ 13 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantCategoriesServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.system.service.impl;
 
+import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,7 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.system.domain.SysStore;
 import org.dromara.system.domain.vo.SysTenantCategoriesOnStoreVo;
+import org.dromara.system.mapper.SysStoreMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.SysTenantCategoriesBo;
 import org.dromara.system.domain.vo.SysTenantCategoriesVo;
@@ -33,6 +36,7 @@ import java.util.Collection;
 public class SysTenantCategoriesServiceImpl implements ISysTenantCategoriesService {
 
     private final SysTenantCategoriesMapper baseMapper;
+    private final SysStoreMapper storeMapper;
 
     /**
      * 查询商户分类
@@ -133,6 +137,15 @@ public class SysTenantCategoriesServiceImpl implements ISysTenantCategoriesServi
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
+
+        boolean exists = storeMapper.exists(
+            Wrappers.lambdaQuery(SysStore.class)
+                .in(SysStore::getTenantCatergories, ids)
+        );
+        if (exists) {
+            throw new ServiceException("存在有门店绑定,不能删除");
+        }
+
         return baseMapper.deleteByIds(ids) > 0;
     }
 

+ 5 - 0
ruoyi-modules/yingpaipay-archieves/pom.xml

@@ -94,6 +94,11 @@
             <artifactId>ruoyi-api-resource</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-archieves</artifactId>
+        </dependency>
+
         <!-- RuoYi Api System -->
         <dependency>
             <groupId>org.dromara</groupId>

+ 2 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/YingpaipayArchievesApplication.java

@@ -1,10 +1,12 @@
 package org.dromara.archieves;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
 
+@EnableDubbo
 @SpringBootApplication
 @Slf4j
 public class YingpaipayArchievesApplication {

+ 22 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrCustomerController.java

@@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import net.sf.jsqlparser.schema.Table;
+import org.dromara.archieves.domain.vo.UsrCustomerOnOrderVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -68,7 +70,7 @@ public class UsrCustomerController extends BaseController {
     /**
      * 获取用户详细信息
      */
-    @SaCheckPermission("archieves:customer:query")
+//    @SaCheckPermission("archieves:customer:query")
     @GetMapping("/{id}")
     public R<UsrCustomerVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable("id") Long id) {
@@ -86,6 +88,17 @@ public class UsrCustomerController extends BaseController {
         return toAjax(usrCustomerService.insertByBo(bo));
     }
 
+    /**
+     * 在订单中新增用户
+     * @Author: Huanyi
+     */
+    @Log(title = "用户管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/addOnOrder")
+    public R<Void> addOnOrder(@Validated(AddGroup.class) @RequestBody UsrCustomerBo bo) {
+        return toAjax(usrCustomerService.insertByBo(bo));
+    }
+
     /**
      * 修改用户
      */
@@ -118,4 +131,12 @@ public class UsrCustomerController extends BaseController {
         return toAjax(usrCustomerService.changeStatus(id, status));
     }
 
+    @GetMapping("/listOnOrder")
+    public TableDataInfo<UsrCustomerOnOrderVo> listOnOrder(
+        @RequestParam(name = "content", required = false) String content,
+        PageQuery pageQuery
+    ) {
+        return usrCustomerService.listOnOrder(content, pageQuery);
+    }
+
 }

+ 13 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrPetController.java

@@ -70,7 +70,7 @@ public class UsrPetController extends BaseController {
     /**
      * 获取宠物详细信息
      */
-    @SaCheckPermission("archieves:pet:query")
+//    @SaCheckPermission("archieves:pet:query")
     @GetMapping("/{id}")
     public R<UsrPetVo> getInfo(@NotNull(message = "主键不能为空")
                                @PathVariable("id") Long id) {
@@ -88,6 +88,13 @@ public class UsrPetController extends BaseController {
         return toAjax(usrPetService.insertByBo(bo));
     }
 
+    @Log(title = "宠物档案", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/addOnOrder")
+    public R<Void> addOnOrder(@Validated(AddGroup.class) @RequestBody UsrPetBo bo) {
+        return toAjax(usrPetService.insertByBo(bo));
+    }
+
     /**
      * 修改宠物
      */
@@ -110,4 +117,9 @@ public class UsrPetController extends BaseController {
         return toAjax(usrPetService.deleteWithValidByIds(List.of(ids), true));
     }
 
+    @GetMapping("/listOnOrder")
+    public R<List<UsrPetVo>> listOnOrder(@RequestParam Long customerId) {
+        return R.ok(usrPetService.queryListByUserId(customerId));
+    }
+
 }

+ 1 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/UsrPet.java

@@ -35,7 +35,7 @@ public class UsrPet extends BaseEntity {
 
     private Long avatar;
 
-    private Integer type;
+    private String type;
 
     private String breed;
 

+ 1 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/bo/UsrPetBo.java

@@ -35,7 +35,7 @@ public class UsrPetBo extends BaseEntity {
 
     private Long avatar;
 
-    private Integer type;
+    private String type;
 
     private String breed;
 

+ 24 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrCustomerOnOrderVo.java

@@ -0,0 +1,24 @@
+package org.dromara.archieves.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class UsrCustomerOnOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String phoneNumber;
+
+    private String regionCode;
+
+    private String address;
+
+}

+ 20 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrPetOnOrderVo.java

@@ -0,0 +1,20 @@
+package org.dromara.archieves.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class UsrPetOnOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String type;
+
+}

+ 1 - 1
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrPetVo.java

@@ -42,7 +42,7 @@ public class UsrPetVo implements Serializable {
     private String avatarUrl;
 
     @ExcelProperty(value = "类型")
-    private Integer type;
+    private Integer String;
 
     @ExcelProperty(value = "品种")
     private String breed;

+ 82 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemoteCustomerServiceImpl.java

@@ -0,0 +1,82 @@
+package org.dromara.archieves.dubbo;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.api.RemoteCustomerService;
+import org.dromara.api.domain.vo.RemoteCustomerVo;
+import org.dromara.archieves.domain.UsrCustomer;
+import org.dromara.archieves.mapper.UsrCustomerMapper;
+import org.dromara.common.core.constant.CacheNames;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@DubboService
+@Service
+@RequiredArgsConstructor
+public class RemoteCustomerServiceImpl implements RemoteCustomerService {
+
+    private final UsrCustomerMapper baseMapper;
+
+    @Override
+    public List<Long> selectIdsByName(String name) {
+        List<Long> ids = new ArrayList<>();
+        baseMapper.selectList(
+            Wrappers.lambdaQuery(UsrCustomer.class)
+                .select(UsrCustomer::getId)
+                .like(StringUtils.isNotBlank(name), UsrCustomer::getName, name)
+        ).forEach(e -> ids.add(e.getId()));
+        return ids;
+    }
+
+    @Cacheable(cacheNames = CacheNames.USR_CUSTOMER_NAME, key = "#id")
+    @Override
+    public String selectNameById(Long id) {
+        return baseMapper.selectOne(
+            Wrappers.lambdaQuery(UsrCustomer.class)
+                .select(UsrCustomer::getName)
+                .eq(UsrCustomer::getId, id)
+        ).getName();
+    }
+
+    @Override
+    public List<RemoteCustomerVo> getByIds(List<Long> customerIds) {
+        if (customerIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<RemoteCustomerVo> vos = new ArrayList<>();
+        baseMapper.selectList(
+            Wrappers.lambdaQuery(UsrCustomer.class)
+                .select(UsrCustomer::getId, UsrCustomer::getName, UsrCustomer::getAddress)
+                .in(UsrCustomer::getId, customerIds)
+        ).forEach(e -> {
+            RemoteCustomerVo vo = new RemoteCustomerVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setAddress(e.getAddress());
+            vos.add(vo);
+        });
+        return vos;
+    }
+
+    @Override
+    public List<RemoteCustomerVo> selectListByName(String name) {
+        List<RemoteCustomerVo> vos = new ArrayList<>();
+        baseMapper.selectList(
+            Wrappers.lambdaQuery(UsrCustomer.class)
+                .select(UsrCustomer::getId, UsrCustomer::getName)
+                .like(StringUtils.isNotBlank(name), UsrCustomer::getName, name)
+        ).forEach(e -> {
+            RemoteCustomerVo vo = new RemoteCustomerVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vos.add(vo);
+        });
+        return vos;
+    }
+}

+ 46 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemotePetServiceImpl.java

@@ -0,0 +1,46 @@
+package org.dromara.archieves.dubbo;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.api.RemotePetService;
+import org.dromara.api.domain.vo.RemotePetVo;
+import org.dromara.archieves.domain.UsrPet;
+import org.dromara.archieves.mapper.SysTagRelMapper;
+import org.dromara.archieves.mapper.UsrPetMapper;
+import org.dromara.common.mybatis.utils.WrapperUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemotePetServiceImpl implements RemotePetService {
+
+    private final UsrPetMapper baseMapper;
+    private final SysTagRelMapper tagRelMapper;
+
+    @Override
+    public List<RemotePetVo> getByIds(List<Long> petIds) {
+
+        List<RemotePetVo> vos = new ArrayList<>();
+
+        List<UsrPet> pets = baseMapper.selectList(
+            Wrappers.lambdaQuery(UsrPet.class)
+                .select(UsrPet::getId, UsrPet::getName, UsrPet::getBreed)
+                .in(UsrPet::getId, WrapperUtils.convertIds(petIds))
+        );
+
+        for (UsrPet pet : pets) {
+            RemotePetVo vo = new RemotePetVo();
+            vo.setId(pet.getId());
+            vo.setName(pet.getName());
+            vo.setBreed(pet.getBreed());
+            vos.add(vo);
+        }
+
+        return vos;
+    }
+}

+ 2 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/IUsrCustomerService.java

@@ -1,5 +1,6 @@
 package org.dromara.archieves.service;
 
+import org.dromara.archieves.domain.vo.UsrCustomerOnOrderVo;
 import org.dromara.archieves.domain.vo.UsrCustomerVo;
 import org.dromara.archieves.domain.bo.UsrCustomerBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -51,4 +52,5 @@ public interface IUsrCustomerService {
      */
     Boolean changeStatus(Long id, Integer status);
 
+    TableDataInfo<UsrCustomerOnOrderVo> listOnOrder(String name, PageQuery pageQuery);
 }

+ 39 - 5
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java

@@ -1,5 +1,7 @@
 package org.dromara.archieves.service.impl;
 
+import org.dromara.archieves.domain.vo.UsrCustomerOnOrderVo;
+import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.CacheUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.dromara.archieves.domain.SysTagRel;
@@ -94,6 +97,7 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
             saveTagRels(add.getId(), bo.getTagIds(), "user");
             arcChangeLogService.addLog(add.getId(), "customer", "创建", "用户已被创建");
         }
+        CacheUtils.put(CacheNames.USR_CUSTOMER_NAME, add.getId(), add.getName());
         return flag;
     }
 
@@ -112,6 +116,7 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
                 arcChangeLogService.addLog(bo.getId(), "customer", "编辑", "用户信息已修改");
             }
         }
+        CacheUtils.put(CacheNames.USR_CUSTOMER_NAME, update.getId(), update.getName());
         return flag;
     }
 
@@ -127,11 +132,14 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         // 记录删除日志
         ids.forEach(id -> arcChangeLogService.addLog(id, "customer", "删除", "用户已被删除"));
         // 删除标签关联
-        ids.forEach(id -> tagRelMapper.delete(
-            Wrappers.lambdaQuery(SysTagRel.class)
-                .eq(SysTagRel::getTargetId, id)
-                .eq(SysTagRel::getTargetType, "user")
-        ));
+        ids.forEach(id -> {
+            tagRelMapper.delete(
+                Wrappers.lambdaQuery(SysTagRel.class)
+                    .eq(SysTagRel::getTargetId, id)
+                    .eq(SysTagRel::getTargetType, "user")
+            );
+            CacheUtils.evict(CacheNames.USR_CUSTOMER_NAME, id);
+        });
         return baseMapper.deleteByIds(ids) > 0;
     }
 
@@ -148,6 +156,32 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         return flag;
     }
 
+    @Override
+    public TableDataInfo<UsrCustomerOnOrderVo> listOnOrder(String content, PageQuery pageQuery) {
+
+        Page<UsrCustomer> page = baseMapper.selectPage(
+            pageQuery.build(),
+            Wrappers.lambdaQuery(UsrCustomer.class)
+                .and(StringUtils.isNotBlank(content), wrapper -> wrapper
+                    .like(UsrCustomer::getName, content)
+                    .or()
+                    .like(UsrCustomer::getPhone, content)
+                )
+                .orderByDesc(UsrCustomer::getId)
+        );
+
+        return TableDataInfo.build(page.convert(e -> {
+            UsrCustomerOnOrderVo vo = new UsrCustomerOnOrderVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setPhoneNumber(e.getPhone());
+            vo.setRegionCode(e.getRegionCode());
+            vo.setAddress(e.getAddress());
+            return vo;
+        }));
+
+    }
+
     /**
      * 查询目标关联的标签列表
      */

+ 5 - 0
ruoyi-modules/yingpaipay-fulfiller/pom.xml

@@ -95,6 +95,11 @@
             <artifactId>ruoyi-api-resource</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-fulfiller</artifactId>
+        </dependency>
+
         <!-- RuoYi Api System -->
         <dependency>
             <groupId>org.dromara</groupId>

+ 13 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java

@@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -238,7 +239,7 @@ public class FlfFulfillerController extends BaseController {
     /**
      * 奖惩操作
      */
-    @SaCheckPermission("fulfiller:fulfiller:edit")
+//    @SaCheckPermission("fulfiller:fulfiller:edit")
     @Log(title = "履约者管理-奖惩", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PostMapping("/reward")
@@ -268,4 +269,15 @@ public class FlfFulfillerController extends BaseController {
         return toAjax(fulfillerService.adjustBalance(bo));
     }
 
+    /**
+     * 订单式获取履约者
+     */
+    @GetMapping("/pageOnOrder")
+    public TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(
+        @RequestParam(name = "content", required = false) String content,
+        PageQuery pageQuery
+    ) {
+        return fulfillerService.pageOnOrder(content, pageQuery);
+    }
+
 }

+ 27 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerOnOrderVo.java

@@ -0,0 +1,27 @@
+package org.dromara.fulfiller.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class FlfFulfillerOnOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private String avatar;
+
+    private String status;
+
+    private String phone;
+
+    private List<Long> tags;
+
+}

+ 32 - 4
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.fulfiller.dubbo;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -7,11 +8,16 @@ import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.exception.user.UserException;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.fulfiller.api.RemoteFulfillerService;
+import org.dromara.fulfiller.api.domain.vo.RemoteFulfillerVo;
 import org.dromara.fulfiller.api.model.FulfillerLoginUser;
 import org.dromara.fulfiller.domain.FlfFulfiller;
 import org.dromara.fulfiller.mapper.FlfFulfillerMapper;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 履约者服务实现
  *
@@ -32,12 +38,12 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
                 .eq(FlfFulfiller::getPhone, phone)
                 .eq(FlfFulfiller::getDelFlag, "0")
         );
-        
+
         if (fulfiller == null) {
             log.info("登录用户:{} 不存在.", phone);
             throw new UserException("user.not.exists");
         }
-        
+
         if ("disabled".equals(fulfiller.getStatus())) {
             log.info("登录用户:{} 已被禁用.", phone);
             throw new UserException("user.blocked");
@@ -49,12 +55,12 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
     @Override
     public FulfillerLoginUser getFulfillerById(Long id) throws UserException {
         FlfFulfiller fulfiller = fulfillerMapper.selectById(id);
-        
+
         if (fulfiller == null) {
             log.info("履约者ID:{} 不存在.", id);
             throw new UserException("user.not.exists");
         }
-        
+
         if ("disabled".equals(fulfiller.getStatus())) {
             log.info("履约者ID:{} 已被禁用.", id);
             throw new UserException("user.blocked");
@@ -63,6 +69,28 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
         return toLoginUser(fulfiller);
     }
 
+    @Override
+    public List<RemoteFulfillerVo> getByIds(List<Long> fulfillerIds) {
+
+        if (fulfillerIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        List<RemoteFulfillerVo> vos = new ArrayList<>();
+        fulfillerMapper.selectList(
+            Wrappers.lambdaQuery(FlfFulfiller.class)
+                .select(FlfFulfiller::getId, FlfFulfiller::getName, FlfFulfiller::getStatus)
+                .in(FlfFulfiller::getId, fulfillerIds)
+        ).forEach(e -> {
+            RemoteFulfillerVo vo = new RemoteFulfillerVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setStatus(e.getStatus());
+            vos.add(vo);
+        });
+        return vos;
+    }
+
     /**
      * 手动转换 FlfFulfiller → FulfillerLoginUser(避免跨模块 MapStruct 转换器缺失)
      */

+ 2 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfFulfillerService.java

@@ -4,6 +4,7 @@ import org.dromara.fulfiller.domain.bo.FlfFulfillerBo;
 import org.dromara.fulfiller.domain.bo.FlfAdjustBalanceBo;
 import org.dromara.fulfiller.domain.bo.FlfAdjustPointsBo;
 import org.dromara.fulfiller.domain.bo.FlfRewardBo;
+import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerVo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -126,4 +127,5 @@ public interface IFlfFulfillerService {
      */
     Boolean updateAuthInfoByUserId(Long userId, java.util.Map<String, String> params);
 
+    TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(String content, PageQuery pageQuery);
 }

+ 50 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -12,7 +12,9 @@ import cn.hutool.crypto.digest.BCrypt;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.mybatis.utils.WrapperUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.dromara.fulfiller.domain.FlfAudit;
@@ -42,6 +44,7 @@ import org.dromara.system.api.RemoteAreaStationService;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -311,6 +314,7 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
 
     /**
      * 填充VO的图片URL、站点名称、服务类型列表等
+     *
      * @author steelwei
      */
     private void enrichVo(FlfFulfillerVo vo) {
@@ -542,4 +546,50 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         return auditMapper.updateById(audit) > 0;
     }
 
+    @Override
+    public TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(String content, PageQuery pageQuery) {
+
+        Page<FlfFulfiller> page = baseMapper.selectPage(
+            pageQuery.build(),
+            Wrappers.lambdaQuery(FlfFulfiller.class)
+                .select(FlfFulfiller::getId, FlfFulfiller::getAvatar, FlfFulfiller::getPhone, FlfFulfiller::getName, FlfFulfiller::getStatus)
+                .orderByDesc(FlfFulfiller::getId)
+                .and(StringUtils.isNotBlank(content), wrapper -> wrapper
+                    .like(FlfFulfiller::getName, content).or().like(FlfFulfiller::getPhone, content)
+                )
+        );
+        List<Long> fulfillerIds = new ArrayList<>();
+        List<Long> avatarIds = new ArrayList<>();
+        page.getRecords().forEach(e -> {
+            fulfillerIds.add(e.getId());
+            if ((StringUtils.isNotBlank(e.getAvatar()))) {
+                avatarIds.add(Long.parseLong(e.getAvatar()));
+            }
+        });
+        Map<Long, List<Long>> tagMap = new HashMap<>();
+        Map<Long, RemoteFile> avatarMap = new HashMap<>();
+        tagRelMapper.selectList(
+            Wrappers.lambdaQuery(SysTagRel.class)
+                .eq(SysTagRel::getTargetType, "fulfiller")
+                .in(SysTagRel::getTargetId, WrapperUtils.convertIds(fulfillerIds))
+        ).forEach(e -> tagMap.computeIfAbsent(e.getTargetId(), k -> new ArrayList<>()).add(e.getTagId()));
+
+        remoteFileService.selectByIds(avatarIds).forEach(e -> avatarMap.put(e.getOssId(), e));
+
+        return TableDataInfo.build(page.convert(e -> {
+            FlfFulfillerOnOrderVo vo = new FlfFulfillerOnOrderVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setAvatar(
+                Optional.ofNullable(e.getAvatar())
+                    .map(id -> avatarMap.get(Long.parseLong(id)).getUrl())
+                    .orElse(null)
+            );
+            vo.setPhone(e.getPhone());
+            vo.setTags(tagMap.get(e.getId()));
+            vo.setStatus(e.getStatus());
+            return vo;
+        }));
+    }
+
 }

+ 15 - 0
ruoyi-modules/yingpaipay-order/pom.xml

@@ -100,6 +100,21 @@
             <artifactId>yingpaipay-api-service</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-archieves</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-fulfiller</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-order</artifactId>
+        </dependency>
+
         <!-- RuoYi Api System -->
         <dependency>
             <groupId>org.dromara</groupId>

+ 2 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/YingpaipayOrderApplication.java

@@ -1,10 +1,12 @@
 package org.dromara.order;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
 
+@EnableDubbo
 @SpringBootApplication
 @Slf4j
 public class YingpaipayOrderApplication {

+ 3 - 3
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/controller/OrderStatusController.java → ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/OrderStatusController.java

@@ -1,9 +1,9 @@
-package org.dromara.controller;
+package org.dromara.order.controller;
 
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
-import org.dromara.domain.vo.OrderStatusVo;
-import org.dromara.service.IOrderStatusService;
+import org.dromara.order.domain.vo.OrderStatusVo;
+import org.dromara.order.service.IOrderStatusService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;

+ 26 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysOrderController.java

@@ -0,0 +1,26 @@
+package org.dromara.order.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.order.domain.bo.SysOrderCreateBo;
+import org.dromara.order.service.ISysOrderService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RestController
+@RequestMapping("/order")
+@RequiredArgsConstructor
+public class SysOrderController extends BaseController {
+
+    private final ISysOrderService orderService;
+
+    @RepeatSubmit()
+    @PostMapping("/create")
+    public R<Void> create(@Validated @RequestBody SysOrderCreateBo bo) {
+        return toAjax(orderService.create(bo));
+    }
+
+}

+ 71 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java

@@ -0,0 +1,71 @@
+package org.dromara.order.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.order.domain.bo.*;
+import org.dromara.order.domain.vo.SysSubOrderCountVo;
+import org.dromara.order.domain.vo.SysSubOrderListPageVo;
+import org.dromara.order.domain.vo.SysSubOrderPendingAcceptPageVo;
+import org.dromara.order.domain.vo.SysSubOrderVo;
+import org.dromara.order.service.ISysSubOrderService;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/subOrder")
+public class SysSubOrderController extends BaseController {
+
+    private final ISysSubOrderService subOrderService;
+
+    @GetMapping("/list")
+    public TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery) {
+        return subOrderService.list(bo, pageQuery);
+    }
+
+    @GetMapping("/listOnMerchant")
+    public TableDataInfo<SysSubOrderListPageVo> listOnMerchant(SysSubOrderListPageBo bo, PageQuery pageQuery) {
+        return subOrderService.listOnMerchant(bo, pageQuery);
+    }
+
+    @GetMapping("/getInfo")
+    public R<SysSubOrderVo> getInfo(@RequestParam Long id) {
+        return R.ok(subOrderService.getInfo(id));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/dispatch")
+    public R<Void> dispatch(@RequestBody SysSubOrderDispatchBo bo) {
+        return toAjax(subOrderService.dispatch(bo));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/cancel")
+    public R<Void> cancel(@RequestBody SysSubOrderCancelBo bo) {
+        return toAjax(subOrderService.cancel(bo));
+    }
+
+    @GetMapping("/listPendingAccept")
+    public TableDataInfo<SysSubOrderPendingAcceptPageVo> listPendingAccept(SysSubOrderPendingAcceptPageBo bo, PageQuery pageQuery) {
+        return subOrderService.listPendingAccept(bo, pageQuery);
+    }
+
+    @PutMapping("/accept")
+    public R<Void> accept(@RequestBody  SysSubOrderAcceptBo bo) {
+        return toAjax(subOrderService.accept(bo));
+    }
+
+    @GetMapping("/count")
+    public R<SysSubOrderCountVo> count() {
+        return R.ok(subOrderService.count());
+    }
+
+    @PutMapping("/remark")
+    public R<Void> remark(@RequestBody SysSubOrderRemarkBo bo) {
+        return toAjax(subOrderService.remark(bo));
+    }
+
+}

+ 27 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderLogController.java

@@ -0,0 +1,27 @@
+package org.dromara.order.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.order.domain.vo.SysSubOrderLogVo;
+import org.dromara.order.service.ISysSubOrderLogService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/subOrderLog")
+@RequiredArgsConstructor
+public class SysSubOrderLogController extends BaseController {
+
+    private final ISysSubOrderLogService subOrderLogService;
+
+    @GetMapping("/list")
+    public R<List<SysSubOrderLogVo>> list(@RequestParam Long orderId) {
+        return R.ok(subOrderLogService.list(orderId));
+    }
+
+}

+ 92 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysOrder.java

@@ -0,0 +1,92 @@
+package org.dromara.order.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 订单对象 sys_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_order")
+public class SysOrder extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    private String code;
+
+    /**
+     * 所属门店ID
+     */
+    private Long store;
+
+    /**
+     * 所属门店站点
+     */
+    private Long storeSite;
+
+    /**
+     * 下单人
+     */
+    private Long orderPlacer;
+
+    /**
+     * 宠物主
+     */
+    private Long usrCustomer;
+
+    /**
+     * 宠物
+     */
+    private Long usrPet;
+
+    /**
+     * 服务项目
+     */
+    private Long service;
+
+    /**
+     * 团购套餐
+     */
+    private String groupPurchasePackageName;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 下单平台
+     */
+    private Integer platformId;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 150 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrder.java

@@ -0,0 +1,150 @@
+package org.dromara.order.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 子订单对象 sys_sub_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_sub_order")
+public class SysSubOrder extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    private String code;
+
+    /**
+     * 父订单ID
+     */
+    private Long orderId;
+
+    /**
+     * 所属门店ID
+     */
+    private Long store;
+
+    /**
+     * 所属门店站点
+     */
+    private Long storeSite;
+
+    /**
+     * 下单人
+     */
+    private Long orderPlacer;
+
+    /**
+     * 宠物主
+     */
+    private Long usrCustomer;
+
+    /**
+     * 宠物
+     */
+    private Long usrPet;
+
+    /**
+     * 服务项目
+     */
+    private Long service;
+
+    /**
+     * 接送模式(仅接送单有)
+     */
+    private Integer mode;
+
+    /**
+     * 0接/1送(仅接送单有)
+     */
+    private Integer type;
+
+    /**
+     * 联系人
+     */
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    private String contactPhoneNumber;
+
+    /**
+     * 起始服务时间(仅服务单有)
+     */
+    private Date serviceTime;
+
+    /**
+     * 结束服务时间
+     */
+    private Date endServiceTime;
+
+    /**
+     * 起点地址编号(仅接送单有)
+     */
+    private String fromCode;
+
+    /**
+     * 起点详细地址(仅接送单有)
+     */
+    private String fromAddress;
+
+    /**
+     * 终点地址编号
+     */
+    private String toCode;
+
+    /**
+     * 终点详细地址
+     */
+    private String toAddress;
+
+    /**
+     * 价格(分)
+     */
+    private Long price;
+
+    /**
+     * 履约者
+     */
+    private Long fulfiller;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+    private String remark;
+
+    private Integer platformId;
+
+    private String groupPurchasePackageName;
+
+}

+ 77 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrderLog.java

@@ -0,0 +1,77 @@
+package org.dromara.order.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 订单操作日志对象 sys_sub_order_log
+ *
+ * @author Huanyi
+ * @date 2026-03-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_sub_order_log")
+public class SysSubOrderLog extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 子订单ID
+     */
+    private Long subOrderId;
+
+    /**
+     * 操作人
+     */
+    private Long actioner;
+
+    /**
+     * 操作人类型
+     */
+    private Integer actionerType;
+
+    /**
+     * 日志类型
+     */
+    private Integer logType;
+
+    /**
+     * 操作类型
+     */
+    private Integer actionType;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 上传图片
+     */
+    private String photos;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 94 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderBo.java

@@ -0,0 +1,94 @@
+package org.dromara.order.domain.bo;
+
+import org.dromara.order.domain.SysOrder;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 订单业务对象 sys_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SysOrder.class, reverseConvertGenerate = false)
+public class SysOrderBo extends BaseEntity {
+
+    /**
+     * 序号
+     */
+    @NotNull(message = "序号不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @NotBlank(message = "订单号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String code;
+
+    /**
+     * 所属门店ID
+     */
+    @NotNull(message = "所属门店ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long store;
+
+    /**
+     * 所属门店站点
+     */
+    @NotBlank(message = "所属门店站点不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String storeSite;
+
+    /**
+     * 下单人
+     */
+    @NotNull(message = "下单人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long orderPlacer;
+
+    /**
+     * 宠物主
+     */
+    @NotNull(message = "宠物主不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long usrCustomer;
+
+    /**
+     * 宠物
+     */
+    @NotNull(message = "宠物不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long usrPet;
+
+    /**
+     * 服务项目
+     */
+    @NotNull(message = "服务项目不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long service;
+
+    /**
+     * 团购套餐
+     */
+    private String groupPurchasePackageName;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+    /**
+     * 下单平台
+     */
+    @NotNull(message = "下单平台不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer platformId;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+
+}

+ 38 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderCreateBo.java

@@ -0,0 +1,38 @@
+package org.dromara.order.domain.bo;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SysOrderCreateBo {
+
+    @NotNull(message = "必须选择一个门店")
+    private Long store;
+
+    private Long storeSite;
+
+    @NotNull(message = "必须选择一个客户")
+    private Long customer;
+
+    @NotNull(message = "必须选择一个萌宠")
+    private Long pet;
+
+    @NotBlank(message = "请合法输入套餐名")
+    private String groupPurchasePackageName;
+
+    @NotNull(message = "必须选择一个服务")
+    private Long service;
+
+    private String remark;
+
+    @NotBlank(message = "请从正确途径下单")
+    private String tenantId;
+
+    @NotEmpty(message = "请从正确途径下单")
+    private List<SysSubOrderCreateBo> subOrders;
+
+}

+ 10 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAcceptBo.java

@@ -0,0 +1,10 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderAcceptBo {
+
+    private Long orderId;
+
+}

+ 118 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderBo.java

@@ -0,0 +1,118 @@
+package org.dromara.order.domain.bo;
+
+import org.dromara.order.domain.SysSubOrder;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 子订单业务对象 sys_sub_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SysSubOrder.class, reverseConvertGenerate = false)
+public class SysSubOrderBo extends BaseEntity {
+
+    /**
+     * 序号
+     */
+    @NotNull(message = "序号不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @NotBlank(message = "订单号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String code;
+
+    /**
+     * 父订单ID
+     */
+    @NotNull(message = "父订单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long orderId;
+
+    /**
+     * 接送模式(仅接送单有)
+     */
+    private Integer mode;
+
+    /**
+     * 0接/1送(仅接送单有)
+     */
+    private Integer type;
+
+    /**
+     * 联系人
+     */
+    @NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String contactPhoneNumber;
+
+    /**
+     * 起始服务时间(仅服务单有)
+     */
+    @NotNull(message = "起始服务时间(仅服务单有)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date serviceTime;
+
+    /**
+     * 结束服务时间
+     */
+    @NotNull(message = "结束服务时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date endServiceTime;
+
+    /**
+     * 起点地址编号(仅接送单有)
+     */
+    @NotBlank(message = "起点地址编号(仅接送单有)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fromCode;
+
+    /**
+     * 起点详细地址(仅接送单有)
+     */
+    @NotBlank(message = "起点详细地址(仅接送单有)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fromAddress;
+
+    /**
+     * 终点地址编号
+     */
+    @NotBlank(message = "终点地址编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String toCode;
+
+    /**
+     * 终点详细地址
+     */
+    @NotBlank(message = "终点详细地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String toAddress;
+
+    /**
+     * 价格(分)
+     */
+    private Long price;
+
+    /**
+     * 履约者
+     */
+    private Long fulfiller;
+
+    /**
+     * 状态
+     */
+    @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer status;
+
+
+}

+ 10 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCancelBo.java

@@ -0,0 +1,10 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderCancelBo {
+
+    private Long orderId;
+
+}

+ 61 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCreateBo.java

@@ -0,0 +1,61 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SysSubOrderCreateBo {
+
+    /**
+     * 接送模式(仅接送单有)
+     */
+    private Integer mode;
+
+    /**
+     * 0接/1送(仅接送单有)
+     */
+    private Integer type;
+
+    /**
+     * 联系人
+     */
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    private String contactPhoneNumber;
+
+    /**
+     * 起始服务时间(仅服务单有)
+     */
+    private Date serviceTime;
+
+    /**
+     * 结束服务时间
+     */
+    private Date endServiceTime;
+
+    /**
+     * 起点地址编号(仅接送单有)
+     */
+    private String fromCode;
+
+    /**
+     * 起点详细地址(仅接送单有)
+     */
+    private String fromAddress;
+
+    /**
+     * 终点地址编号
+     */
+    private String toCode;
+
+    /**
+     * 终点详细地址
+     */
+    private String toAddress;
+
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderDispatchBo.java

@@ -0,0 +1,14 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderDispatchBo {
+
+    private Long orderId;
+
+    private Long fulfiller;
+
+    private Long price;
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderListPageBo.java

@@ -0,0 +1,14 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderListPageBo {
+
+    private Integer status;
+
+    private Long service;
+
+    private String content;
+
+}

+ 77 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderLogBo.java

@@ -0,0 +1,77 @@
+package org.dromara.order.domain.bo;
+
+import org.dromara.order.domain.SysSubOrderLog;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 订单操作日志业务对象 sys_sub_order_log
+ *
+ * @author Huanyi
+ * @date 2026-03-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SysSubOrderLog.class, reverseConvertGenerate = false)
+public class SysSubOrderLogBo extends BaseEntity {
+
+    /**
+     * 序号
+     */
+    @NotNull(message = "序号不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 子订单ID
+     */
+    @NotNull(message = "子订单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long subOrderId;
+
+    /**
+     * 操作人
+     */
+    @NotNull(message = "操作人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long actioner;
+
+    /**
+     * 操作人类型
+     */
+    @NotNull(message = "操作人类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer actionerType;
+
+    /**
+     * 日志类型
+     */
+    @NotNull(message = "日志类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer logType;
+
+    /**
+     * 操作类型
+     */
+    @NotNull(message = "操作类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer actionType;
+
+    /**
+     * 标题
+     */
+    @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String title;
+
+    /**
+     * 内容
+     */
+    @NotBlank(message = "内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String content;
+
+    /**
+     * 上传图片
+     */
+    private String photos;
+
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderPendingAcceptPageBo.java

@@ -0,0 +1,14 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderPendingAcceptPageBo {
+
+    private Long service;
+
+    private Long minPrice;
+
+    private Long maxPrice;
+
+}

+ 18 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderRemarkBo.java

@@ -0,0 +1,18 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class SysSubOrderRemarkBo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long orderId;
+
+    private String remark;
+
+}

+ 1 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/domain/vo/OrderStatusVo.java → ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/OrderStatusVo.java

@@ -1,4 +1,4 @@
-package org.dromara.domain.vo;
+package org.dromara.order.domain.vo;
 
 import lombok.Data;
 

+ 104 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysOrderVo.java

@@ -0,0 +1,104 @@
+package org.dromara.order.domain.vo;
+
+import org.dromara.order.domain.SysOrder;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 订单视图对象 sys_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SysOrder.class)
+public class SysOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty(value = "序号")
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @ExcelProperty(value = "订单号")
+    private String code;
+
+    /**
+     * 所属门店ID
+     */
+    @ExcelProperty(value = "所属门店ID")
+    private Long store;
+
+    /**
+     * 所属门店站点
+     */
+    @ExcelProperty(value = "所属门店站点")
+    private String storeSite;
+
+    /**
+     * 下单人
+     */
+    @ExcelProperty(value = "下单人")
+    private Long orderPlacer;
+
+    /**
+     * 宠物主
+     */
+    @ExcelProperty(value = "宠物主")
+    private Long usrCustomer;
+
+    /**
+     * 宠物
+     */
+    @ExcelProperty(value = "宠物")
+    private Long usrPet;
+
+    /**
+     * 服务项目
+     */
+    @ExcelProperty(value = "服务项目")
+    private Long service;
+
+    /**
+     * 团购套餐
+     */
+    @ExcelProperty(value = "团购套餐")
+    private String groupPurchasePackageName;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 下单平台
+     */
+    @ExcelProperty(value = "下单平台")
+    private Integer platformId;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private Integer status;
+
+
+}

+ 22 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderCountVo.java

@@ -0,0 +1,22 @@
+package org.dromara.order.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class SysSubOrderCountVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long total;
+
+    private Long reject;
+
+    private Long award;
+
+    private Long punishment;
+
+}

+ 68 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListPageVo.java

@@ -0,0 +1,68 @@
+package org.dromara.order.domain.vo;
+
+import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class SysSubOrderListPageVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String code;
+
+    private Long service;
+
+    private Date serviceTime;
+
+    private String toAddress;
+
+    private Integer mode;
+
+    private Integer type;
+
+    private Long pet;
+
+    private String petName;
+
+    private String petBreed;
+
+    private Long customer;
+
+//    @Translation(type = TransConstant.CUSTOMER_ID_TO_NAME, mapper = "customer")
+    private String customerName;
+
+    private Long site;
+
+    private Long store;
+
+//    @Translation(type = TransConstant.STORE_ID_TO_NAME, mapper = "store")
+    private String storeName;
+
+    private Long placer;
+
+//    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "placer")
+    private String placerUsername;
+
+    private Date createTime;
+
+    private Integer status;
+
+    private Long fulfiller;
+
+    private String fulfillerName;
+
+    private String fulfillerStatus;
+
+    private Long price;
+
+    private String remark;
+
+}

+ 86 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderLogVo.java

@@ -0,0 +1,86 @@
+package org.dromara.order.domain.vo;
+
+import org.dromara.order.domain.SysSubOrderLog;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 订单操作日志视图对象 sys_sub_order_log
+ *
+ * @author Huanyi
+ * @date 2026-03-05
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SysSubOrderLog.class)
+public class SysSubOrderLogVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty(value = "序号")
+    private Long id;
+
+    /**
+     * 子订单ID
+     */
+    @ExcelProperty(value = "子订单ID")
+    private Long subOrderId;
+
+    /**
+     * 操作人
+     */
+    @ExcelProperty(value = "操作人")
+    private Long actioner;
+
+    /**
+     * 操作人类型
+     */
+    @ExcelProperty(value = "操作人类型")
+    private Integer actionerType;
+
+    /**
+     * 日志类型
+     */
+    @ExcelProperty(value = "日志类型")
+    private Integer logType;
+
+    /**
+     * 操作类型
+     */
+    @ExcelProperty(value = "操作类型")
+    private Integer actionType;
+
+    /**
+     * 标题
+     */
+    @ExcelProperty(value = "标题")
+    private String title;
+
+    /**
+     * 内容
+     */
+    @ExcelProperty(value = "内容")
+    private String content;
+
+    /**
+     * 上传图片
+     */
+    @ExcelProperty(value = "上传图片")
+    private String photos;
+
+
+}

+ 53 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderPendingAcceptPageVo.java

@@ -0,0 +1,53 @@
+package org.dromara.order.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class SysSubOrderPendingAcceptPageVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private Long service;
+
+    private Long price;
+
+    private Date serviceTime;
+
+    private Long pet;
+
+    private String petName;
+
+    private String breed;
+
+    private Long store;
+
+    private String storeName;
+
+    private String storeAreaCode;
+
+    private String storeAddress;
+
+    private Long customer;
+
+    private String customerName;
+
+    private String customerPhone;
+
+    private String fromCode;
+
+    private String fromAddress;
+
+    private String toCode;
+
+    private String toAddress;
+
+    private String remark;
+
+}

+ 141 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java

@@ -0,0 +1,141 @@
+package org.dromara.order.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.order.domain.SysSubOrder;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 子订单视图对象 sys_sub_order
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SysSubOrder.class)
+public class SysSubOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty(value = "序号")
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @ExcelProperty(value = "订单号")
+    @Translation(type = TransConstant.ORDER_ID_TO_CODE, mapper = "orderId")
+    private String code;
+
+    /**
+     * 父订单ID
+     */
+    @ExcelProperty(value = "父订单ID")
+    private Long orderId;
+
+    /**
+     * 接送模式(仅接送单有)
+     */
+    @ExcelProperty(value = "接送模式(仅接送单有)")
+    private Integer mode;
+
+    /**
+     * 0接/1送(仅接送单有)
+     */
+    @ExcelProperty(value = "0接/1送(仅接送单有)")
+    private Integer type;
+
+    /**
+     * 联系人
+     */
+    @ExcelProperty(value = "联系人")
+    private String contact;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String contactPhoneNumber;
+
+    /**
+     * 起始服务时间(仅服务单有)
+     */
+    @ExcelProperty(value = "起始服务时间(仅服务单有)")
+    private Date serviceTime;
+
+    /**
+     * 结束服务时间
+     */
+    @ExcelProperty(value = "结束服务时间")
+    private Date endServiceTime;
+
+    /**
+     * 起点地址编号(仅接送单有)
+     */
+    @ExcelProperty(value = "起点地址编号(仅接送单有)")
+    private String fromCode;
+
+    /**
+     * 起点详细地址(仅接送单有)
+     */
+    @ExcelProperty(value = "起点详细地址(仅接送单有)")
+    private String fromAddress;
+
+    /**
+     * 终点地址编号
+     */
+    @ExcelProperty(value = "终点地址编号")
+    private String toCode;
+
+    /**
+     * 终点详细地址
+     */
+    @ExcelProperty(value = "终点详细地址")
+    private String toAddress;
+
+    /**
+     * 价格(分)
+     */
+    @ExcelProperty(value = "价格(分)")
+    private Long price;
+
+    /**
+     * 履约者
+     */
+    @ExcelProperty(value = "履约者")
+    private Long fulfiller;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private Integer status;
+
+    private Integer platformId;
+
+    private Long store;
+
+    @Translation(type = TransConstant.STORE_ID_TO_NAME, mapper = "store")
+    private String storeName;
+
+    private String groupPurchasePackageName;
+
+}

+ 29 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteOrderServiceImpl.java

@@ -0,0 +1,29 @@
+package org.dromara.order.dubbo;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.order.api.RemoteOrderService;
+import org.dromara.order.domain.SysOrder;
+import org.dromara.order.mapper.SysOrderMapper;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@DubboService
+@RequiredArgsConstructor
+public class RemoteOrderServiceImpl implements RemoteOrderService {
+
+    private final SysOrderMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_ORDER_CODE, key = "#id")
+    @Override
+    public String getCodeById(Long id) {
+        return baseMapper.selectOne(
+            Wrappers.lambdaQuery(SysOrder.class)
+                .select(SysOrder::getCode)
+                .eq(SysOrder::getId, id)
+        ).getCode();
+    }
+}

+ 24 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogActionTypeEnum.java

@@ -0,0 +1,24 @@
+package org.dromara.order.enums;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum OrderLogActionTypeEnum {
+
+    CREATE_ORDER(0, "订单创建"),
+    DISPATCH(1, "系统派单"),
+    FULFILLER_RECIEVE(2, "已接单"),
+    RECIEVED(3, "接单成功"),
+    ARRIVE_LOCK_ON(4, "到达打卡"),
+    ARRIVED(5, "到达服务点"),
+    START_SERVICE(6, "开始服务"),
+    FINISH_SERVICE(7, "服务结束"),
+    WAITING_FOR_CONFIRM(8, "待商家确认"),
+    FINISH(9, "订单完成"),
+    ;
+    private final Integer value;
+    private final String label;
+}

+ 17 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogActionerTypeEnum.java

@@ -0,0 +1,17 @@
+package org.dromara.order.enums;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum OrderLogActionerTypeEnum {
+
+    SYS_USER(0, "系统用户"),
+    FULFILLER(1, "履约者"),
+    ;
+    private final Integer value;
+    private final String label;
+
+}

+ 17 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderLogTypeEnum.java

@@ -0,0 +1,17 @@
+package org.dromara.order.enums;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum OrderLogTypeEnum {
+
+    ORDER(0, "订单日志"),
+    FULFILLER(1, "服务进度"),
+    ;
+    private final Integer value;
+    private final String label;
+
+}

+ 1 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/enums/OrderStatusEnum.java → ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderStatusEnum.java

@@ -1,4 +1,4 @@
-package org.dromara.enums;
+package org.dromara.order.enums;
 
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;

+ 19 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderTypeEnum.java

@@ -0,0 +1,19 @@
+package org.dromara.order.enums;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum OrderTypeEnum {
+
+    ROUNDTRIPPING_PICK(0, "往返接送/接"),
+    ROUNDTRIPPING_SEND(1, "往返接送/送"),
+    PICK(2, "单程接(到店)"),
+    SEND(3, "单程送(回家)"),
+    ;
+    private final Integer value;
+    private final String label;
+
+}

+ 15 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysOrderMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.order.mapper;
+
+import org.dromara.order.domain.SysOrder;
+import org.dromara.order.domain.vo.SysOrderVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 订单Mapper接口
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+public interface SysOrderMapper extends BaseMapperPlus<SysOrder, SysOrderVo> {
+
+}

+ 15 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysSubOrderLogMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.order.mapper;
+
+import org.dromara.order.domain.SysSubOrderLog;
+import org.dromara.order.domain.vo.SysSubOrderLogVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 订单操作日志Mapper接口
+ *
+ * @author Huanyi
+ * @date 2026-03-05
+ */
+public interface SysSubOrderLogMapper extends BaseMapperPlus<SysSubOrderLog, SysSubOrderLogVo> {
+
+}

+ 15 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysSubOrderMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.order.mapper;
+
+import org.dromara.order.domain.SysSubOrder;
+import org.dromara.order.domain.vo.SysSubOrderVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 子订单Mapper接口
+ *
+ * @author Huanyi
+ * @date 2026-03-04
+ */
+public interface SysSubOrderMapper extends BaseMapperPlus<SysSubOrder, SysSubOrderVo> {
+
+}

+ 2 - 2
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/service/IOrderStatusService.java → ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/IOrderStatusService.java

@@ -1,6 +1,6 @@
-package org.dromara.service;
+package org.dromara.order.service;
 
-import org.dromara.domain.vo.OrderStatusVo;
+import org.dromara.order.domain.vo.OrderStatusVo;
 
 import java.util.List;
 

+ 7 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysOrderService.java

@@ -0,0 +1,7 @@
+package org.dromara.order.service;
+
+import org.dromara.order.domain.bo.SysOrderCreateBo;
+
+public interface ISysOrderService {
+    boolean create(SysOrderCreateBo bo);
+}

+ 9 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderLogService.java

@@ -0,0 +1,9 @@
+package org.dromara.order.service;
+
+import org.dromara.order.domain.vo.SysSubOrderLogVo;
+
+import java.util.List;
+
+public interface ISysSubOrderLogService {
+    List<SysSubOrderLogVo> list(Long orderId);
+}

+ 29 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java

@@ -0,0 +1,29 @@
+package org.dromara.order.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.order.domain.bo.*;
+import org.dromara.order.domain.vo.SysSubOrderCountVo;
+import org.dromara.order.domain.vo.SysSubOrderListPageVo;
+import org.dromara.order.domain.vo.SysSubOrderPendingAcceptPageVo;
+import org.dromara.order.domain.vo.SysSubOrderVo;
+
+public interface ISysSubOrderService {
+    TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery);
+
+    boolean dispatch(SysSubOrderDispatchBo bo);
+
+    boolean cancel(SysSubOrderCancelBo bo);
+
+    SysSubOrderVo getInfo(Long id);
+
+    TableDataInfo<SysSubOrderListPageVo> listOnMerchant(SysSubOrderListPageBo bo, PageQuery pageQuery);
+
+    TableDataInfo<SysSubOrderPendingAcceptPageVo> listPendingAccept(SysSubOrderPendingAcceptPageBo bo, PageQuery pageQuery);
+
+    boolean accept(SysSubOrderAcceptBo bo);
+
+    boolean remark(SysSubOrderRemarkBo bo);
+
+    SysSubOrderCountVo count();
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor