From a3202364a32862b396e6c351f4c35e672304d559 Mon Sep 17 00:00:00 2001 From: chuzhichao Date: Fri, 7 Jul 2023 15:50:48 +0800 Subject: [PATCH] =?UTF-8?q?H5=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/constant/Constants.java | 15 +++++ .../cyl/h5/controller/H5OrderController.java | 14 +++-- .../java/com/cyl/h5/pojo/vo/H5OrderVO.java | 47 ++++++++++++++++ .../com/cyl/h5/service/H5OrderService.java | 55 +++++++++++++++++-- .../cyl/manager/oms/mapper/OrderMapper.java | 4 ++ .../main/resources/mapper/oms/OrderMapper.xml | 29 ++++++++++ 6 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 3e2816a..88f05e5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -215,4 +215,19 @@ public class Constants public static final Integer CLOSED = 4; public static final Integer UNVAILD = 5; } + + /** + * H5订单查询状态 + * -1->全部 0->待付款;1->待发货;2->待收货;3->已完成;4->已关闭;5->无效订单 -2->售后单 + */ + public static class H5OrderStatus{ + public static final Integer ALL = -1; + public static final Integer UN_PAY = 0; + public static final Integer NOT_DELIVERED = 1; + public static final Integer DELIVERED = 2; + public static final Integer COMPLETED = 3; + public static final Integer CLOSED = 4; + public static final Integer INVALID = 5; + public static final Integer REFUND = -2; + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java index f21e96c..93730e5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java @@ -1,6 +1,7 @@ package com.cyl.h5.controller; import com.cyl.h5.pojo.dto.OrderCreateDTO; +import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.form.OrderSubmitForm; import com.cyl.h5.pojo.vo.query.OrderH5Query; @@ -15,12 +16,10 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/h5/order") @@ -61,4 +60,11 @@ public class H5OrderController { public ResponseEntity addOrderCheck(@RequestBody OrderCreateDTO orderCreateDTO){ return ResponseEntity.ok(service.addOrderCheck(orderCreateDTO)); } + + @ApiOperation("订单列表") + @GetMapping("/page") + public ResponseEntity> orderPage(Integer status, Pageable pageable){ + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + return ResponseEntity.ok(service.orderPage(status, member.getId(), pageable)); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java new file mode 100644 index 0000000..a70dc4a --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/H5OrderVO.java @@ -0,0 +1,47 @@ +package com.cyl.h5.pojo.vo; + +import com.cyl.manager.oms.domain.OrderItem; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class H5OrderVO { + + @ApiModelProperty("订单id") + private Long orderId; + + @ApiModelProperty("订单编号") + private String orderSn; + + @ApiModelProperty("会员id") + private Long memberId; + + @ApiModelProperty("订单总金额") + private BigDecimal totalAmount; + + @ApiModelProperty("应付金额") + private BigDecimal payAmount; + + @ApiModelProperty("订单状态 0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭") + private Integer status; + + @ApiModelProperty("售后状态") + private Integer aftersaleStatus; + + @ApiModelProperty("订单Item") + private List orderItemList; + + @ApiModelProperty("订单备注") + private String note; + + @ApiModelProperty("物流单号") + private String deliverySn; + + @ApiModelProperty("下单时间") + private LocalDateTime createTime; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java index fda598c..56ad456 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java @@ -1,14 +1,17 @@ package com.cyl.h5.service; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyl.h5.pojo.dto.OrderCreateDTO; import com.cyl.h5.pojo.dto.OrderProductListDTO; +import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.SkuViewDTO; import com.cyl.h5.pojo.vo.form.OrderSubmitForm; import com.cyl.manager.oms.domain.Order; +import com.cyl.manager.oms.domain.OrderItem; import com.cyl.manager.oms.domain.OrderOperateHistory; import com.cyl.manager.oms.mapper.OrderItemMapper; import com.cyl.manager.oms.mapper.OrderMapper; @@ -23,20 +26,20 @@ 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.github.pagehelper.PageHelper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.IDGenerator; import com.ruoyi.framework.config.LocalDataUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Service @@ -171,7 +174,7 @@ public class H5OrderService { throw new RuntimeException("删除购物车失败"); } } - //当前返回成功消息,接入支付后可返回payId + //当前订单id,接入支付后可返回payId return orderId; } @@ -230,4 +233,46 @@ public class H5OrderService { LocalDateTime time = LocalDateTime.now(); return time.format(DateTimeFormatter.ofPattern("yyMMdd")) + "-"; } + + /** + * h5订单分页查询 + * @param status 订单状态 -1->全部;0->待付款;1->待发货;2->待收货;-2->售后单 + * @param memberId 会员id + * @param pageable 分页 + * @return 结果 + */ + public PageImpl orderPage(Integer status, Long memberId, Pageable pageable) { + // 如果全部且页数为1,看看有无待付款单 + List unpaidOrderList = new ArrayList<>(); + if (Constants.H5OrderStatus.ALL.equals(status) && pageable.getPageNumber() == 0){ + unpaidOrderList = orderMapper.orderPage(Constants.H5OrderStatus.UN_PAY, memberId); + } + if (pageable != null){ + PageHelper.startPage(pageable.getPageNumber() + 1, pageable.getPageSize()); + } + List orderList = orderMapper.orderPage(status, memberId); + long total = ((com.github.pagehelper.Page) orderList).getTotal(); + // 两个list都没数据那肯定返回空了 + if (CollectionUtil.isEmpty(unpaidOrderList) && CollectionUtil.isEmpty(orderList)){ + return new PageImpl<>(Collections.EMPTY_LIST, pageable, total); + } + // 开始组装item了 + // 拿出所有orderId,查item,然后分组 by orderId + List idList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(unpaidOrderList)){ + idList.addAll(unpaidOrderList.stream().map(H5OrderVO::getOrderId).collect(Collectors.toList())); + } + if (CollectionUtil.isNotEmpty(orderList)){ + idList.addAll(orderList.stream().map(H5OrderVO::getOrderId).collect(Collectors.toList())); + } + QueryWrapper orderItemQw = new QueryWrapper<>(); + orderItemQw.in("order_id", idList); + Map> orderItemMap = + orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); + orderList.addAll(0, unpaidOrderList); + orderList.forEach(item -> { + item.setOrderItemList(orderItemMap.get(item.getOrderId())); + }); + return new PageImpl<>(orderList, pageable, total); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java index 55c0286..3a5c42b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java @@ -2,9 +2,11 @@ package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.manager.oms.domain.Order; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; +import org.apache.ibatis.annotations.Param; /** * 订单表Mapper接口 @@ -21,4 +23,6 @@ public interface OrderMapper extends BaseMapper { List selectByEntity(Order order); List selectManagerOrderPage(ManagerOrderQueryRequest request); + + List orderPage(@Param("status") Integer status, @Param("memberId")Long memberId); } diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml index 83c080a..ef1ea28 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml @@ -144,4 +144,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by a.create_time desc + +