目录
一、🔥今日目标
二、🎈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前端部分实现的基础,话不多说了,直接带大家把接口实现完成。
把图中的代码部分的表的名称改为doc,然后右键运行。
因为文档管理的内容中还要添加文档的具体内容,我们还要生成一下content表。
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;
}
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;
}
上边两个部分不用解释了。
一共有四个接口
根据传来的ebookId来查询这个电子书下的所有文档。
/**
* 查询电子书下的所有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);
}
保存传来的文档。
/**
* 文档的保存
* @param req 文档参数
* @return
*/
@PostMapping("/save")
public CommonResp save(@Valid @RequestBody DocSaveParam req) {
docService.saveDoc(req);
return new CommonResp(true,"添加成功",null);
}
删除传来的树形文档。
/**
* 文档删除 树形结构删除
* @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);
}
根据conent的id查询content。
/**
* 查找某个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中。
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;
}
public interface DocService extends IService<Doc> {
List<DocQueryVo> all(Long ebookId);
void saveDoc(DocSaveParam req);
}
我并没有做文档的查询功能,没有使用分页查询。下边的保存或更新操作倒是坑到我了,因为你添加一个文档的时候,content也是同样被添加的,所以更新操作我直接进行的content更新,但是我拿到的数据库中有一部分数据是手动添加的,content和docu不对应,所以这里进行了更新判断,如果更新不成功说明就是上边的情况,这时候把content直接插入进去。
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);
}
}
}
}
这回修改的后端部分代码不是很多也不是很难,所以我不打算在讲文档模块的接口了
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有