Description or Example
# 核心代码
```java
@RequestMapping("/get/order/orderItems")
public R getUserOrderAndOrderItems(@RequestParam(required = false, defaultValue = "1") String curPage) {
Map<String, Object> params = new HashMap<>();
params.put("page", curPage); // 当前页面
params.put("limit", "10"); // 每页固定10条
PageUtils page = orderService.getUserOrderAndOrderItems(params);
return R.ok().put("page", page);
}
```
```java
@Override
public PageUtils getUserOrderAndOrderItems(Map<String, Object> params) {
// 0. 获取用户信息
Long memberId = UserLoginInterceptor.USER_STATE.get().getId();
// 1. 获取所有用户的订单
LambdaQueryWrapper<OrderEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrderEntity::getMemberId, memberId).orderByDesc(OrderEntity::getCreateTime); // 降序
IPage<OrderEntity> iPage = this.page(
new Query<OrderEntity>().getPage(params),
queryWrapper
); // 订单的分页
// 通过订单的分页, 获取订单详情, 并封装vo的分页
List<UserOrderVO> userOrderVOS = iPage.getRecords().stream().map(orderEntity -> {
String orderSn = orderEntity.getOrderSn(); // 订单的ID
LambdaQueryWrapper<OrderItemEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OrderItemEntity::getOrderSn, orderSn);
List<OrderItemEntity> orderItemEntities = orderItemService.list(wrapper); // 每一个订单的订单详情
UserOrderVO userOrderVO = new UserOrderVO();
return userOrderVO.setOrderVO(orderEntity).setOrderItemVOS(orderItemEntities);
}).collect(Collectors.toList());
IPage<UserOrderVO> finalPage = new Page<>();
finalPage.setPages(iPage.getPages())
.setCurrent(iPage.getCurrent())
.setSize(iPage.getSize())
.setTotal(iPage.getTotal())
.setRecords(userOrderVOS); // 自行封装page对象
return new PageUtils(finalPage);
}
```