02订单批量发货

2.订单批量发货

2.1 批量发货业务逻辑

2.1.1 需求分析

实现批量发货的业务逻辑
在这里插入图片描述

2.1.2 代码实现

(1)OrderController新增方法

@PostMapping("/batchSend")
    public Result batchSend(@RequestBody List<Order> orders){
        orderService.batchSend(orders);
        return new Result(true,StatusCode.OK,"发货成功");
    }

(2)OrderService新增方法定义

/**
* 批量发货
* @param orders
*/
void batchSend(List<Order> orders);

(3)OrderServiceImpl实现该方法

 @Override
    @Transactional
    public void batchSend(List<Order> orders) {

        //判断每一个订单的运单号和物流公司的值是否存在
        for (Order order : orders) {
            if (order.getId() == null){
                throw new RuntimeException("订单号不存在!");
            }
            if (order.getShippingCode() == null || order.getShippingName() == null){
                throw new RuntimeException("请输入运单号或物流公司的名称");
            }
        }

        //进行订单状态的校验
        for (Order order : orders) {
            Order order1 = orderMapper.selectByPrimaryKey(order.getId());
            if (!"0".equals(order1.getConsignStatus()) || !"1".equals(order1.getOrderStatus())){
                throw new RuntimeException("订单状态不合法");
            }
        }

        //修改订单的状态为已发货
        for (Order order : orders) {
            order.setOrderStatus("2"); //已发货
            order.setConsignStatus("1");//已发货
            order.setConsignTime(new Date());
            order.setUpdateTime(new Date());
            orderMapper.updateByPrimaryKeySelective(order);

            //记录订单日志
            OrderLog orderLog = new OrderLog();
            orderLog.setId(idWorker.nextId()+"");
            orderLog.setOperateTime(new Date());
            orderLog.setOperater("admin");
            orderLog.setOrderStatus("2");
            orderLog.setConsignStatus("1");
            orderLog.setOrderId(order.getId());
            orderLogMapper.insertSelective(orderLog);
        }
    }

2.2 对接第三方物流(了解)

当我们在电商平台购买了商品后,一般会非常关心商品的物流轨迹。那这些信息是如何获取的呢?我们需要对接第三方的物流系统。比较常用的有菜鸟物流、快递鸟等。我们这里推荐使用快递鸟 http://www.kdniao.com
我们可以使用快递鸟提供的以下接口:
(1)预约取件API
预约取件API为用户提供了在线下单,预约快递员上门揽件的功能,为用户解决在线发货需求。我们可以在实现批量发货功能后调用预约取件API
(2)即时查询API
物流查询API提供实时查询物流轨迹的服务,用户提供运单号和快递公司,即可查询当前时刻的最新物流轨迹。
用户可以在用户中心调用此API完成物流信息的查询,电商平台也可以调用此API完成运单的跟踪。

流轨迹的服务,用户提供运单号和快递公司,即可查询当前时刻的最新物流轨迹。
用户可以在用户中心调用此API完成物流信息的查询,电商平台也可以调用此API完成运单的跟踪。

发布了211 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u014736082/article/details/104852514