diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java index 0d1fb8a..6498759 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java @@ -3,6 +3,7 @@ package com.cyl.manager.oms.controller; import java.util.List; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; +import com.cyl.manager.oms.pojo.vo.ManagerOrderDetailVO; import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -48,8 +49,8 @@ public class OrderController extends BaseController { @PreAuthorize("@ss.hasPermi('oms:order:list')") @PostMapping("/list") public ResponseEntity> list(@RequestBody ManagerOrderQueryRequest query, Pageable page) { - List list = service.selectList(query, page); - return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + return ResponseEntity.ok(service.selectList(query, page)); +// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); } @ApiOperation("导出订单表列表") @@ -66,7 +67,7 @@ public class OrderController extends BaseController { @ApiOperation("获取订单表详细信息") @PreAuthorize("@ss.hasPermi('oms:order:query')") @GetMapping(value = "/{id}") - public ResponseEntity getInfo(@PathVariable("id") Long id) { + public ResponseEntity getInfo(@PathVariable("id") Long id) { return ResponseEntity.ok(service.selectById(id)); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderAddressVo.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderAddressVo.java new file mode 100644 index 0000000..b7022dd --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderAddressVo.java @@ -0,0 +1,26 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * @author: Jinxin + * @date: 2022/4/22 14:12 + * @Description: + */ +@Getter +@Setter +@ApiModel("订单收获地址") +public class ManagerOrderAddressVo { + @ApiModelProperty("收货人姓名") + private String name; + @ApiModelProperty("收货人手机号") + private String userPhone; + @ApiModelProperty("收获区域") + private String area; + @ApiModelProperty("详细地址") + private String address; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderDetailVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderDetailVO.java new file mode 100644 index 0000000..4c6feb5 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderDetailVO.java @@ -0,0 +1,42 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel("后台订单详情对象") +public class ManagerOrderDetailVO { + @ApiModelProperty("订单编号") + private Long orderId; + @ApiModelProperty("用户昵称") + private String userName; + @ApiModelProperty("用户手机号") + private String userPhone; + @ApiModelProperty("下单时间") + private LocalDateTime createTime; + @ApiModelProperty("支付方式:0->未支付;1->支付宝;2->微信") + private Integer payType; + @ApiModelProperty("支付时间") + private LocalDateTime payTime; + @ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单") + private Integer orderStatus; + @ApiModelProperty("订单收获地址信息") + private ManagerOrderAddressVo addressInfo; + @ApiModelProperty("订单商品信息") + private List productInfo; + @ApiModelProperty("发货时间") + private LocalDateTime deliveryTime; + @ApiModelProperty("物流单号") + private String expressNo; + @ApiModelProperty("物流名称") + private String expressName; + @ApiModelProperty("支付金额") + private BigDecimal payAmount; + @ApiModelProperty("订单金额") + private BigDecimal totalAmount; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderProductVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderProductVO.java new file mode 100644 index 0000000..c113ac4 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderProductVO.java @@ -0,0 +1,25 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel("订单") +public class ManagerOrderProductVO { + @ApiModelProperty("商品id") + private Long productId; + @ApiModelProperty("商品名称") + private String productName; + @ApiModelProperty("商品规格") + private String spData; + @ApiModelProperty("商品图片") + private String pic; + @ApiModelProperty("购买数量") + private Integer buyNum; + @ApiModelProperty("销售价格") + private BigDecimal salePrice; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java index 4ab3561..79a521b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java @@ -6,12 +6,13 @@ import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; @Data @ApiModel(value = "管理后台订单VO") public class ManagerOrderVO { @ApiModelProperty(name = "id",value = "订单id",required = true,dataType = "String") - private String id; + private Long id; @ApiModelProperty(name = "productId",value = "商品id",required = true,dataType = "Long") private Long productId; @@ -67,6 +68,9 @@ public class ManagerOrderVO { @ApiModelProperty(name = "spData",value = "商品sku属性",required = true,dataType = "String") private String spData; + @ApiModelProperty(name = "productInfo", value = "订单商品数据") + private List productList; + private String receiverName; private String receiverPhone; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java index d6d44e6..2efa9a7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java @@ -24,8 +24,7 @@ import com.cyl.manager.oms.domain.OrderOperateHistory; import com.cyl.manager.oms.mapper.OrderItemMapper; import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; -import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; -import com.cyl.manager.oms.pojo.vo.OrderVO; +import com.cyl.manager.oms.pojo.vo.*; import com.cyl.manager.pms.convert.SkuConvert; import com.cyl.manager.pms.domain.Product; import com.cyl.manager.pms.domain.Sku; @@ -36,6 +35,7 @@ import com.cyl.manager.ums.domain.MemberAddress; import com.cyl.manager.ums.domain.MemberCart; import com.cyl.manager.ums.mapper.MemberAddressMapper; import com.cyl.manager.ums.mapper.MemberCartMapper; +import com.cyl.manager.ums.mapper.MemberMapper; import com.github.pagehelper.PageHelper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.AesCryptoUtils; @@ -82,6 +82,8 @@ public class OrderService { private OrderOperateHistoryMapper orderOperateHistoryMapper; @Autowired private MemberCartMapper memberCartMapper; + @Autowired + private MemberMapper memberMapper; @Value("${aes.key}") private String aesKey; @@ -91,8 +93,55 @@ public class OrderService { * @param id 订单表主键 * @return 订单表 */ - public Order selectById(Long id) { - return orderMapper.selectById(id); + public ManagerOrderDetailVO selectById(Long id) { + Order order = orderMapper.selectById(id); + if (order == null){ + throw new RuntimeException("查不到订单信息"); + } + ManagerOrderDetailVO managerOrderDetailVO = new ManagerOrderDetailVO(); + //封装订单信息 + managerOrderDetailVO.setOrderId(id); + managerOrderDetailVO.setOrderStatus(order.getStatus()); + managerOrderDetailVO.setCreateTime(order.getCreateTime()); + managerOrderDetailVO.setDeliveryTime(order.getDeliveryTime()); + managerOrderDetailVO.setExpressName(order.getDeliveryCompany()); + managerOrderDetailVO.setExpressNo(order.getDeliverySn()); + managerOrderDetailVO.setPayAmount(order.getPayAmount()); + managerOrderDetailVO.setPayTime(order.getPaymentTime()); + managerOrderDetailVO.setPayType(order.getPayType()); + managerOrderDetailVO.setTotalAmount(order.getTotalAmount()); + managerOrderDetailVO.setPayAmount(order.getPayAmount()); + //封装订单地址信息 + ManagerOrderAddressVo managerOrderAddressVo = new ManagerOrderAddressVo(); + managerOrderAddressVo.setUserPhone(order.getReceiverPhone()); + managerOrderAddressVo.setAddress(order.getReceiverDetailAddress()); + managerOrderAddressVo.setArea( + order.getReceiverProvince() + + order.getReceiverCity() + + order.getReceiverDistrict()); + managerOrderAddressVo.setName(order.getReceiverName()); + managerOrderDetailVO.setAddressInfo(managerOrderAddressVo); + //查询会员信息 + Member member = memberMapper.selectById(order.getMemberId()); + managerOrderDetailVO.setUserName(member.getNickname()); + managerOrderDetailVO.setUserPhone(member.getPhoneHidden()); + //查询购买商品信息 + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("order_id", order.getId()); + List orderItemList = orderItemMapper.selectList(qw); + List productList = new ArrayList<>(); + orderItemList.forEach(item -> { + ManagerOrderProductVO productVO = new ManagerOrderProductVO(); + productVO.setProductId(item.getProductId()); + productVO.setBuyNum(item.getQuantity()); + productVO.setPic(item.getPic()); + productVO.setProductName(item.getProductName()); + productVO.setSalePrice(item.getSalePrice()); + productVO.setSpData(item.getSpData()); + productList.add(productVO); + }); + managerOrderDetailVO.setProductInfo(productList); + return managerOrderDetailVO; } /** @@ -102,14 +151,41 @@ public class OrderService { * @param page 分页条件 * @return 订单表 */ - public List selectList(ManagerOrderQueryRequest query, Pageable page) { + public PageImpl selectList(ManagerOrderQueryRequest query, Pageable page) { if (page != null) { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } if (!StringUtils.isEmpty(query.getUserPhone())){ query.setUserPhone(AesCryptoUtils.encrypt(aesKey, query.getUserPhone())); } - return orderMapper.selectManagerOrderPage(query); + List managerOrderVOList = orderMapper.selectManagerOrderPage(query); + if (CollectionUtil.isEmpty(managerOrderVOList)){ + return new PageImpl<>(managerOrderVOList, page, 0); + } + long total = ((com.github.pagehelper.Page) managerOrderVOList).getTotal(); + Map orderMap = managerOrderVOList.stream().collect(Collectors.toMap(ManagerOrderVO::getId, it -> it)); + //查orderItem + QueryWrapper qw = new QueryWrapper<>(); + qw.in("order_id", orderMap.keySet()); + Map> groupedOrderItemMap = orderItemMapper.selectList(qw) + .stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); + groupedOrderItemMap.keySet().forEach(key -> { + ManagerOrderVO managerOrderVO = orderMap.get(key); + List orderItemList = groupedOrderItemMap.get(key); + List addProductList = new ArrayList<>(); + orderItemList.forEach(item -> { + ManagerOrderProductVO vo = new ManagerOrderProductVO(); + vo.setProductName(item.getProductName()); + vo.setSalePrice(item.getSalePrice()); + vo.setPic(item.getPic()); + vo.setBuyNum(item.getQuantity()); + vo.setProductId(item.getProductId()); + vo.setSpData(item.getSpData()); + addProductList.add(vo); + }); + managerOrderVO.setProductList(addProductList); + }); + return new PageImpl<>(new ArrayList<>(orderMap.values()), page, total); } /**