Jelajahi Sumber

下单基本完成

Huanyi 1 bulan lalu
induk
melakukan
3f28f2ee50
30 mengubah file dengan 1007 tambahan dan 16 penghapusan
  1. 0 4
      ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java
  2. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysStoreListOnOrderVo.java
  3. 1 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java
  4. 21 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrCustomerController.java
  5. 13 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrPetController.java
  6. 24 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrCustomerOnOrderVo.java
  7. 20 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/vo/UsrPetOnOrderVo.java
  8. 2 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/IUsrCustomerService.java
  9. 27 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java
  10. 3 3
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/OrderStatusController.java
  11. 25 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysOrderController.java
  12. 92 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysOrder.java
  13. 116 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrder.java
  14. 94 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderBo.java
  15. 28 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderCreateBo.java
  16. 118 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderBo.java
  17. 61 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCreateBo.java
  18. 1 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/OrderStatusVo.java
  19. 104 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysOrderVo.java
  20. 130 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java
  21. 1 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/enums/OrderStatusEnum.java
  22. 15 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysOrderMapper.java
  23. 15 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysSubOrderMapper.java
  24. 2 2
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/IOrderStatusService.java
  25. 7 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysOrderService.java
  26. 4 4
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/IOrderStatusServiceImpl.java
  27. 75 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysOrderServiceImpl.java
  28. 5 0
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/domain/vo/SysServiceOnOrderVo.java
  29. 1 0
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceServiceImpl.java
  30. 0 1
      script/sql/business/create.sql

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

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

+ 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;
+
 }

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

@@ -280,6 +280,7 @@ public class SysStoreServiceImpl implements ISysStoreService {
             vo.setSite(e.getSite());
             vo.setAreaCode(e.getAreaCode());
             vo.setAddress(e.getDetailAddress());
+            vo.setTenantId(e.getTenantId());
             return vo;
         }));
     }

+ 21 - 0
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;
@@ -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 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/controller/UsrPetController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.archieves.domain.vo.UsrPetOnOrderVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -88,6 +89,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 +118,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));
+    }
+
 }

+ 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 Integer type;
+
+}

+ 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);
 }

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

@@ -1,5 +1,6 @@
 package org.dromara.archieves.service.impl;
 
+import org.dromara.archieves.domain.vo.UsrCustomerOnOrderVo;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -132,6 +133,32 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
         return baseMapper.updateById(update) > 0;
     }
 
+    @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;
+        }));
+
+    }
+
     /**
      * 查询目标关联的标签列表
      */

+ 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;

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

@@ -0,0 +1,25 @@
+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.bo.SysOrderCreateBo;
+import org.dromara.order.service.ISysOrderService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/order")
+@RequiredArgsConstructor
+public class SysOrderController extends BaseController {
+
+    private final ISysOrderService orderService;
+
+    @PostMapping("/create")
+    public R<Void> create(@RequestBody SysOrderCreateBo bo) {
+        return toAjax(orderService.create(bo));
+    }
+
+}

+ 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;
+
+
+}

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

@@ -0,0 +1,116 @@
+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;
+
+    /**
+     * 接送模式(仅接送单有)
+     */
+    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;
+
+}

+ 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;
+
+
+}

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

@@ -0,0 +1,28 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SysOrderCreateBo {
+
+    private Long store;
+
+    private Long storeSite;
+
+    private Long customer;
+
+    private Long pet;
+
+    private String groupPurchasePackageName;
+
+    private Long service;
+
+    private String remark;
+
+    private String tenantId;
+
+    private List<SysSubOrderCreateBo> subOrders;
+
+}

+ 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;
+
+
+}

+ 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;
+
+
+}

+ 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;
+
+
+}

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

@@ -0,0 +1,130 @@
+package org.dromara.order.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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 = "订单号")
+    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;
+
+
+}

+ 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;

+ 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/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);
+}

+ 4 - 4
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/service/impl/IOrderStatusServiceImpl.java → ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/IOrderStatusServiceImpl.java

@@ -1,8 +1,8 @@
-package org.dromara.service.impl;
+package org.dromara.order.service.impl;
 
-import org.dromara.domain.vo.OrderStatusVo;
-import org.dromara.enums.OrderStatusEnum;
-import org.dromara.service.IOrderStatusService;
+import org.dromara.order.domain.vo.OrderStatusVo;
+import org.dromara.order.enums.OrderStatusEnum;
+import org.dromara.order.service.IOrderStatusService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 75 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysOrderServiceImpl.java

@@ -0,0 +1,75 @@
+package org.dromara.order.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.mybatis.utils.IdGeneratorUtil;
+import org.dromara.common.platform.PlatformUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.order.domain.SysOrder;
+import org.dromara.order.domain.SysSubOrder;
+import org.dromara.order.domain.bo.SysOrderCreateBo;
+import org.dromara.order.mapper.SysOrderMapper;
+import org.dromara.order.mapper.SysSubOrderMapper;
+import org.dromara.order.service.ISysOrderService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class SysOrderServiceImpl implements ISysOrderService {
+
+    private final SysOrderMapper baseMapper;
+    private final SysSubOrderMapper subOrderMapper;
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean create(SysOrderCreateBo bo) {
+
+        SysOrder order = new SysOrder();
+        order.setCode(IdGeneratorUtil.nextUUID().replaceAll("-", ""));
+        order.setStore(bo.getStore());
+        order.setStoreSite(bo.getStoreSite());
+        order.setOrderPlacer(LoginHelper.getUserId());
+        order.setUsrCustomer(bo.getCustomer());
+        order.setUsrPet(bo.getPet());
+        order.setService(bo.getService());
+        order.setGroupPurchasePackageName(bo.getGroupPurchasePackageName());
+        order.setRemark(bo.getRemark());
+        order.setTenantId(bo.getTenantId());
+        order.setPlatformId(PlatformUtils.getId());
+        boolean flag = baseMapper.insert(order) == 0;
+        if (flag) {
+            throw new RuntimeException("订单插入失败");
+        }
+
+        List<SysSubOrder> subOrders = new ArrayList<>();
+        bo.getSubOrders().forEach(e -> {
+            SysSubOrder subOrder = new SysSubOrder();
+            subOrder.setCode(IdGeneratorUtil.nextUUID().replaceAll("-", ""));
+            subOrder.setOrderId(order.getId());
+            subOrder.setMode(e.getMode());
+            subOrder.setType(e.getType());
+            subOrder.setContact(e.getContact());
+            subOrder.setContactPhoneNumber(e.getContactPhoneNumber());
+            subOrder.setServiceTime(e.getServiceTime());
+            subOrder.setEndServiceTime(e.getEndServiceTime());
+            subOrder.setFromCode(e.getFromCode());
+            subOrder.setFromAddress(e.getFromAddress());
+            subOrder.setToCode(e.getToCode());
+            subOrder.setToAddress(e.getToAddress());
+            subOrder.setRemark(order.getRemark());
+            subOrder.setTenantId(order.getTenantId());
+            subOrders.add(subOrder);
+        });
+        boolean subFlag = subOrderMapper.insertBatch(subOrders);
+        if (!subFlag) {
+            throw new RuntimeException("批量生成子订单失败");
+        }
+
+//        return true;
+        throw new ServiceException("成功");
+    }
+}

+ 5 - 0
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/domain/vo/SysServiceOnOrderVo.java

@@ -1,6 +1,8 @@
 package org.dromara.service.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;
@@ -19,4 +21,7 @@ public class SysServiceOnOrderVo implements Serializable {
 
     private Integer mode;
 
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "icon")
+    private Long icon;
+
 }

+ 1 - 0
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceServiceImpl.java

@@ -149,6 +149,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
             vo.setName(e.getName());
             vo.setRemark(e.getRemark());
             vo.setMode(e.getMode());
+            vo.setIcon(e.getIcon());
             return vo;
         }).toList();
     }

+ 0 - 1
script/sql/business/create.sql

@@ -128,7 +128,6 @@ CREATE TABLE `pet_system`.`sys_order`
 
     # 客户以及宠物等信息
     `usr_customer`                bigint             NOT NULL COMMENT '宠物主',
-    `usr_customer_phone_number`   varchar(32)        NOT NULL COMMENT '宠物主电话',
     `usr_pet`                     bigint             NOT NULL COMMENT '宠物',
 
     # 其它信息