订单批量发货
批量发货业务逻辑#
需求分析#
实现批量发货的业务逻辑
代码实现#
(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完成运单的跟踪。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)