Loading

订单批量发货

批量发货业务逻辑

需求分析

实现批量发货的业务逻辑

代码实现

(1)OrderController新增方法

/**
 * 批量发货
 * @param orders  订单列表
 */
@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" );//发状态(0未发货 1已发货)
        orderLog.setOrderId(order.getId());
        orderLogMapper.insertSelective( orderLog );
    }
}

对接第三方物流(了解)

当我们在电商平台购买了商品后,一般会非常关心商品的物流轨迹。那这些信息是如何获取的呢?我们需要对接第三方的物流系统。比较常用的有菜鸟物流、快递鸟等。

我们这里推荐使用快递鸟 http://www.kdniao.com

我们可以使用快递鸟提供的以下接口:

(1)预约取件API

预约取件API为用户提供了在线下单,预约快递员上门揽件的功能,为用户解决在线发货需求。

我们可以在实现批量发货功能后调用预约取件API

(2)即时查询API

物流查询API提供实时查询物流轨迹的服务,用户提供运单号和快递公司,即可查询当前时刻的最新物流轨迹。

用户可以在用户中心调用此API完成物流信息的查询,电商平台也可以调用此API完成运单的跟踪。

posted @ 2021-08-11 15:03  1640808365  阅读(375)  评论(0编辑  收藏  举报