diff --git a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java index 07021bd8..24444014 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java @@ -5,6 +5,7 @@ import com.cdzy.common.model.PageParam; import com.cdzy.orders.model.dto.req.ReqBikeDto; import com.cdzy.orders.model.dto.req.ReqOrderDto; import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo; +import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList; import com.ebike.feign.model.res.ResFeignOrderPaymentDto; import com.cdzy.orders.model.dto.res.RspBikeDto; import com.cdzy.orders.model.entity.EbikeUserOrders; @@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.List; +import java.util.Map; import static com.cdzy.orders.model.entity.table.EbikeUserOrdersTableDef.EBIKE_USER_ORDERS; @@ -236,5 +238,15 @@ public class EbikeUserOrdersController { Page page = userOrdersService.page(pageParam.getPage(), queryWrapper); return JsonResult.success(page); } - + /** + * 根据用户ID获取订单详情列表(带分页。 + * + * @param params 用户Id 和分页信息 + * @ 用户订单表详情 + */ + @PostMapping("orderDetailsUserList") + public JsonResult orderDetailsUserList(@RequestBody Map params) { + List info = userOrdersService.orderDetailsUserList(params); + return JsonResult.success(info); + } } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/mapper/UserOrdersMapper.java b/ebike-orders/src/main/java/com/cdzy/orders/mapper/UserOrdersMapper.java index 1d39ed4c..00eebfaa 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/mapper/UserOrdersMapper.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/mapper/UserOrdersMapper.java @@ -1,7 +1,15 @@ package com.cdzy.orders.mapper; +import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo; +import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList; import com.mybatisflex.core.BaseMapper; import com.cdzy.orders.model.entity.EbikeUserOrders; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 用户订单表 映射层。 @@ -11,4 +19,47 @@ import com.cdzy.orders.model.entity.EbikeUserOrders; */ public interface UserOrdersMapper extends BaseMapper { + /** + * 根据用户ID获取订单详情列表(带分页),并根据类型查询(消费或退款)。 + * + * @param userId 用户Id + * @param orderType 订单类型(消费或退款) + * @return 用户订单表详情 + */ + @Select("") + @Results({ + @Result(property = "orderId", column = "order_id"), + @Result(property = "userId", column = "user_id"), + @Result(property = "status", column = "status"), + @Result(property = "startTime", column = "start_time"), + @Result(property = "endTime", column = "end_time"), + @Result(property = "ridingDuration", column = "riding_duration"), + @Result(property = "statusName", column = "status_name"), + @Result(property = "createdAt", column = "created_at"), + @Result(property = "totalAmount", column = "total_amount"), + @Result(property = "bikeCode", column = "bike_code") + }) + List getOrderDetailsUserList(@Param("userId") String userId, + @Param("orderType") String orderType, + @Param("offset") Integer offset, + @Param("pageSize") Integer pageSize); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspOrderDetailsUserList.java b/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspOrderDetailsUserList.java new file mode 100644 index 00000000..9b6ddf4b --- /dev/null +++ b/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspOrderDetailsUserList.java @@ -0,0 +1,66 @@ +package com.cdzy.orders.model.dto.res; + +import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户订单详情响应DTO + */ +@Data +public class RspOrderDetailsUserList { + + /** + * 分布式ID(雪花算法或业务前缀+序列) + */ + private Long orderId; + + /** + * 用户ID,关联用户表 + */ + private Long userId; + + /** + * 订单状态(进行中、已取消、待支付、已支付、退款中、已退款) + */ + private String status; + /** + * 订单状态(进行中、已取消、待支付、已支付、退款中、已退款) + */ + private String statusName; + + /** + * 订单开始时间 + */ + private Date startTime; + + /** + * 订单结束时间 + */ + private Date endTime; + + /** + * 订单骑行时长(分钟) + */ + private String ridingDuration; + + /** + * 订单创建时间 + */ + private Date createdAt; + + /** + * 订单总金额 + */ + private BigDecimal totalAmount; + + /** + * 订单关联的车辆编码 + */ + private String bikeCode; + + /** + * 其他需要返回的字段,可以根据需要添加 + */ + // 可根据需要添加其他字段,如订单类型、支付方式等 +} diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java index 2106bedb..3ab0a228 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java @@ -3,6 +3,7 @@ package com.cdzy.orders.service; import com.cdzy.orders.model.dto.req.ReqBikeDto; import com.cdzy.orders.model.dto.req.ReqOrderDto; import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo; +import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList; import com.ebike.feign.model.res.ResFeignOrderPaymentDto; import com.cdzy.orders.model.dto.res.RspBikeDto; import com.ebike.feign.model.rsp.EbikePaymentDto; @@ -11,6 +12,7 @@ import com.cdzy.orders.model.entity.EbikeUserOrders; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 用户订单表 服务层。 @@ -116,4 +118,12 @@ public interface UserOrdersService extends IService { * @return 支付信息 */ EbikePaymentDto paymentDetailsInfo(Long orderId); + + /** + * 根据用户ID获取订单详情列表(带分页。 + * + * @param params 用户Id + * @ 用户订单表详情 + */ + List orderDetailsUserList(Map params); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index 6ad05561..00faad69 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -1,5 +1,6 @@ package com.cdzy.orders.service.impl; +import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.enums.Code; import com.cdzy.common.model.JsonResult; @@ -14,6 +15,7 @@ import com.cdzy.orders.model.dto.req.ReqOrderDto; import com.cdzy.orders.model.dto.res.RedisPoint; import com.cdzy.orders.model.dto.res.RspBikeDto; import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo; +import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList; import com.cdzy.orders.model.entity.EbikeOrderDetails; import com.cdzy.orders.model.entity.EbikeUser; import com.cdzy.orders.model.entity.EbikeUserOrders; @@ -40,6 +42,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; import static com.cdzy.orders.enums.TimeDivisionCharging.TIME_SLOT; @@ -657,4 +660,22 @@ public class UserOrdersServiceImpl extends ServiceImpl orderDetailsUserList(Map params) { + String userId = MapUtil.getStr(params,"userId"); + Map pageParam = ( Map)params.get("pageParam"); + Integer pageNum= MapUtil.getInt(pageParam,"pageNum"); + Integer pageSize= MapUtil.getInt(pageParam,"pageSize"); + String orderType = ""; //consumption 消费 refund 退款 + orderType= MapUtil.getStr(pageParam,"orderType"); + Integer offset = (pageNum - 1) * pageSize; // 计算OFFSET + List orderDetailsUserList = userOrdersMapper.getOrderDetailsUserList(userId,orderType,offset,pageSize); + return orderDetailsUserList; + } }