Spring Boot电商项目60:订单模块九:【后台:订单发货】接口;

说明:

(1)本篇博客的主要内容是开发【后台:订单发货】接口;

(2)本篇博客的内容比较简单;唯一需要注意的是:订单的状态,以及,订单状态流转的说明;

目录

一:【后台:订单发货】接口说明;

1.【后台:订单发货】接口,接口文档;

2.订单状态说明;

3.【后台:订单发货】接口,在界面上的表现;

二:正式开发;

1.在OrderAdminController中,创建处理【后台:订单发货】接口的方法:delivered()方法;

2.在OrderServiceImpl中,创建发货的逻辑方法,deliver方法;

3.在OrderService中,反向生成deliver方法的方法声明;

三:测试;


一:【后台:订单发货】接口说明;

1.【后台:订单发货】接口,接口文档;

说明:

(1)发货接口,主要的作用是把已经付款的订单给发货;本质也就是,改变订单的状态,由20已付款改为30已发货;

2.订单状态说明;

          ● 用户刚下单时,订单状态是10未付款;

          ● 在未付款前(在本项目中,仅支持未付款的订单,去取消订单),用户可以取消订单,然后订单状态就变成了0;;;;但是,用户下单后,即订单状态是10时,用户也可以去付款,此后,订单状态就变成了20;

          ● 用户付款后,即订单状态变为20后,后台管理员才能够去发货;即,订单当前状态是20时,我们才能够修改订单状态为30;

          ● 当订单状态是30已发货后;前台用户和后台管理员,都可以调用【前后台通用:订单完结】接口,去完结订单,完结订单也就是订单状态是40;(【前后台通用:订单完结】接口,将在下篇博客介绍)

3.【后台:订单发货】接口,在界面上的表现;


二:正式开发;

1.在OrderAdminController中,创建处理【后台:订单发货】接口的方法:delivered()方法;

    /**
     * 后台管理员的,订单发货
     * @param orderNo
     * @return
     */
    @ApiOperation("后台管理员的,订单发货")
    @PostMapping("/admin/order/delivered")
    public ApiRestResponse delivered(@RequestParam("orderNo") String orderNo) {
        orderService.deliver(orderNo);
        return ApiRestResponse.success();
    }

说明:

(1)请求方式,url,参数要符合接口要求;

(2)我们在service层中编写了发货的逻辑方法:deliver()方法;这在下一部分介绍;

2.在OrderServiceImpl中,创建发货的逻辑方法,deliver方法;

   /**
     * 发货
     * @param orderNo
     */
    @Override
    public void deliver(String orderNo) {
        //先根据传入的orderNo,去尝试查询order
        Order order = orderMapper.selectByOrderNo(orderNo);
        //如果没有找到对应的订单,就抛出“订单不存在异常”
        if (order == null) {
            throw new ImoocMallException(ImoocMallExceptionEnum.NO_ORDER);
        }
        //如果订单存在,就进行接下来的操作;
        //如果,订单状态是已付款,那么我们就可以发货,我们就把订单状态改为已发货;
        if (order.getOrderStatus() == Constant.OrderStatusEnum.PAID.getCode()) {
            order.setOrderStatus(Constant.OrderStatusEnum.DELIVERED.getCode());//更改订单状态为已发货;
            order.setDeliveryTime(new Date());//设置一下发货时间;
            orderMapper.updateByPrimaryKeySelective(order);
        } else {
            //如果,当前订单状态不是已付款,就抛出“当前订单状态错误”异常;
            throw new ImoocMallException(ImoocMallExceptionEnum.WRONG_ORDER_STATUS);
        }
    }

说明:

(1)在订单发货的时候,也需要校验订单是否存在、订单的状态是否是已付款状态,如果不符合条件,就抛出对应的异常;;

3.在OrderService中,反向生成deliver方法的方法声明;


三:测试;

启动项目;

因为【后台:订单发货】接口,只有管理员才有权限,所以,我们先登录一个管理员用户;

PS:突然意识到,在实际的电商项目中,不同的管理员用户之间也需要做好横向越权的处理;而这需要在数据库设计、程序编码架构上,作修改;只是,本项目并没有这样做;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值