IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot电商项目56:订单模块五:【前台:取消订单】接口; -> 正文阅读

[Java知识库]Spring Boot电商项目56:订单模块五:【前台:取消订单】接口;

说明:

(1)本篇博客主要内容:开发【前台:取消订单】接口;

(2)这个接口比较简单,只是别忘了,我们在实际取消前,需要订单检查与权限校验;

目录

一:【前台:取消订单】接口说明;

1.【前台:取消订单】接口,接口文档;?

2.【前台:取消订单】接口,在界面上的表现;?

二:正式开发;

1.在OrderController中,编写处理【前台:取消订单】接口的方法:cancel()方法;

2.在OrderServiceImpl中,编写根据订单号取消订单的业务方法:cancel()方法;

3.在OrderService中,反生生成方法的定义;

三:测试;


?

一:【前台:取消订单】接口说明;

1.【前台:取消订单】接口,接口文档;?

2.【前台:取消订单】接口,在界面上的表现;?

在订单详情页,我们可以点击【取消订单】按钮,去取消订单;


二:正式开发;

1.在OrderController中,编写处理【前台:取消订单】接口的方法:cancel()方法;

    /**
     * 【前台:取消订单】接口;
     * @param orderNo
     * @return
     */
    @ApiOperation("取消订单")
    @PostMapping("/order/cancel")
    public ApiRestResponse cancel(@RequestParam("orderNo") String orderNo) {
        orderService.cancel(orderNo);
        return ApiRestResponse.success();
    }

说明:

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

(2)我们在Service层,编写了一个根据订单号,取消订单的业务方法:cancel()方法;将在下一部分介绍;

2.在OrderServiceImpl中,编写根据订单号取消订单的业务方法:cancel()方法;

/**
     * 根据,orderNum,取消订单
     * @param orderNum
     */
    @Override
    public void cancel(String orderNum) {
        //首先,根据传过来的订单号,去查订单;
        Order order = orderMapper.selectByOrderNo(orderNum);
        //如果没有查到订单,就抛出“订单不存在”异常;
        if (order == null) {
            throw new ImoocMallException(ImoocMallExceptionEnum.NO_ORDER);
        }
        //如果订单查到了,但发现该订单不隶属当前的登录用户,就抛出“订单不属于你”异常;
        Integer userId = UserFilter.currentUser.getId();
        if (!order.getUserId().equals(userId)) {
            throw new ImoocMallException(ImoocMallExceptionEnum.NOT_YOUR_ORDER);
        }

        //这个项目,在这儿,我们做了简化处理:只有订单是未付款时,才能够取消;
        // (其实,在实际中,即使付过款了,也还是能取消的,那就涉及到了退货等业务了)
        if (order.getOrderStatus().equals(Constant.OrderStatusEnum.NOT_PAY.getCode())) {
            //将订单的状态,设为取消;
            order.setOrderStatus(Constant.OrderStatusEnum.CANCELED.getCode());
            //既然,订单已经被取消,也表示这个订单已经完结了;所以,这儿我们设置下订单的完结时间;
            order.setEndTime(new Date());

            //然后,更新订单信息;
            orderMapper.updateByPrimaryKeySelective(order);
        } else {
            //否则,即抛出"当前订单状态,不允许取消"异常;
            throw new ImoocMallException(ImoocMallExceptionEnum.WRONG_ORDER_STATUS);
        }
    }

说明:

(1)先根据订单号,去查询订单;然后检查订单是否存在,订单是否隶属于当前登录用户;

(2)然后,本项目,在这儿作了简化处理:只有当订单是未付款状态时,才能够取消;可以看到,这儿对于订单状态信息,使用了前面我们定义的枚举类;

(3)否则,就抛出"当前订单状态,不允许取消"异常;

3.在OrderService中,反生生成方法的定义;


三:测试;

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:57:16  更:2022-04-04 12:01:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:51:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码