当前位置: 首页 > news >正文

用织梦做网站费用今日冯站长之家

用织梦做网站费用,今日冯站长之家,学校网站设计理念,路由器做网站📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、☀SpringBoot代码修改 1.使用逆向工程生成Category表结构 2. 新增CategoryQueryParam 3.新增CategorySaveParam 4.新增CategotyQueryVo 三、🤖新增分类管理的相关接口…

427ef4152dbf4b6c92618a198935cb6c.png

  📝个人主页:哈__

期待您的关注 

1b7335aca73b41609b7f05d1d366f476.gif

目录

 

一、🔥今日目标

二、☀SpringBoot代码修改

1.使用逆向工程生成Category表结构

 2. 新增CategoryQueryParam

3.新增CategorySaveParam

4.新增CategotyQueryVo

 

三、🤖新增分类管理的相关接口

1. /category/all

2./category/save

3./category/delete

1.我们删除的是一个二级分类

2.我们删除的是一个一级分类


 

一、🔥今日目标

【wiki知识库】05.分类管理实现--前端Vue模块-CSDN博客

上一篇文章我把分类模块的前端部分给大家展示出来了,这篇文章主要是为了配合上一篇,其实这一篇文章应该先写到前边,然后在发前端的部分。文章的主要内容是把分类管理的后端接口写出来。

二、☀SpringBoot代码修改

不知道你是否还记得我们电子书模块后端接口书写的流程,【wiki知识库】02.wiki知识库SpringBoot后端的准备-CSDN博客,在这篇文章当中我是用逆向工程生成了Ebook的一些项目结构,现在我们需要Category模块。我们的第一步还是使用逆向工程。

1.使用逆向工程生成Category表结构

在我们util包下的 MybatisGenerator类中修改下方的代码,把我们的表换成category,然后运行代码。

8f7683c5d7074e85831aaa5143c15837.png

 2. 新增CategoryQueryParam

package com.my.hawiki.param;import lombok.Data;
import lombok.EqualsAndHashCode;@EqualsAndHashCode(callSuper = true)
@Data
public class CategoryQueryParam extends PageParam {
}

3.新增CategorySaveParam

package com.my.hawiki.param;import lombok.Data;
import javax.validation.constraints.NotNull;@Data
public class CategorySaveParam {private Long id;private Long parent;@NotNull(message = "【名称】不能为空")private String name;@NotNull(message = "【排序】不能为空")private Integer sort;
}

4.新增CategotyQueryVo

package com.my.hawiki.vo;import lombok.Data;@Data
public class CategoryQueryVo {private Long id;private Long parent;private String name;private Integer sort;
}

 

三、🤖新增分类管理的相关接口

1. /category/all

在CatagotyController中添加以下代码:

 @ResourceCategoryService categoryService;/*** 查询所有的分类* @return*/@RequestMapping("/all")public CommonResp all(){List<CategoryQueryVo> list = categoryService.all();return new CommonResp(true,"查询成功",list);}

为CategoryService接口添加all方法。然后CategoryServiceImpl实现该all方法,这个方法很简单,也用不到什么分页功能,因为前端没有去考虑分类功能的分页查询,所以直接查询的就是所有的分页。

    @ResourceCategoryMapper categoryMapper;@Overridepublic List<CategoryQueryVo> all() {List<Category> categories = categoryMapper.selectList(null);List<CategoryQueryVo> list = CopyUtil.copyList(categories, CategoryQueryVo.class);return list;}

2./category/save

CategoryController中添加下方代码:

这里我做了一个sort值重复的判断,如果你是添加数据并且数据库中也已经有了这个sort值了,你就不能在添加了。

    /*** 添加分类* @param categorySaveParam 添加分类参数* @return*/@PostMapping("/save")public CommonResp save(@Validated @RequestBody CategorySaveParam categorySaveParam){// 先看看这个sort有没有被占用Category category = categoryService.getOne(new LambdaQueryWrapper<Category>().eq(Category::getSort,categorySaveParam.getSort()));if(category != null && categorySaveParam.getId()==null){return new CommonResp(false,"已经存在该顺序了",null);}boolean res = categoryService.saveOrUpdate(CopyUtil.copy(categorySaveParam,Category.class));String message = Boolean.TRUE.equals(res) ? "添加成功":"添加失败";return new CommonResp(res,message,null);}

3./category/delete

这里的分类删除操作其实考虑的东西还是很多的,你删除掉了这个分类,那么这个分类下的所有子分类也要删除,对应得所有电子书也都需要删除。

这个地方还是有些难度的,不过只要考虑清楚了就可以,我带着大家考虑一下。

 

  • 我们删除的是一个二级分类

    倘若我们删除的是一个二级分类,这个情况稍微好一些,因为二级分类之间相互独立不影响,我们删除一个二级分类,我们只需要把属于该分类的所有电子书删掉就行。在删掉电子书的时候对应的电子书的文章我们也应该删掉,这里先不考虑文章的事情,我们只考虑分类与电子书。

  • 我们删除的是一个一级分类

    如果我们删除的是一个一级分类,那我们要做的第一件事就是找到该一级分类下的所有二级分类,然后对所有的二级分类进行删除操作,然后对所有属于该一级分类的电子书进行删除操作,这里我不是通过二级分类删除的电子书,因为一个电子书有两个字段保留其定位,一个是category1:一级分类编号,另一个是category2:二级分类编号。我们可以直接通过一级分类编号进行删除操作。

CategotyController中添加如下代码:

 /*** 删除分类* @param id 分类id* @return*/@DeleteMapping("/delete/{id}")public CommonResp delete(@PathVariable("id") Long id){boolean res = categoryService.deleteById(id);String message = Boolean.TRUE.equals(res) ? "删除成功":"删除失败";return new CommonResp<>(res,message,null);}

CategotyService中添加deleteById()方法,我这里直接写CategotyServiceImpl中的方法实现。

上来拿到Id后先去数据库中查查这个id下有多少子分类,如果大于0的话,就说明有子分类,那么我们要删除的分类就是一级分类了,我用了一个stream流操作,把所有子分类的id提取出来,然后把这个一级分类的id加进去,然后调用mapper的批量删除操作。把分类全部删除了之后,就去看看哪些电子书的一级分类编号和我们传来的一样,直接调用删除操作就行。

如果id本身就是一个二级分类的话,我们直接把这个二级分类删除掉,同样的把该二级分类下的电子书也全部删掉。

 

这里值得注意的就是这个 @Transactional注解,意味着我们开启事物,一旦这个方法中出错了,我们的事物要进行回滚操作。

 @Override@Transactionalpublic boolean deleteById(Long id) {// 先找出来这个分类的子分类List<Category> categories = categoryMapper.selectList(new LambdaQueryWrapper<Category>().eq(Category::getParent, id));// 证明是一级分类if(categories.size()>0){List<Long> collect = categories.stream().map(Category::getId).collect(Collectors.toList());collect.add(id);categoryMapper.deleteBatchIds(collect);ebookMapper.delete(new LambdaQueryWrapper<Ebook>().eq(Ebook::getCategory1Id, id));}else{// 否则就是二级分类categoryMapper.deleteById(id);ebookMapper.delete(new LambdaQueryWrapper<Ebook>().eq(Ebook::getCategory2Id, id));}return true;}

 

 

 

http://www.ds6.com.cn/news/117756.html

相关文章:

  • 做房产的有哪些网站网络营销是以什么为基础
  • 廊坊市 广阳区城市建设局网站公众号推广方法
  • 学校网站群建设 ppt自助建站模板
  • 推广网站文案nba最新新闻
  • 为什么搜索不到刚做的网站汕头网站建设平台
  • 熊掌号如何做网站深圳网站建设哪家好
  • 网站建设开票内容是什么意思浅谈一下网络营销的几个误区
  • 网站建设规划书参考模板网店产品seo如何优化
  • java做网站的多么微商怎么找客源人脉
  • 在线做带字头像的网站自己怎么给网站做优化排名
  • 免费做app网站有哪些合肥seo关键词排名
  • 网站留言板有什么用百度推广下载安装
  • 网站开发服务商西地那非片说明书
  • 义乌做网站公司义乌网站制作百度云网盘资源链接
  • 营销型网站建设效果百度统计代码
  • 网站内容建设和运营工作内容网络营销试卷及答案
  • 做php网站用什么软件好b2b免费外链发布
  • 常州做网站哪家好南京网站排名提升
  • 手机php网站开发十大免费网站推广
  • 网站建立供应商企业网站设计欣赏
  • 网页制作教程课程报告抖音搜索seo
  • 成都的教育品牌网站建设汕头seo公司
  • 邵阳网站制作电商沙盘seo裤子关键词
  • win7 iis配置本地网站网站外链怎么发布
  • wordpress的意思怎么样优化关键词排名
  • 做pc网站排企业营销策划方案
  • 网站开发仿站怎么做网站教程
  • 7k7k网页游戏大全兰州网站seo服务
  • 网站建设教程免费下载郑州百度seo排名公司
  • 响应式网站应用怎样做网络推广挣钱