From 62461960d45ec005e9ff82ed6686fd4d214d812e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Wed, 13 Aug 2025 00:28:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/controller/NoteController.java | 18 ++- .../yulinling/workflow/model/vo/NoteVO.java | 88 ++++++++++++++ .../workflow/service/NoteService.java | 62 +++++++++- .../workflow/service/UserService.java | 2 +- .../service/impl/NoteServiceImpl.java | 108 ++++++++++++++++++ .../service/impl/NotebookServiceImpl.java | 8 +- .../service/impl/UserServiceImpl.java | 2 +- 7 files changed, 280 insertions(+), 8 deletions(-) create mode 100644 src/main/java/asia/yulinling/workflow/model/vo/NoteVO.java diff --git a/src/main/java/asia/yulinling/workflow/controller/NoteController.java b/src/main/java/asia/yulinling/workflow/controller/NoteController.java index e995295..fb2ed2a 100644 --- a/src/main/java/asia/yulinling/workflow/controller/NoteController.java +++ b/src/main/java/asia/yulinling/workflow/controller/NoteController.java @@ -1,10 +1,26 @@ package asia.yulinling.workflow.controller; +import asia.yulinling.workflow.constant.Status; +import asia.yulinling.workflow.model.ApiResponse; +import asia.yulinling.workflow.model.entity.Note; +import asia.yulinling.workflow.service.NoteService; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @Slf4j -@RequestMapping("/api22") +@RequestMapping("/api") +@RestController +@RequiredArgsConstructor public class NoteController { + private final NoteService noteService; + @PostMapping("/note") + public ApiResponse note() { + Note note = new Note(); + noteService.addNote(note); + return ApiResponse.ofStatus(Status.SUCCESS); + } } diff --git a/src/main/java/asia/yulinling/workflow/model/vo/NoteVO.java b/src/main/java/asia/yulinling/workflow/model/vo/NoteVO.java new file mode 100644 index 0000000..daedb4e --- /dev/null +++ b/src/main/java/asia/yulinling/workflow/model/vo/NoteVO.java @@ -0,0 +1,88 @@ +package asia.yulinling.workflow.model.vo; + +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 笔记VO + *

+ * + * @author yulinling + * @since 2025/8/13 + */ +@Data +public class NoteVO { + Long id; + + /** + * 用户id,外键 + */ + Long userId; + + /** + * 笔记本id,外键 + */ + Long notebookId; + + /** + * 笔记标题 + */ + String title; + + /** + * 笔记本内容 + */ + String content; + + /** + * 笔记本内容预览,截取前200字符 + */ + String previewText; + + /** + * 笔记内容字数统计 + */ + Integer wordCount; + + /** + * 是否置顶显示 + */ + Boolean isPinned; + + /** + * 是否归档(不显示在默认列表中) + */ + Boolean isArchived; + + /** + * 是否标记为收藏 + */ + Boolean isFavorite; + + /** + * 是否需要密码查看 + */ + Boolean passwordProtected; + + /** + * 创建时间 + */ + Date createTime; + + /** + * 更新时间 + */ + Date updateTime; + + /** + * 提醒时间 + */ + Date reminderTime; + + /** + * 笔记封面图片url + */ + String coverImage; +} diff --git a/src/main/java/asia/yulinling/workflow/service/NoteService.java b/src/main/java/asia/yulinling/workflow/service/NoteService.java index fd08f08..6f30235 100644 --- a/src/main/java/asia/yulinling/workflow/service/NoteService.java +++ b/src/main/java/asia/yulinling/workflow/service/NoteService.java @@ -1,5 +1,65 @@ package asia.yulinling.workflow.service; -public interface NoteService { +import asia.yulinling.workflow.dto.request.PageParam; +import asia.yulinling.workflow.dto.response.PageResult; +import asia.yulinling.workflow.model.entity.Note; +import asia.yulinling.workflow.model.vo.NoteVO; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; + +@Transactional +public interface NoteService { + /** + * 添加笔记本 + * + * @param note 笔记 + */ + void addNote(Note note); + + /** + * 删除笔记本 + * + * @param noteId 笔记本id + */ + void deleteNoteById(Long noteId); + + /** + * 更新笔记本 + * + * @param note 笔记本 + */ + void updateNote(Note note); + + /** + * 获取笔记内容 + * + * @param noteId 笔记本id + * @return 结果 + */ + NoteVO getNote(Long noteId); + + /** + * 获取笔记本列表 + * + * @param pageParam 分页参数 + * @return 笔记列表 + */ + PageResult getNoteList(PageParam pageParam); + + /** + * 获取指定用户的笔记本列表 + * + * @param userId 用户id + * @return 笔记本列表 + */ + List getNoteListByUserId(Long userId); + + /** + * 根据笔记Id检测笔记是否存在 + * + * @param noteId 笔记本id + * @return 结果 + */ + boolean isNoteNotExist(Long noteId); } diff --git a/src/main/java/asia/yulinling/workflow/service/UserService.java b/src/main/java/asia/yulinling/workflow/service/UserService.java index 76d9851..25483f5 100644 --- a/src/main/java/asia/yulinling/workflow/service/UserService.java +++ b/src/main/java/asia/yulinling/workflow/service/UserService.java @@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public interface UserService { - boolean checkUserIdExist(Long userId); + boolean isUserIdNoteExist(Long userId); /** * 获取用户列表分页 diff --git a/src/main/java/asia/yulinling/workflow/service/impl/NoteServiceImpl.java b/src/main/java/asia/yulinling/workflow/service/impl/NoteServiceImpl.java index a9cc988..4c7d393 100644 --- a/src/main/java/asia/yulinling/workflow/service/impl/NoteServiceImpl.java +++ b/src/main/java/asia/yulinling/workflow/service/impl/NoteServiceImpl.java @@ -1,10 +1,118 @@ package asia.yulinling.workflow.service.impl; +import asia.yulinling.workflow.dto.request.PageParam; +import asia.yulinling.workflow.dto.response.PageResult; +import asia.yulinling.workflow.exception.ServiceException; +import asia.yulinling.workflow.mapper.NoteMapper; +import asia.yulinling.workflow.model.entity.Note; +import asia.yulinling.workflow.model.vo.NoteVO; import asia.yulinling.workflow.service.NoteService; +import asia.yulinling.workflow.service.NotebookService; +import asia.yulinling.workflow.service.UserService; +import asia.yulinling.workflow.utils.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + +@Slf4j @Service @RequiredArgsConstructor public class NoteServiceImpl implements NoteService { + private final NoteMapper noteMapper; + private final NotebookService notebookService; + private final UserService userService; + + /** + * 添加笔记本 + * + * @param note 笔记 + */ + @Override + public void addNote(Note note) { + if (notebookService.isNotebookNotExist(note.getNotebookId())) { + throw new ServiceException("笔记本不存在"); + } + + int result = noteMapper.insert(note); + + if (result == 0) { + throw new ServiceException("新增笔记失败"); + } + } + + /** + * 删除笔记本 + * + * @param noteId 笔记本id + */ + @Override + public void deleteNoteById(Long noteId) { + if (isNoteNotExist(noteId)) { + throw new ServiceException("笔记不存在"); + } + + int result = noteMapper.deleteById(noteId); + + if (result == 0) { + throw new ServiceException("删除笔记失败"); + } + } + + /** + * 更新笔记本 + * + * @param note 笔记本 + */ + @Override + public void updateNote(Note note) { + if (isNoteNotExist(note.getId())) { + throw new ServiceException("笔记不存在"); + } + + int result = noteMapper.updateById(note); + if (result == 0) { + throw new ServiceException("更新笔记成功"); + } + } + + @Override + public NoteVO getNote(Long noteId) { + Note note = noteMapper.selectById(noteId); + NoteVO noteVO = new NoteVO(); + BeanUtils.copyProperties(note, noteVO); + return noteVO; + } + + @Override + public PageResult getNoteList(PageParam pageParam) { + Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); + Page pageResult = noteMapper.selectPage(page, null); + List noteVOList = new ArrayList<>(); + for (Note note : pageResult.getRecords()) { + NoteVO noteVO = new NoteVO(); + BeanUtils.copyProperties(note, noteVO); + noteVOList.add(noteVO); + } + return PageUtil.buildPageResult(pageResult, noteVOList); + } + + @Override + public List getNoteListByUserId(Long userId) { + if (userService.isUserIdNoteExist(userId)) { + throw new ServiceException("用户不存在"); + } + + return noteMapper.selectList(new LambdaQueryWrapper().eq(Note::getUserId, userId)); + } + + @Override + public boolean isNoteNotExist(Long noteId) { + return noteMapper.exists(new LambdaQueryWrapper().eq(Note::getId, noteId)); + } } diff --git a/src/main/java/asia/yulinling/workflow/service/impl/NotebookServiceImpl.java b/src/main/java/asia/yulinling/workflow/service/impl/NotebookServiceImpl.java index 025b948..ad2a8b1 100644 --- a/src/main/java/asia/yulinling/workflow/service/impl/NotebookServiceImpl.java +++ b/src/main/java/asia/yulinling/workflow/service/impl/NotebookServiceImpl.java @@ -29,7 +29,7 @@ public class NotebookServiceImpl implements NotebookService { @Override public void addNotebook(Notebook notebook) { - if (userService.checkUserIdExist(notebook.getUserId())) { + if (userService.isUserIdNoteExist(notebook.getUserId())) { throw new ServiceException("用户不存在"); } @@ -42,7 +42,7 @@ public class NotebookServiceImpl implements NotebookService { @Override public void deleteNotebookById(Long notebookId) { - if (userService.checkUserIdExist(notebookId)) { + if (isNotebookNotExist(notebookId)) { throw new ServiceException("笔记本不存在"); } @@ -54,7 +54,7 @@ public class NotebookServiceImpl implements NotebookService { @Override public void updateNotebook(Notebook notebook) { - if (userService.checkUserIdExist(notebook.getUserId())) { + if (userService.isUserIdNoteExist(notebook.getUserId())) { throw new ServiceException("用户不存在"); } @@ -112,7 +112,7 @@ public class NotebookServiceImpl implements NotebookService { */ @Override public List getNotebookListByUserId(Long userId) { - if (userService.checkUserIdExist(userId)) { + if (userService.isUserIdNoteExist(userId)) { throw new ServiceException("用户不存在"); } diff --git a/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java b/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java index 6f07bc4..ffe6ca5 100644 --- a/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java +++ b/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java @@ -56,7 +56,7 @@ public class UserServiceImpl implements UserService { * @return 结果 */ @Override - public boolean checkUserIdExist(Long userId) { + public boolean isUserIdNoteExist(Long userId) { return !userMapper.exists(new LambdaQueryWrapper().eq(User::getId, userId)); }