From 7a19f3141cb06c4cb3a400cb5053fbb5676a0267a88218b6ac0559a3c5bbf761 Mon Sep 17 00:00:00 2001 From: yanglei Date: Mon, 17 Nov 2025 14:35:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AE=A2=E5=8D=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8E=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EbikeRefundServiceImpl.java | 5 +- .../user/controller/EbikeOrderController.java | 24 +++ .../user/model/vo/EbikeUserAllOrdersVo.java | 141 ++++++++++++++++++ .../cdzy/user/service/EbikeOrderService.java | 17 +++ .../user/service/impl/EbikeOrderImpl.java | 45 ++++++ 5 files changed, 228 insertions(+), 4 deletions(-) create mode 100644 ebike-user/src/main/java/com/cdzy/user/model/vo/EbikeUserAllOrdersVo.java diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java index c21f721..6406788 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java @@ -2,7 +2,6 @@ package com.cdzy.payment.service.impl; import com.cdzy.payment.enums.RefundStatus; import com.cdzy.payment.mapper.EbikeRefundMapper; -import com.cdzy.payment.model.dto.EbikeRefundQueryDto; import com.cdzy.payment.model.entity.EbikeRefund; import com.cdzy.payment.service.EbikeRefundService; import com.cdzy.payment.utils.StringUtils; @@ -14,14 +13,12 @@ import com.wechat.pay.java.service.refund.model.Status; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import static com.cdzy.payment.model.entity.table.EbikeRefundTableDef.EBIKE_REFUND; -import static com.cdzy.payment.model.entity.table.EbikeUserTableDef.EBIKE_USER; import static com.mybatisflex.core.constant.FuncName.*; /** @@ -43,7 +40,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl=%s()", ADDTIME, EBIKE_REFUND.CREATE_TIME.getName(), SEC_TO_TIME , duration * 60, NOW); QueryWrapper query = QueryWrapper.create() - .where(String.valueOf(EBIKE_REFUND.REFUND_STATUS), RefundStatus.PROCESSED) + .where(EBIKE_REFUND.REFUND_STATUS.eq(RefundStatus.PROCESSED)) .and(timeFilter); return list(query); } diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeOrderController.java b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeOrderController.java index 91fd156..88d1352 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeOrderController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeOrderController.java @@ -4,6 +4,7 @@ import com.cdzy.common.model.response.JsonResult; import com.cdzy.user.model.dto.EbikeUserCyclingDto; import com.cdzy.user.model.dto.EbikeUserCyclingEndDto; import com.cdzy.user.model.entity.EbikeOrder; +import com.cdzy.user.model.vo.EbikeUserAllOrdersVo; import com.cdzy.user.service.EbikeOrderService; import com.ebike.feign.model.dto.FeignEbikeDto; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; @@ -161,4 +162,27 @@ public class EbikeOrderController { EbikeOrder userOrder = ebikeOrderService.getById(orderId); return JsonResult.success(userOrder); } + + /** + * 根据用户订单表主键获取订单状态。 + * + * @param orderId 用户订单表主键 + */ + @GetMapping("getOrderStatus/{orderId}") + public JsonResult getOrderStatus(@PathVariable("orderId") Long orderId) { + Integer orderStatus = ebikeOrderService.getOrderStatus(orderId); + return JsonResult.success(orderStatus); + } + + /** + * 根据用户订单表主键获取订单状态。 + * + * @param userId 用户订单表主键 + */ + @GetMapping("getUserAllOrder") + public JsonResult getUserAllOrder(@RequestParam("userId") Long userId) { + List userAllOrders = ebikeOrderService.getUserAllOrder(userId); + return JsonResult.success(userAllOrders); + } + } diff --git a/ebike-user/src/main/java/com/cdzy/user/model/vo/EbikeUserAllOrdersVo.java b/ebike-user/src/main/java/com/cdzy/user/model/vo/EbikeUserAllOrdersVo.java new file mode 100644 index 0000000..1bac0a3 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/vo/EbikeUserAllOrdersVo.java @@ -0,0 +1,141 @@ +package com.cdzy.user.model.vo; + +import com.cdzy.user.handler.PGpointDeserializer; +import com.cdzy.user.handler.PGpointSerializer; +import com.cdzy.user.handler.PGpointTypeHandler; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.mybatisflex.annotation.Column; +import lombok.Data; +import org.postgresql.geometric.PGpoint; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 用户所有订单返回实体类 + * + * @author yanglei + * @since 2025-11-17 14:14 + */ +@Data +public class EbikeUserAllOrdersVo { + + + /** + * 订单id + */ + private Long orderId; + + /** + * 运营商ID + */ + private Long operatorId; + + /** + * 车辆编码 + */ + private String bikeCode; + + /** + * 订单类型:1-单次骑行 2-骑行卡购买 3-会员卡续费 + */ + private Integer orderType; + + /** + * 订单状态:0-进行中 1-已取消 2-待支付 3-已支付 4-退款中 5-已退款 + */ + private Integer orderStatus; + + /** + * 订单总金额(单位:元) + */ + private BigDecimal totalAmount; + + /** + * 实付金额(扣除卡券优惠后) + */ + private BigDecimal actualAmount; + + /** + * 骑行开始时间(仅骑行订单有效) + */ + private LocalDateTime startTime; + + /** + * 骑行结束时间(仅骑行订单有效) + */ + private LocalDateTime endTime; + + /** + * 支付成功时间 + */ + private LocalDateTime paymentTime; + + /** + * 支付方式:1-wechat 2-alipay 3-balance + */ + private Integer paymentMethod; + + /** + * 起步费用 + */ + private BigDecimal baseFee; + + /** + * 时长费用 + */ + private BigDecimal durationFee; + + /** + * 免费时长(分钟) + */ + private Integer freeDurationMinutes; + + /** + * 时长(分钟) + */ + private Integer chargeDurationMinutes; + + /** + * 禁停区调度费(元) + */ + private BigDecimal noParkingZoneFee; + + /** + * 停车区外调度费(元) + */ + private BigDecimal outOfParkingAreaFee; + + /** + * 运营区域外调度费(元) + */ + private BigDecimal outOfServiceAreaFee; + + /** + * 封顶金额(元) + */ + private BigDecimal maxFeeAmount; + + /** + * 头盔管理费(元) + */ + private BigDecimal helmetManagementFee; + + /** + * 骑行起始点 + */ + @Column(typeHandler = PGpointTypeHandler.class) + @JsonSerialize(using = PGpointSerializer.class) + @JsonDeserialize(using = PGpointDeserializer.class) + private PGpoint startLocation; + + /** + * 骑行结束点 + */ + @Column(typeHandler = PGpointTypeHandler.class) + @JsonSerialize(using = PGpointSerializer.class) + @JsonDeserialize(using = PGpointDeserializer.class) + private PGpoint endLocation; + +} diff --git a/ebike-user/src/main/java/com/cdzy/user/service/EbikeOrderService.java b/ebike-user/src/main/java/com/cdzy/user/service/EbikeOrderService.java index 4e1c8b1..5ac4fa9 100644 --- a/ebike-user/src/main/java/com/cdzy/user/service/EbikeOrderService.java +++ b/ebike-user/src/main/java/com/cdzy/user/service/EbikeOrderService.java @@ -3,6 +3,7 @@ package com.cdzy.user.service; import com.cdzy.user.model.dto.EbikeUserCyclingDto; import com.cdzy.user.model.dto.EbikeUserCyclingEndDto; import com.cdzy.user.model.entity.EbikeOrder; +import com.cdzy.user.model.vo.EbikeUserAllOrdersVo; import com.ebike.feign.model.dto.FeignEbikeDto; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; import com.ebike.feign.model.dto.FeignOrderPaymentDto; @@ -100,4 +101,20 @@ public interface EbikeOrderService extends IService { * @return 订单id */ Long doneRide(EbikeUserCyclingEndDto endDto); + + /** + * 根据订单Id查询订单状态 + * + * @param orderId 订单ID + * @return 订单状态 + */ + Integer getOrderStatus(Long orderId); + + /** + * 根据用户id获取用户所有订单 + * + * @param userId 用户id + * @return 用户订单 + */ + List getUserAllOrder(Long userId); } diff --git a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java index c29f4a8..0aa5570 100644 --- a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java +++ b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java @@ -11,6 +11,7 @@ import com.cdzy.user.model.dto.EbikeUserCyclingEndDto; import com.cdzy.user.model.entity.EbikeOrder; import com.cdzy.user.model.entity.EbikeOrderDetail; import com.cdzy.user.model.entity.EbikePayment; +import com.cdzy.user.model.vo.EbikeUserAllOrdersVo; import com.cdzy.user.service.EbikeOrderDetailService; import com.cdzy.user.service.EbikeOrderService; import com.cdzy.user.service.EbikePaymentService; @@ -244,6 +245,50 @@ public class EbikeOrderImpl extends ServiceImpl im return order.getOrderId(); } + @Override + public Integer getOrderStatus(Long orderId) { + QueryWrapper queryWrapper = QueryWrapper.create() + .select(EBIKE_ORDER.ORDER_STATUS) + .where(EBIKE_ORDER.ORDER_ID.eq(orderId)); + EbikeOrder ebikeOrder = this.mapper.selectOneByQuery(queryWrapper); + if (Objects.isNull(ebikeOrder)) { + throw new EbikeException("订单不存在"); + } + return ebikeOrder.getOrderStatus(); + } + + @Override + public List getUserAllOrder(Long userId) { + QueryWrapper queryWrapper = QueryWrapper.create() + .select( + EBIKE_ORDER.ORDER_ID, + EBIKE_ORDER.OPERATOR_ID, + EBIKE_ORDER.BIKE_CODE, + EBIKE_ORDER.ORDER_TYPE, + EBIKE_ORDER.ORDER_STATUS, + EBIKE_ORDER.TOTAL_AMOUNT, + EBIKE_ORDER.ACTUAL_AMOUNT, + EBIKE_ORDER.START_TIME, + EBIKE_ORDER.END_TIME, + EBIKE_ORDER.PAYMENT_TIME, + EBIKE_ORDER.PAYMENT_METHOD, + EBIKE_ORDER.BASE_FEE, + EBIKE_ORDER.DURATION_FEE, + EBIKE_ORDER.FREE_DURATION_MINUTES, + EBIKE_ORDER.CHARGE_DURATION_MINUTES, + EBIKE_ORDER.NO_PARKING_ZONE_FEE, + EBIKE_ORDER.OUT_OF_PARKING_AREA_FEE, + EBIKE_ORDER.OUT_OF_SERVICE_AREA_FEE, + EBIKE_ORDER.MAX_FEE_AMOUNT, + EBIKE_ORDER.HELMET_MANAGEMENT_FEE, + EBIKE_ORDER.START_LOCATION, + EBIKE_ORDER.END_LOCATION + ) + .where(EBIKE_ORDER.USER_ID.eq(userId)) + .orderBy(EBIKE_ORDER.CREATE_TIME.desc()); + return this.mapper.selectListByQueryAs(queryWrapper, EbikeUserAllOrdersVo.class); + } + private List buildOrderDetails(EbikeOrder order) { List details = new ArrayList<>();