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电商项目26:商品分类模块五:【更新目录分类】接口; -> 正文阅读

[Java知识库]Spring Boot电商项目26:商品分类模块五:【更新目录分类】接口;

说明:

(1)本篇博客内容说明:【更新目录分类】接口的开发;

(2)本篇博客需要注意的点:

? ? ? ? ? ●?本篇博客,总体上没有什么新的内容;

? ? ? ? ? ● UpdateCategoryReq这个类,我们图省事,是复制的AddCategoryReq;然后,我们增加了id属性;;一定要记得添加id属性的get和set方法;否则,接口就会返回【id不能为null】的错误信息;

目录

一:【更新目录分类】接口文档;以及该接口的几点说明;

二:正式开发;

1.在CategoryController类中,创建更新目录分类的方法:update()方法;

(1)?update方法的url,参数,参数校验,要比照接口来书写;

(2)同理,创建UpdateCategoryReq这个bean,以在更新接口处接收参数;

(3)方法说明;

2.在CategoryServiceImpl类中,创建更新目录分类的方法:update()方法;并在CategoryService接口中反向生成该方法的声明;

(1)方法说明:为了【防止分类重名】而添加的逻辑;

(2)因为传递参数,可能不全,所以调用updateByPrimaryKeySelective()方法,是非常合适的;

(3)在方法上添加@Override注解,并通过快捷键,在CategoryService接口中,反向生成updat()方法的声明;

3.启动项目,测试;

(1)正常的情况;

(2)失败的情况:没有通过重名的检查;


一:【更新目录分类】接口文档;以及该接口的几点说明;

说明:

(1)【更新目录分类】接口,请求方式是POST;然后,其参数是放在body中的,JSON格式;

(2)然后,更新的时候,是必须要传入id;其他四个参(name,type,parentId,orderNum),我们要更新哪个就传哪个值,如果不更新就可以为空;

(3)因为【我们不允许分类的名字,重名】,所以,我们在更新的时候,也要防止重名的情况;如下图所示:

(4)然后,更新操作,也要求有用户登录,且是管理员用户登录的情况下,才能操作;


二:正式开发;

1.在CategoryController类中,创建更新目录分类的方法:update()方法;

 @ApiOperation("后台更新商品分类目录")
    @PostMapping("/admin/category/update")
    @ResponseBody
    public ApiRestResponse updateCategory(HttpSession session, @Valid @RequestBody UpdateCategoryReq updateCategoryReq) {
        //尝试获取当前登录用户
        User currentUser = (User) session.getAttribute(Constant.IMOOC_MALL_USER);
        //如果获取不到,说明当前没有用户登录;就返回【用户未登录】的信息
        if (currentUser == null) {
            return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_LOGIN);
        }
        //校验当前用户是否是管理员用户
        boolean isAdminRole = userService.checkAdminRole(currentUser);

        if (isAdminRole) {//如果是管理用户;就去执行【更新目录分类】;
            Category category = new Category();
            BeanUtils.copyProperties(updateCategoryReq, category);
            categoryService.update(category);
            return ApiRestResponse.success();
        } else {//如果不是管理员用户;就返回【无管理员权限】的信息
            return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_ADMIN);
        }
    }

说明:

(1)?update方法的url,参数,参数校验,要比照接口来书写;

(2)同理,创建UpdateCategoryReq这个bean,以在更新接口处接收参数;

UpdateCategoryReq:

package com.imooc.mall.model.request;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 描述:【更新目录分类】接口的参数类;
 */
public class UpdateCategoryReq {
    @NotNull(message = "目录id不能为null")
    private Integer id;

    @Size(min = 2, max = 5)
    private String name;//目录名

    @Max(3)
    private Integer type;//目录级别

    private Integer parentId;//上一级目录的id

    private Integer orderNum;//同级目录的排序顺序


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
}

UpdateCategoryReq类需要按照更新接口的参数要求来编写;?对于更新接口来说,要求id不能为null;其他四个参(name,type,parentId,orderNum)是可以为空的;

一个特别容易出错的点:UpdateCategoryReq这个类,我们图省事,是复制的AddCategoryReq;然后,我们增加了id属性;;一定要记得添加id属性的get和set方法;否则,接口就会返回【id不能为null】的错误信息;

(3)方法说明;

Service层的update方法,在下一部分介绍;

2.在CategoryServiceImpl类中,创建更新目录分类的方法:update()方法;并在CategoryService接口中反向生成该方法的声明;

    /**
     * 更新目录分类
     * @param updateCategory
     */
    @Override
    public void update(Category updateCategory) {
        //因为分类的名字不允许重复;所以,在更新前需要有下面的判断逻辑;
        if (updateCategory.getName() != null) {
            Category categoryOld = categoryMapper.selectByName(updateCategory.getName());
            if (categoryOld.getName() != null && !categoryOld.getId().equals(updateCategory.getId())) {
                throw new ImoocMallException(ImoocMallExceptionEnum.NAME_EXISTED);
            }
        }
        //如果没有name重名的风险,就调用方法去更新;
        int count = categoryMapper.updateByPrimaryKeySelective(updateCategory);
        if (count == 0) {
            throw new ImoocMallException(ImoocMallExceptionEnum.UPDATE_FAILED);
        }
    }

说明:

(1)方法说明:为了【防止分类重名】而添加的逻辑;

(2)因为传递参数,可能不全,所以调用updateByPrimaryKeySelective()方法,是非常合适的;

(3)在方法上添加@Override注解,并通过快捷键,在CategoryService接口中,反向生成updat()方法的声明;

3.启动项目,测试;

启动项目;

(1)正常的情况;

(2)失败的情况:没有通过重名的检查;

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:16:56  更:2022-02-26 11:18:36 
 
开发: 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 11:42:05-

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