查询订单状态与获取用户所有订单

This commit is contained in:
yanglei 2025-11-17 14:35:22 +08:00
parent 2d072b01ff
commit 7a19f3141c
5 changed files with 228 additions and 4 deletions

View File

@ -2,7 +2,6 @@ package com.cdzy.payment.service.impl;
import com.cdzy.payment.enums.RefundStatus; import com.cdzy.payment.enums.RefundStatus;
import com.cdzy.payment.mapper.EbikeRefundMapper; import com.cdzy.payment.mapper.EbikeRefundMapper;
import com.cdzy.payment.model.dto.EbikeRefundQueryDto;
import com.cdzy.payment.model.entity.EbikeRefund; import com.cdzy.payment.model.entity.EbikeRefund;
import com.cdzy.payment.service.EbikeRefundService; import com.cdzy.payment.service.EbikeRefundService;
import com.cdzy.payment.utils.StringUtils; import com.cdzy.payment.utils.StringUtils;
@ -14,14 +13,12 @@ import com.wechat.pay.java.service.refund.model.Status;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.List; import java.util.List;
import static com.cdzy.payment.model.entity.table.EbikeRefundTableDef.EBIKE_REFUND; 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.*; import static com.mybatisflex.core.constant.FuncName.*;
/** /**
@ -43,7 +40,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
String timeFilter = String.format("%s(%s, %s(%s))>=%s()", ADDTIME, EBIKE_REFUND.CREATE_TIME.getName(), SEC_TO_TIME String timeFilter = String.format("%s(%s, %s(%s))>=%s()", ADDTIME, EBIKE_REFUND.CREATE_TIME.getName(), SEC_TO_TIME
, duration * 60, NOW); , duration * 60, NOW);
QueryWrapper query = QueryWrapper.create() QueryWrapper query = QueryWrapper.create()
.where(String.valueOf(EBIKE_REFUND.REFUND_STATUS), RefundStatus.PROCESSED) .where(EBIKE_REFUND.REFUND_STATUS.eq(RefundStatus.PROCESSED))
.and(timeFilter); .and(timeFilter);
return list(query); return list(query);
} }

View File

@ -4,6 +4,7 @@ import com.cdzy.common.model.response.JsonResult;
import com.cdzy.user.model.dto.EbikeUserCyclingDto; import com.cdzy.user.model.dto.EbikeUserCyclingDto;
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto; import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
import com.cdzy.user.model.entity.EbikeOrder; import com.cdzy.user.model.entity.EbikeOrder;
import com.cdzy.user.model.vo.EbikeUserAllOrdersVo;
import com.cdzy.user.service.EbikeOrderService; import com.cdzy.user.service.EbikeOrderService;
import com.ebike.feign.model.dto.FeignEbikeDto; import com.ebike.feign.model.dto.FeignEbikeDto;
import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo;
@ -161,4 +162,27 @@ public class EbikeOrderController {
EbikeOrder userOrder = ebikeOrderService.getById(orderId); EbikeOrder userOrder = ebikeOrderService.getById(orderId);
return JsonResult.success(userOrder); 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<EbikeUserAllOrdersVo> userAllOrders = ebikeOrderService.getUserAllOrder(userId);
return JsonResult.success(userAllOrders);
}
} }

View File

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

View File

@ -3,6 +3,7 @@ package com.cdzy.user.service;
import com.cdzy.user.model.dto.EbikeUserCyclingDto; import com.cdzy.user.model.dto.EbikeUserCyclingDto;
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto; import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
import com.cdzy.user.model.entity.EbikeOrder; 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.FeignEbikeDto;
import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo;
import com.ebike.feign.model.dto.FeignOrderPaymentDto; import com.ebike.feign.model.dto.FeignOrderPaymentDto;
@ -100,4 +101,20 @@ public interface EbikeOrderService extends IService<EbikeOrder> {
* @return 订单id * @return 订单id
*/ */
Long doneRide(EbikeUserCyclingEndDto endDto); Long doneRide(EbikeUserCyclingEndDto endDto);
/**
* 根据订单Id查询订单状态
*
* @param orderId 订单ID
* @return 订单状态
*/
Integer getOrderStatus(Long orderId);
/**
* 根据用户id获取用户所有订单
*
* @param userId 用户id
* @return 用户订单
*/
List<EbikeUserAllOrdersVo> getUserAllOrder(Long userId);
} }

View File

@ -11,6 +11,7 @@ import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
import com.cdzy.user.model.entity.EbikeOrder; import com.cdzy.user.model.entity.EbikeOrder;
import com.cdzy.user.model.entity.EbikeOrderDetail; import com.cdzy.user.model.entity.EbikeOrderDetail;
import com.cdzy.user.model.entity.EbikePayment; 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.EbikeOrderDetailService;
import com.cdzy.user.service.EbikeOrderService; import com.cdzy.user.service.EbikeOrderService;
import com.cdzy.user.service.EbikePaymentService; import com.cdzy.user.service.EbikePaymentService;
@ -244,6 +245,50 @@ public class EbikeOrderImpl extends ServiceImpl<EbikeOrderMapper, EbikeOrder> im
return order.getOrderId(); 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<EbikeUserAllOrdersVo> 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<EbikeOrderDetail> buildOrderDetails(EbikeOrder order) { private List<EbikeOrderDetail> buildOrderDetails(EbikeOrder order) {
List<EbikeOrderDetail> details = new ArrayList<>(); List<EbikeOrderDetail> details = new ArrayList<>();