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完成运单的跟踪。