(九)微信点餐项目-买家订单Service层的实现与测试(下)

本文介绍了微信点餐项目的买家订单Service层实现,包括订单查询、分页查询、取消订单、完结订单和完成支付的详细步骤。在取消订单时,涉及订单状态判断及库存还原;在完结和支付操作中,关键在于状态变更及数据库更新。最后,文章还提及了相关功能的测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇我们写了第一个功能,创建订单,接下来我们来实现剩下的功能。
1.先把OrderService接口再展示出来。

public interface OrderService {
   //接口只是搭建一个架子,主要还是怎么去实现

    //创建订单
    OrderDTO create(OrderDTO orderMaster);//创建一个订单,就要返回订单表,这个方法就是传入OrderDTO这个类,
// 一顿操作之后就返回创建的这个订单了,而且还包含多个。
    //查询单个订单
    OrderDTO findOne(String orderId);

    //查询订单列表
    Page<OrderDTO> findList(String buyerOpenid, Pageable pageable);//买家端是查某一个人的,

    //取消订单
    OrderDTO cancel(OrderDTO orderDTO);
    //完结订单
    OrderDTO finish(OrderDTO orderDTO);
    //支付订单
    OrderDTO paid(OrderDTO orderDTO);

   //买家端和卖家端分隔符
    //查询订单列表
    Page<OrderDTO> findList( Pageable pageable);
}

2.接下来继续在OrderServiceImpl中实现这些方法。
2.1订单查询
根据orderId进行查询订单,从数据库中查询,使用orderMasterRepository.findById这个方法查询,得到这个订单,如果查不到就抛出异常。

如果查到了就根据这个orderId使用orderDetailRepository.findByOrderId这个方法查询到订单详情列表,如果查到的订单详情列表是空的,就再抛出一个异常。

如果都存在,那么我们就建一个OrderDto对象,把OrderMaster的属性赋值给这个对象,就差一个订单详情列表,再设置一下,就把这个对象填充完毕了。

// An highlighted block
@Override
    public OrderDTO findOne(String orderId) {
   
        OrderMaster orderMaster = orderMasterRepository.findById(orderId).orElse(null);
        if (orderMaster == null) {
   
            throw new SellException(ResultEnum.ORDER_NOT_EXIST);
        }
        List<OrderDetail> orderDetailList = orderDetailRepository.findByOrderId(orderId);
        if (CollectionUtils.isEmpty(orderDetailList)) {
   
            throw new SellException(ResultEnum.ORDERDETAIL_NOT_EXIST);
        }

        OrderDTO orderDTO = new OrderDTO();
        BeanUtils.copyProperties(orderMaster, orderDTO);
        orderDTO.setOrderDetailList(orderDetailList);

        return orderDTO;
    }

2.2根据买家的openid分页查询出所有的订单主表
由于我们查询的是Page,但是方法返回的是Page,所有还要再进行类型的转换,为了不每次都执行这样的操作,我们建一个类专门用来进行这样的操作。

// An highlighted block
public class OrderMaster20rderDTOConverter {
   //建立这个的目的就是为了把两个类的属性方便放到一起,把前者属性对应的值给后者、
    public static OrderDTO convert(OrderMaster orderMaster) {
   

        OrderDTO orderDTO = new OrderDTO();
        BeanUtils.copyProperties(orderMaster, orderDTO);
        return orderDTO;
    }
    public static List<OrderDTO> convert(List<OrderMaster> orderMasterList) {
   
        return orderMasterList.stream().
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值