Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【wiki知识库】06.文档管理接口的实现--SpringBoot后端部分

【wiki知识库】06.文档管理接口的实现--SpringBoot后端部分

作者头像
哈__
发布于 2024-06-12 00:05:58
发布于 2024-06-12 00:05:58
10400
代码可运行
举报
文章被收录于专栏:哈哈熊哈哈熊
运行总次数:0
代码可运行

目录

一、🔥今日目标

二、🎈SpringBoot部分类的添加

1.调用MybatisGenerator

2.添加DocSaveParam

3.添加DocQueryVo

三、🚆后端新增接口

3.1添加DocController

3.1.1 /all/{ebokId}

3.1.2 /doc/save

3.1.3 /doc/delete/{idStr}

3.1.4 /doc/find-content/{id}

2.添加DocService

3.添加DocServiceImpl


一、🔥今日目标

【wiki知识库】06.文档管理页面的添加--前端Vue部分-CSDN博客 这篇文章是06前端部分实现的基础,话不多说了,直接带大家把接口实现完成。

二、🎈SpringBoot部分类的添加

1.调用MybatisGenerator

把图中的代码部分的表的名称改为doc,然后右键运行。

因为文档管理的内容中还要添加文档的具体内容,我们还要生成一下content表。

2.添加DocSaveParam

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.my.hawiki.param;

import lombok.Data;

import javax.validation.constraints.NotNull;

@Data
public class DocSaveParam {
    private Long id;

    @NotNull(message = "【电子书】不能为空")
    private Long ebookId;

    @NotNull(message = "【父文档】不能为空")
    private Long parent;

    @NotNull(message = "【名称】不能为空")
    private String name;

    @NotNull(message = "【顺序】不能为空")
    private Integer sort;

    private Integer viewCount;

    private Integer voteCount;

    @NotNull(message = "【内容】不能为空")
    private String content;

}

3.添加DocQueryVo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.my.hawiki.vo;

import lombok.Data;

@Data
public class DocQueryVo {
    private Long id;

    private Long ebookId;

    private Long parent;

    private String name;

    private Integer sort;

    private Integer viewCount;

    private Integer voteCount;

}

上边两个部分不用解释了。

三、🚆后端新增接口

3.1添加DocController

一共有四个接口

3.1.1 /all/{ebokId}

根据传来的ebookId来查询这个电子书下的所有文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 查询电子书下的所有doc
     * @param ebookId 电子书id
     * @return
     */
    @GetMapping("/all/{ebookId}")
    public CommonResp all(@PathVariable Long ebookId){
        List<DocQueryVo> list = docService.all(ebookId);
        return new CommonResp(true,"查找成功",list);
    }
3.1.2 /doc/save

保存传来的文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /**
     * 文档的保存
     * @param req 文档参数
     * @return
     */
    @PostMapping("/save")
    public CommonResp save(@Valid @RequestBody DocSaveParam req) {
        docService.saveDoc(req);
        return new CommonResp(true,"添加成功",null);
    }
3.1.3 /doc/delete/{idStr}

删除传来的树形文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /**
     * 文档删除   树形结构删除
     * @param idsStr 删除的文档的ids
     * @return
     */
    @DeleteMapping("/delete/{idsStr}")
    public CommonResp delete(@PathVariable String idsStr) {
        boolean res = docService.removeByIds(Arrays.asList(idsStr.split(",")));
        String message = Boolean.TRUE.equals(res) ? "删除成功" : "删除失败";
        return new CommonResp(res,message,null);
    }
3.1.4 /doc/find-content/{id}

根据conent的id查询content。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
     * 查找某个doc的content内容
     * @param id content的id
     * @return
     */
    @GetMapping("/find-content/{id}")
    public CommonResp findContent(@PathVariable Long id) {
        Content content = contentService.getById(id);
        String message = content.getContent();
        return new CommonResp(true,"查找成功",message);
    }

大家可以自己把代码添加到DocController中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.my.hawiki.controller;

/**
 * <p>
 * 文档 前端控制器
 * </p>
 *
 * @author CSDN__哈
 * @since 2024-05-26
 */
@RestController
@RequestMapping("/doc")
public class DocController {

    @Resource
    DocService docService;

    @Resource
    ContentService contentService;


}

2.添加DocService

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface DocService extends IService<Doc> {

    List<DocQueryVo> all(Long ebookId);

    void saveDoc(DocSaveParam req);
}

3.添加DocServiceImpl

我并没有做文档的查询功能,没有使用分页查询。下边的保存或更新操作倒是坑到我了,因为你添加一个文档的时候,content也是同样被添加的,所以更新操作我直接进行的content更新,但是我拿到的数据库中有一部分数据是手动添加的,content和docu不对应,所以这里进行了更新判断,如果更新不成功说明就是上边的情况,这时候把content直接插入进去。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.my.hawiki.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.my.hawiki.domain.Content;
import com.my.hawiki.domain.Doc;
import com.my.hawiki.mapper.ContentMapper;
import com.my.hawiki.mapper.DocMapper;
import com.my.hawiki.param.DocSaveParam;
import com.my.hawiki.service.DocService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.my.hawiki.utils.CopyUtil;
import com.my.hawiki.vo.DocQueryVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 * 文档 服务实现类
 * </p>
 *
 * @author CSDN__哈
 * @since 2024-05-26
 */
@Service
public class DocServiceImpl extends ServiceImpl<DocMapper, Doc> implements DocService {
    @Resource
    DocMapper docMapper;
    @Resource
    ContentMapper contentMapper;

    @Override
    public List<DocQueryVo> all(Long ebookId) {
        LambdaQueryWrapper<Doc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(Doc::getEbookId,ebookId)
                .orderByAsc(Doc::getSort);
        List<Doc> docs = docMapper.selectList(lambdaQueryWrapper);
        List<DocQueryVo> docQueryVos = CopyUtil.copyList(docs,DocQueryVo.class);
        return docQueryVos;
    }

    @Override
    @Transactional
    public void saveDoc(DocSaveParam req) {
        Doc doc = CopyUtil.copy(req,Doc.class);
        Content content = CopyUtil.copy(req,Content.class);

        // 证明是添加操作
        if(doc.getId()==null){
            docMapper.insert(doc);
            content.setId(doc.getId());
            contentMapper.insert(content);
        }else{
            docMapper.updateById(doc);
            int res = contentMapper.updateById(content);
            System.out.println(res);
            System.out.println(content);
            if(res == 0){
                contentMapper.insert(content);
            }
        }

    }
}

这回修改的后端部分代码不是很多也不是很难,所以我不打算在讲文档模块的接口了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
情人节和我没关系!
情人节已经接近尾声了,虽然跟我没什么关系,但是我还是很渴望,能遇到一个良人相伴一生。
软件测试君
2024/03/13
1060
情人节和我没关系!
【后端架构完善与接口开发】004-通用返回类、封装请求参数
訾博ZiBo
2025/01/06
840
【后端架构完善与接口开发】004-通用返回类、封装请求参数
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
只是上述调用MyBatisPlus中提供的分页功能相关的方法还无法真正实现分页功能,MyBatisPlu是通过拦截器来实现分页的,所以需要配置拦截器。
.29.
2023/10/17
4090
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
SpringBoot参数校验的各种正确使用方式
请求实体对应属性上面加注解 & controller上加相关注解(主要是@Validated)
时间静止不是简史
2023/12/05
7790
SpringBoot参数校验的各种正确使用方式
【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示
今天主要是把这个网页的界面初步优化一下,修改一下导航栏以及增加电子书管理模块。包含电子书的查询功能、新增功能、编辑功能和删除功能(不包括文档管理)。
哈__
2024/06/04
1590
【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示
【wiki知识库】09.欢迎页面展示(浏览量统计)SpringBoot部分
这个功能一说出来你知道要在哪里添加吗?就是我们之前写过的fint-content接口,当我们点开一篇文章查看的时候,对应的我们要为这一篇文章增加访问量。
哈__
2024/08/19
1380
【wiki知识库】09.欢迎页面展示(浏览量统计)SpringBoot部分
【wiki知识库】02.wiki知识库SpringBoot后端的准备
这里大家可能使用的不是阿里云服务器创建的SpringBoot项目,所以我把整个的POM文件复制了上来。依赖呢我现在只用到了这么多,如果后边我们缺了什么依赖的话还会在加的。
哈__
2024/05/28
1960
【wiki知识库】02.wiki知识库SpringBoot后端的准备
测试也会开发 - 保存文档功能开发
前面已经调整了布局,富文本编辑器也能正确显示了,那么接下来就是怎么把数据保存到数据库里了,那么怎么做呢?
软件测试君
2024/03/13
1050
测试也会开发 - 保存文档功能开发
【wiki知识库】08.添加用户登录功能--后端SpringBoot部分
这里也做了校验,其实这个事情完全可以放到前端实现,但是也要考虑到有直接调用接口的情况,这时也要给出错误提示。
哈__
2024/08/19
1380
【wiki知识库】08.添加用户登录功能--后端SpringBoot部分
【wiki知识库】05.分类管理模块--后端SpringBoot模块
不知道你是否还记得我们电子书模块后端接口书写的流程,【wiki知识库】02.wiki知识库SpringBoot后端的准备-CSDN博客,在这篇文章当中我是用逆向工程生成了Ebook的一些项目结构,现在我们需要Category模块。我们的第一步还是使用逆向工程。
哈__
2024/06/06
1270
【wiki知识库】05.分类管理模块--后端SpringBoot模块
【wiki知识库】06.文档管理页面的添加--前端Vue部分
在此之前我要要说一件事情,我在做这个模块的时候出现了问题,一个是我们之后要使用的文本编辑器wangeditor无法正常展示,还有一个是弹窗无法关闭的问题。这里我把解决方法告诉大家。
哈__
2024/06/10
1980
【wiki知识库】06.文档管理页面的添加--前端Vue部分
【wiki知识库】07.用户管理后端SpringBoot部分
这一块的代码和之前的相同,我们找到逆向工程的工具类后,把类的部分改为user即可。
哈__
2024/08/06
1010
【wiki知识库】07.用户管理后端SpringBoot部分
【wiki知识库】01.wiki知识库前后端项目搭建(SpringBoot+Vue3)
这里我提供了MySql 5.6和Redis的下载方式,另外两种就需要大家自行百度下载了。
哈__
2024/05/27
2810
【wiki知识库】01.wiki知识库前后端项目搭建(SpringBoot+Vue3)
【wiki知识库】05.分类管理实现--前端Vue模块
除了分类管理,我们的首页也变动了一下。首页的导航栏加载的是我们已经有的分类,同时还加上了一个欢迎页面。
哈__
2024/06/06
1240
【wiki知识库】05.分类管理实现--前端Vue模块
【后端架构完善与接口开发】005-封装返回值
訾博ZiBo
2025/01/06
810
【后端架构完善与接口开发】005-封装返回值
我一个测试仔,也来开发一个功能试试?
这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现。
软件测试君
2024/05/18
1290
我一个测试仔,也来开发一个功能试试?
第2章 预约管理-检查项管理
云和健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、患者管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与患者间的互动,增强管理者对健康管理机构运营情况的了解。
张哥编程
2024/12/13
1230
day71_淘淘商城项目_04_匠心笔记
  SEO:搜索引擎优化,为了提高网站的流量,提高在各搜索引擎中的搜索排名,需要进行优化,那么可以为动态网站伪静态化,以提高排名。
黑泽君
2018/11/19
9590
测试也会开发 - 使用Vue完成页面参数传递
我知道自己现在的状态很不好,以为放个假能好好放松下心情,结果昨晚做梦还在工作,调试代码,和领导汇报工作。
软件测试君
2024/03/04
1230
测试也会开发 - 使用Vue完成页面参数传递
瑞吉外卖实战项目全攻略——总结篇
该系列将记录一份完整的实战项目的完成过程,该篇属于总结篇,主要负责总结整个项目技术点和注意点
秋落雨微凉
2022/11/11
4.3K0
瑞吉外卖实战项目全攻略——总结篇
推荐阅读
相关推荐
情人节和我没关系!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档