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

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

作者头像
哈__
发布2024-06-12 08:05:58
790
发布2024-06-12 08:05:58
举报
文章被收录于专栏:哈哈熊哈哈熊

目录

一、🔥今日目标

二、🎈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
复制
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
复制
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
复制
    /**
     * 查询电子书下的所有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
复制
 /**
     * 文档的保存
     * @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
复制
 /**
     * 文档删除   树形结构删除
     * @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
复制
/**
     * 查找某个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
复制
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
复制
public interface DocService extends IService<Doc> {

    List<DocQueryVo> all(Long ebookId);

    void saveDoc(DocSaveParam req);
}

3.添加DocServiceImpl

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

代码语言:javascript
复制
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 删除。

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

评论
登录后参与评论
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
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档