From 53444853de7d4c7127b4dd28fa121d1039b7aee6 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 13 Apr 2026 17:58:34 +0800 Subject: [PATCH] 11 --- .../api/dto/app/HardCarSaveOrUpdateDto.java | 5 +- .../dto/order/app/HardAppCreateOrderDto.java | 2 +- .../app/HardAppCreateTakeOutOrderDto.java | 2 +- .../hard/api/entity/order/HardCarEntity.java | 1 + .../api/entity/order/HardParentCarEntity.java | 131 +++++++++++------- .../controller/order/HardCarController.java | 9 ++ .../controller/order/HardOrderController.java | 1 - .../impl/order/HardCarServiceImpl.java | 8 +- .../impl/order/HardOrderServiceImpl.java | 18 ++- .../impl/order/HardOrderSyncServiceImpl.java | 2 - 10 files changed, 113 insertions(+), 66 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardCarSaveOrUpdateDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardCarSaveOrUpdateDto.java index d2ac73f71..bc267c601 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardCarSaveOrUpdateDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardCarSaveOrUpdateDto.java @@ -3,8 +3,8 @@ package com.bsd.pjcloud.hard.api.dto.app; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; +import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; @@ -38,4 +38,7 @@ public class HardCarSaveOrUpdateDto { @Schema(description = "订单类型渠道id") private Long orderSourceTypeId; + + @Schema(description = "外卖配置") + private HardParentCarEntity.TakeOutSetting takeOutSetting; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java index 4e14ce098..61eaa5cb3 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java @@ -39,7 +39,7 @@ public class HardAppCreateOrderDto { private Integer customPrice; // 配送价格(分) - private Integer deliveryPrice; + // private Integer deliveryPrice; // 商户id private Long merchantId; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java index 07d64ae4e..f90fbb98c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java @@ -16,7 +16,7 @@ public class HardAppCreateTakeOutOrderDto { /** * 配送价格(分) */ - private Integer deliveryPrice; + // private Integer deliveryPrice; /** * 外卖地址 diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardCarEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardCarEntity.java index 36395897c..4f2637288 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardCarEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardCarEntity.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.api.entity.order; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardParentCarEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardParentCarEntity.java index 00ee26a2d..32ac9f731 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardParentCarEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardParentCarEntity.java @@ -2,9 +2,11 @@ package com.bsd.pjcloud.hard.api.entity.order; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** @@ -18,83 +20,108 @@ import java.time.LocalDateTime; @NoArgsConstructor @Data @TenantTable -@TableName("hard_parent_car") +@TableName(value = "hard_parent_car", autoResultMap = true) @EqualsAndHashCode(callSuper = true) @Schema(description = "父订单表") public class HardParentCarEntity extends Model { - /** - * 标号 - */ + /** + * 标号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="标号") + @Schema(description = "标号") private Long id; - /** - * 用户id - */ - @Schema(description="用户id") + /** + * 用户id + */ + @Schema(description = "用户id") private Long userId; - /** - * 商户id - */ - @Schema(description="商户id") + /** + * 商户id + */ + @Schema(description = "商户id") private Long merchantId; - /** - * 硬件设备类型 - */ - @Schema(description="硬件设备类型") - private String hardType; + /** + * 硬件设备类型 + */ + @Schema(description = "硬件设备类型") + private String hardType; - - /** - * 订单状态 - */ - @Schema(description="订单状态") + /** + * 订单状态 + */ + @Schema(description = "订单状态") private String orderStatus; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * 外卖配置json + */ + @Schema(description = "外卖配置json") + @TableField(typeHandler = JacksonTypeHandler.class) + private TakeOutSetting takeOutSettingJson; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; + + @Data + public static class TakeOutSetting { + /** + * 起送价格(分) + */ + private Integer minDeliveryAmt; + + /** + * 商家配送费(分) + */ + private Integer mchTakeOutAmt; + + /** + * 用户配送费(分) + */ + private Integer userTakeOutAmt; + } + } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java index 3c9263f94..02121cc52 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java @@ -17,10 +17,12 @@ import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.service.HardAfterSaleCarService; import com.bsd.pjcloud.hard.service.HardCarService; import com.bsd.pjcloud.hard.service.HardOrderService; +import com.bsd.pjcloud.hard.service.HardParentCarService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -47,10 +49,17 @@ import java.util.List; public class HardCarController { private final HardCarService hardCarService; + private final HardParentCarService hardParentCarService; private final HardOrderService hardOrderService; private final HardAfterSaleCarService hardAfterSaleCarService; /* ************************************* start app start ************************************* */ + @GetMapping("/app/parent-car") + @Operation(summary = "查询父亲购物车") + public R appGetParentCar(@RequestParam Long id) { + return R.ok(hardParentCarService.getById(id)); + } + @GetMapping("/app/mch-detail") @Operation(summary = "根据商户id查询当前用户购物车") public R> appMchDetail(@RequestParam Long merchantId, @RequestParam HardTypeEnum hardType) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index a7b249470..d486cd2e9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -239,7 +239,6 @@ public class HardOrderController { .payType(HardPayTypeEnum.WALLET_DEFAULT) .apptId(null) .address(dto.getAddress()) - .deliveryPrice(dto.getDeliveryPrice()) .appt(dto.getAppt()) .build(); return R.ok(hardwareOrderService.appCreateTakeOutOrder(createOrderDto)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java index 10da93fd7..169e2205a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java @@ -138,10 +138,16 @@ public class HardCarServiceImpl extends ServiceImpl carList = hardCarService.getByParentCarId(dto.getCarParentId()); - if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("购物车不存在"); - + if (ObjectUtil.isEmpty(carList)) { + throw new RuntimeException("购物车不存在"); + } Integer balance = wallet.getBalance(); int carPrice = (int) carList.stream().mapToLong(HardCarEntity::getTotalPrice).sum(); int totalPrice = carPrice; + int deliveryPrice = 0; // 增加配送费 - if (ObjectUtil.isNotEmpty(dto.getDeliveryPrice())) { - totalPrice += dto.getDeliveryPrice(); + if (ObjectUtil.isNotEmpty(parentCar.getTakeOutSettingJson()) && ObjectUtil.isNotEmpty(parentCar.getTakeOutSettingJson().getUserTakeOutAmt())) { + HardParentCarEntity.TakeOutSetting takeOutSetting = parentCar.getTakeOutSettingJson(); + deliveryPrice = takeOutSetting.getUserTakeOutAmt(); + totalPrice += deliveryPrice; } if (balance < totalPrice) { throw new RuntimeException("钱包余额不足"); @@ -674,7 +678,7 @@ public class HardOrderServiceImpl extends ServiceImpl