From 65966c16e5eee4ef45b67b73066617948e611392 Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Thu, 7 Aug 2025 21:37:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=87=8C=E9=9D=A2=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=BD=A6=E8=BE=86=E5=9B=BE=E7=89=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/OrderCarImgTypeEnum.java | 20 +++++++ .../com/sczx/order/dto/BindCarToOrderReq.java | 5 ++ .../java/com/sczx/order/dto/OrderDTO.java | 3 + .../com/sczx/order/dto/OrderDetailDTO.java | 4 ++ .../java/com/sczx/order/dto/ReturnCarReq.java | 5 ++ .../sczx/order/mapper/OrderCarImgMapper.java | 16 ++++++ .../java/com/sczx/order/po/OrderCarImgPO.java | 56 +++++++++++++++++++ .../order/repository/OrderCarImgRepo.java | 16 ++++++ .../repository/impl/OrderCarImgRepoImpl.java | 20 +++++++ .../order/service/impl/OrderServiceImpl.java | 55 +++++++++++++++++- .../resources/mapper/OrderCarImgMapper.xml | 5 ++ 11 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/sczx/order/common/enums/OrderCarImgTypeEnum.java create mode 100644 src/main/java/com/sczx/order/mapper/OrderCarImgMapper.java create mode 100644 src/main/java/com/sczx/order/po/OrderCarImgPO.java create mode 100644 src/main/java/com/sczx/order/repository/OrderCarImgRepo.java create mode 100644 src/main/java/com/sczx/order/repository/impl/OrderCarImgRepoImpl.java create mode 100644 src/main/resources/mapper/OrderCarImgMapper.xml diff --git a/src/main/java/com/sczx/order/common/enums/OrderCarImgTypeEnum.java b/src/main/java/com/sczx/order/common/enums/OrderCarImgTypeEnum.java new file mode 100644 index 0000000..87c845d --- /dev/null +++ b/src/main/java/com/sczx/order/common/enums/OrderCarImgTypeEnum.java @@ -0,0 +1,20 @@ +package com.sczx.order.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: 张黎 + * @Date: 2024/03/08/17:42 + * @Description: 订单图片类型 + */ +@AllArgsConstructor +@Getter +public enum OrderCarImgTypeEnum { + RENT("RENT", "租车"), + RETURN("RETURN", "还车"), + ; + private final String code; + + private final String msg; +} diff --git a/src/main/java/com/sczx/order/dto/BindCarToOrderReq.java b/src/main/java/com/sczx/order/dto/BindCarToOrderReq.java index ebaa9e4..9d5d944 100644 --- a/src/main/java/com/sczx/order/dto/BindCarToOrderReq.java +++ b/src/main/java/com/sczx/order/dto/BindCarToOrderReq.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; +import java.util.List; + @Builder @ApiModel(value = "绑定车辆到订单请求参数") @@ -16,4 +18,7 @@ public class BindCarToOrderReq { @ApiModelProperty(value = "车辆编号") private String vin; + + @ApiModelProperty(value = "车辆照片") + private List imageList; } diff --git a/src/main/java/com/sczx/order/dto/OrderDTO.java b/src/main/java/com/sczx/order/dto/OrderDTO.java index 9e03386..af9d7e6 100644 --- a/src/main/java/com/sczx/order/dto/OrderDTO.java +++ b/src/main/java/com/sczx/order/dto/OrderDTO.java @@ -142,4 +142,7 @@ public class OrderDTO { @ApiModelProperty("租车子订单信息") private List orderSubDTOList; + + @ApiModelProperty("订单车辆图片") + private List orderCarImgList; } diff --git a/src/main/java/com/sczx/order/dto/OrderDetailDTO.java b/src/main/java/com/sczx/order/dto/OrderDetailDTO.java index ed2bcd3..4a2a4a6 100644 --- a/src/main/java/com/sczx/order/dto/OrderDetailDTO.java +++ b/src/main/java/com/sczx/order/dto/OrderDetailDTO.java @@ -7,6 +7,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; @ApiModel(value = "订单详情dto", description = "租车订单详情信息") @Data @@ -131,4 +132,7 @@ public class OrderDetailDTO { @ApiModelProperty("充电次数") private Integer chargeTimes; + + @ApiModelProperty("订单车辆图片") + private List orderCarImgList; } diff --git a/src/main/java/com/sczx/order/dto/ReturnCarReq.java b/src/main/java/com/sczx/order/dto/ReturnCarReq.java index 95183e9..d9b7bca 100644 --- a/src/main/java/com/sczx/order/dto/ReturnCarReq.java +++ b/src/main/java/com/sczx/order/dto/ReturnCarReq.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel(value = "还车请求参数") public class ReturnCarReq { @@ -11,4 +13,7 @@ public class ReturnCarReq { @ApiModelProperty(value = "订单编号") private String orderNo; + @ApiModelProperty(value = "车辆照片") + private List imageList; + } diff --git a/src/main/java/com/sczx/order/mapper/OrderCarImgMapper.java b/src/main/java/com/sczx/order/mapper/OrderCarImgMapper.java new file mode 100644 index 0000000..57e20e9 --- /dev/null +++ b/src/main/java/com/sczx/order/mapper/OrderCarImgMapper.java @@ -0,0 +1,16 @@ +package com.sczx.order.mapper; + +import com.sczx.order.po.OrderCarImgPO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 订单租车车辆图片信息 Mapper 接口 + *

+ * + * @author zhangli + * @since 2025-08-07 21:15:07 + */ +public interface OrderCarImgMapper extends BaseMapper { + +} diff --git a/src/main/java/com/sczx/order/po/OrderCarImgPO.java b/src/main/java/com/sczx/order/po/OrderCarImgPO.java new file mode 100644 index 0000000..7317cef --- /dev/null +++ b/src/main/java/com/sczx/order/po/OrderCarImgPO.java @@ -0,0 +1,56 @@ +package com.sczx.order.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 订单租车车辆图片信息 + *

+ * + * @author zhangli + * @since 2025-08-07 21:15:07 + */ +@Getter +@Setter +@TableName("zc_order_car_img") +@ApiModel(value = "OrderCarImgPO对象", description = "订单租车车辆图片信息") +public class OrderCarImgPO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("订单ID(外键)") + private Long orderId; + + @ApiModelProperty("订单编号") + private String orderNo; + + @ApiModelProperty("图片类型:RENT租车,RETURN还车") + private String imgType; + + @ApiModelProperty("图片地址") + private String imgUrl; + + @ApiModelProperty("删除标志(0代表存在 2代表删除)") + private String delFlag; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/sczx/order/repository/OrderCarImgRepo.java b/src/main/java/com/sczx/order/repository/OrderCarImgRepo.java new file mode 100644 index 0000000..7aa606a --- /dev/null +++ b/src/main/java/com/sczx/order/repository/OrderCarImgRepo.java @@ -0,0 +1,16 @@ +package com.sczx.order.repository; + +import com.sczx.order.po.OrderCarImgPO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 订单租车车辆图片信息 服务类 + *

+ * + * @author zhangli + * @since 2025-08-07 21:15:07 + */ +public interface OrderCarImgRepo extends IService { + +} diff --git a/src/main/java/com/sczx/order/repository/impl/OrderCarImgRepoImpl.java b/src/main/java/com/sczx/order/repository/impl/OrderCarImgRepoImpl.java new file mode 100644 index 0000000..f803795 --- /dev/null +++ b/src/main/java/com/sczx/order/repository/impl/OrderCarImgRepoImpl.java @@ -0,0 +1,20 @@ +package com.sczx.order.repository.impl; + +import com.sczx.order.po.OrderCarImgPO; +import com.sczx.order.mapper.OrderCarImgMapper; +import com.sczx.order.repository.OrderCarImgRepo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 订单租车车辆图片信息 服务实现类 + *

+ * + * @author zhangli + * @since 2025-08-07 21:15:07 + */ +@Service +public class OrderCarImgRepoImpl extends ServiceImpl implements OrderCarImgRepo { + +} diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index a3b34b2..71c9069 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -10,8 +10,10 @@ import com.sczx.order.convert.OrderSubConvert; import com.sczx.order.dto.*; import com.sczx.order.exception.BizException; import com.sczx.order.exception.InnerException; +import com.sczx.order.po.OrderCarImgPO; import com.sczx.order.po.OrderMainPO; import com.sczx.order.po.OrderSubPO; +import com.sczx.order.repository.OrderCarImgRepo; import com.sczx.order.repository.OrderMainRepo; import com.sczx.order.repository.OrderSubRepo; import com.sczx.order.service.OrderService; @@ -27,6 +29,7 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -58,6 +61,9 @@ public class OrderServiceImpl implements OrderService { @Autowired private RedisUtil redisUtil; + @Autowired + private OrderCarImgRepo orderCarImgRepo; + @Transactional(rollbackFor = Exception.class) @Override public RentCarOrderResultDTO submitRentCarOrder(RentCarOrderReq rentCarOrderReq) { @@ -213,6 +219,14 @@ public class OrderServiceImpl implements OrderService { List orderSubPOList = orderSubRepo.list(orderSubLambdaQueryWrapper); List orderSubDTOList = OrderSubConvert.INSTANCE.posToDtos(orderSubPOList); orderDTO.setOrderSubDTOList(orderSubDTOList); + + //查询订单车辆图片 + List orderCarImgPOList = orderCarImgRepo.list(new LambdaQueryWrapper().eq(OrderCarImgPO::getOrderId, orderDetailDTO.getOrderId())); + if(!CollectionUtils.isEmpty(orderCarImgPOList)){ + List orderCarImgList = orderCarImgPOList.stream().map(OrderCarImgPO::getImgUrl).collect(Collectors.toList()); + orderDTO.setOrderCarImgList(orderCarImgList); + } + return orderDTO; } @@ -247,8 +261,12 @@ public class OrderServiceImpl implements OrderService { SysDictDataDTO rentCarBatteyDictDataDTO = storeInteg.getDictDataByDicTypeAndValue("key_rental_type", orderDetailDTO.getDurationType().toString()); orderDetailDTO.setDurationTypeLabel(Optional.ofNullable(rentCarBatteyDictDataDTO).map(SysDictDataDTO::getDictLabel).orElse(null)); } - - + //查询订单车辆图片 + List orderCarImgPOList = orderCarImgRepo.list(new LambdaQueryWrapper().eq(OrderCarImgPO::getOrderId, orderDetailDTO.getOrderId())); + if(!CollectionUtils.isEmpty(orderCarImgPOList)){ + List orderCarImgList = orderCarImgPOList.stream().map(OrderCarImgPO::getImgUrl).collect(Collectors.toList()); + orderDetailDTO.setOrderCarImgList(orderCarImgList); + } return orderDetailDTO; } @@ -309,6 +327,22 @@ public class OrderServiceImpl implements OrderService { updateWrapper.set(OrderMainPO::getVehicleId, carDTO.getId()); updateWrapper.eq(OrderMainPO::getOrderNo, bindCarToOrderReq.getOrderNo()); orderMainRepo.update(updateWrapper); + + if(!CollectionUtils.isEmpty(bindCarToOrderReq.getImageList())){ + //添加车辆图片 + List carImagePOList = new ArrayList<>(); + for(String image:bindCarToOrderReq.getImageList()){ + OrderCarImgPO imgPO = new OrderCarImgPO(); + imgPO.setOrderId(orderMainPO.getOrderId()); + imgPO.setOrderNo(orderMainPO.getOrderNo()); + imgPO.setImgType(OrderCarImgTypeEnum.RENT.getCode()); + imgPO.setImgUrl(image); + carImagePOList.add(imgPO); + } + orderCarImgRepo.saveBatch(carImagePOList); + } + + //TODO 变更车辆状态 return getOrderInfoByOrderNo(bindCarToOrderReq.getOrderNo()); @@ -321,7 +355,21 @@ public class OrderServiceImpl implements OrderService { updateWrapper.set(OrderMainPO::getReqEndRentTime, LocalDateTime.now()); updateWrapper.eq(OrderMainPO::getOrderNo, returnCarReq.getOrderNo()); orderMainRepo.update(updateWrapper); - return getOrderInfoByOrderNo(returnCarReq.getOrderNo()); + OrderDTO orderDTO = getOrderInfoByOrderNo(returnCarReq.getOrderNo()); + if(!CollectionUtils.isEmpty(returnCarReq.getImageList())){ + //添加车辆图片 + List carImagePOList = new ArrayList<>(); + for(String image:returnCarReq.getImageList()){ + OrderCarImgPO imgPO = new OrderCarImgPO(); + imgPO.setOrderId(orderDTO.getOrderId()); + imgPO.setOrderNo(orderDTO.getOrderNo()); + imgPO.setImgType(OrderCarImgTypeEnum.RETURN.getCode()); + imgPO.setImgUrl(image); + carImagePOList.add(imgPO); + } + orderCarImgRepo.saveBatch(carImagePOList); + } + return orderDTO; } @Override @@ -341,6 +389,7 @@ public class OrderServiceImpl implements OrderService { return orderMainRepo.storeOrderStatistics(storeId); } + @Override public IPage pageCustOrder(Integer pageNo, Integer pageSize, OrderQueryReq orderQueryReq) { orderQueryReq.setCustomerId(Long.valueOf(jwtUtil.getUserInfoFromToken().getUserId().toString())); List orderStatusList = orderQueryReq.getOrderStatusList().stream().map(OrderStatusEnum::getCode).collect(Collectors.toList()); diff --git a/src/main/resources/mapper/OrderCarImgMapper.xml b/src/main/resources/mapper/OrderCarImgMapper.xml new file mode 100644 index 0000000..6af1ceb --- /dev/null +++ b/src/main/resources/mapper/OrderCarImgMapper.xml @@ -0,0 +1,5 @@ + + + + +