From 4260b4e02806c9c4dcdd2b09375ee8122b220b10 Mon Sep 17 00:00:00 2001 From: LingandRX Date: Thu, 8 May 2025 23:09:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(service):=20=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8E=A5=E5=8F=A3=E5=92=8C=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 CollectionNoteService、CollectionService、CommentService等多个服务接口 - 实现 CategoryService、NoteLikeService等多个服务类 - 添加事务注解以确保数据一致性- 新增 StatisticQueryParam 类用于统计查询参数 --- .../dto/statistic/StatisticQueryParam.java | 18 +++++++ .../service/CategoryService.java | 2 + .../service/CollectionNoteService.java | 7 +++ .../service/CollectionService.java | 20 ++++++++ .../copykamanotes/service/CommentService.java | 22 +++++++++ .../copykamanotes/service/MessageService.java | 13 +++++ .../service/NoteCommentService.java | 12 +++++ .../service/NoteLikeService.java | 9 ++++ .../service/QuestionListItemService.java | 21 ++++++++ .../service/QuestionListService.java | 23 +++++++++ .../service/QuestionService.java | 28 +++++++++++ .../copykamanotes/service/SearchService.java | 11 +++++ .../service/StatisticService.java | 10 ++++ .../impl/CollectionNoteServiceImpl.java | 23 +++++++++ .../service/impl/NoteLikeServiceImpl.java | 19 +++++-- .../service/impl/QuestionServiceImpl.java | 49 +++++++++++++++++++ 16 files changed, 284 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/example/copykamanotes/model/dto/statistic/StatisticQueryParam.java create mode 100644 src/main/java/com/example/copykamanotes/service/impl/CollectionNoteServiceImpl.java diff --git a/src/main/java/com/example/copykamanotes/model/dto/statistic/StatisticQueryParam.java b/src/main/java/com/example/copykamanotes/model/dto/statistic/StatisticQueryParam.java new file mode 100644 index 0000000..8347cd8 --- /dev/null +++ b/src/main/java/com/example/copykamanotes/model/dto/statistic/StatisticQueryParam.java @@ -0,0 +1,18 @@ +package com.example.copykamanotes.model.dto.statistic; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +@Data +public class StatisticQueryParam { + @NotNull(message = "page 不能为空") + @Min(value = 1, message = "page 必须为正整数") + private Integer page; + + @NotNull(message = "page 不能为空") + @Min(value = 1, message = "page 必须为正整数") + private Integer pageSize; +} + diff --git a/src/main/java/com/example/copykamanotes/service/CategoryService.java b/src/main/java/com/example/copykamanotes/service/CategoryService.java index 36835df..2d0376c 100644 --- a/src/main/java/com/example/copykamanotes/service/CategoryService.java +++ b/src/main/java/com/example/copykamanotes/service/CategoryService.java @@ -6,9 +6,11 @@ import com.example.copykamanotes.model.dto.category.CreateCategoryBody; import com.example.copykamanotes.model.dto.category.UpdateCategoryBody; import com.example.copykamanotes.model.vo.category.CategoryVO; import com.example.copykamanotes.model.vo.category.CreateCategoryVO; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +@Transactional public interface CategoryService { /** * 构建分类树 diff --git a/src/main/java/com/example/copykamanotes/service/CollectionNoteService.java b/src/main/java/com/example/copykamanotes/service/CollectionNoteService.java index 4c6f87a..49e78af 100644 --- a/src/main/java/com/example/copykamanotes/service/CollectionNoteService.java +++ b/src/main/java/com/example/copykamanotes/service/CollectionNoteService.java @@ -1,4 +1,11 @@ package com.example.copykamanotes.service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Set; + +@Transactional public interface CollectionNoteService { + Set findUserCollectionNoteIds(Long userId, List noteIds); } diff --git a/src/main/java/com/example/copykamanotes/service/CollectionService.java b/src/main/java/com/example/copykamanotes/service/CollectionService.java index 1dd9cf3..5e364f4 100644 --- a/src/main/java/com/example/copykamanotes/service/CollectionService.java +++ b/src/main/java/com/example/copykamanotes/service/CollectionService.java @@ -1,4 +1,24 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.collection.CollectionQueryParams; +import com.example.copykamanotes.model.dto.collection.CreateCollectionBody; +import com.example.copykamanotes.model.dto.collection.UpdateCollectionBody; +import com.example.copykamanotes.model.entity.Collection; +import com.example.copykamanotes.model.vo.collection.CollectionVO; +import com.example.copykamanotes.model.vo.collection.CreateCollectionVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface CollectionService { + ApiResponse> getCollection(CollectionQueryParams queryParams); + + ApiResponse createCollection(CreateCollectionBody createCollectionBody); + + ApiResponse deleteCollection(Integer id); + + ApiResponse batchModifyCollection(UpdateCollectionBody updateCollectionBody); } diff --git a/src/main/java/com/example/copykamanotes/service/CommentService.java b/src/main/java/com/example/copykamanotes/service/CommentService.java index 5759462..879cb34 100644 --- a/src/main/java/com/example/copykamanotes/service/CommentService.java +++ b/src/main/java/com/example/copykamanotes/service/CommentService.java @@ -1,4 +1,26 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.comment.CommentQueryParams; +import com.example.copykamanotes.model.dto.comment.CreateCommentRequest; +import com.example.copykamanotes.model.dto.comment.UpdateCommentRequest; +import com.example.copykamanotes.model.vo.comment.CommentVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface CommentService { + ApiResponse createComment(CreateCommentRequest createCommentRequest); + + ApiResponse updateComment(Integer id, UpdateCommentRequest updateCommentRequest); + + ApiResponse deleteComment(Integer id); + + ApiResponse> getComments(CommentQueryParams params); + + ApiResponse likeComment(Integer commentId); + + ApiResponse unlikeComment(Integer commentId); } diff --git a/src/main/java/com/example/copykamanotes/service/MessageService.java b/src/main/java/com/example/copykamanotes/service/MessageService.java index 124c67f..0fdddf5 100644 --- a/src/main/java/com/example/copykamanotes/service/MessageService.java +++ b/src/main/java/com/example/copykamanotes/service/MessageService.java @@ -1,4 +1,17 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.vo.message.UnreadCountByType; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface MessageService { + ApiResponse deleteMessage(Integer id); + + ApiResponse getUnreadMessageCount(); + + ApiResponse> getUnreadMessageCountByType(); } diff --git a/src/main/java/com/example/copykamanotes/service/NoteCommentService.java b/src/main/java/com/example/copykamanotes/service/NoteCommentService.java index e6b8f3f..a58b1b5 100644 --- a/src/main/java/com/example/copykamanotes/service/NoteCommentService.java +++ b/src/main/java/com/example/copykamanotes/service/NoteCommentService.java @@ -1,4 +1,16 @@ package com.example.copykamanotes.service; + +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.entity.NoteComment; + +import java.util.List; + public interface NoteCommentService { + ApiResponse createComment(Integer noteId, String content); + + ApiResponse deleteComment(Integer commentId); + + ApiResponse> getComments(Integer noteId); } diff --git a/src/main/java/com/example/copykamanotes/service/NoteLikeService.java b/src/main/java/com/example/copykamanotes/service/NoteLikeService.java index 7d3aca9..f39c523 100644 --- a/src/main/java/com/example/copykamanotes/service/NoteLikeService.java +++ b/src/main/java/com/example/copykamanotes/service/NoteLikeService.java @@ -1,8 +1,17 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import org.springframework.transaction.annotation.Transactional; + import java.util.List; import java.util.Set; +@Transactional public interface NoteLikeService { Set findUserLikedNoteIds(Long userId, List noteIds); + + ApiResponse likeNote(Integer noteId); + + ApiResponse unlikeNote(Integer noteId); } diff --git a/src/main/java/com/example/copykamanotes/service/QuestionListItemService.java b/src/main/java/com/example/copykamanotes/service/QuestionListItemService.java index adbeaa6..adb59c4 100644 --- a/src/main/java/com/example/copykamanotes/service/QuestionListItemService.java +++ b/src/main/java/com/example/copykamanotes/service/QuestionListItemService.java @@ -1,4 +1,25 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.questionListItem.CreateQuestionListItemBody; +import com.example.copykamanotes.model.dto.questionListItem.QuestionListItemQueryParams; +import com.example.copykamanotes.model.dto.questionListItem.SortQuestionListItemBody; +import com.example.copykamanotes.model.vo.questionListItem.CreateQuestionListItemVO; +import com.example.copykamanotes.model.vo.questionListItem.QuestionListItemUserVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface QuestionListItemService { + ApiResponse> useGetQuestionListItemUserVO(QuestionListItemQueryParams questionListItemQueryParams); + + ApiResponse> getQuestionListItem(Integer questionListId); + + ApiResponse createQuestionListItem(CreateQuestionListItemBody createQuestionListItemBody); + + ApiResponse deleteQuestionListItem(Integer questionListId, Integer questionId); + + ApiResponse sortQuestionListItem(SortQuestionListItemBody body); } diff --git a/src/main/java/com/example/copykamanotes/service/QuestionListService.java b/src/main/java/com/example/copykamanotes/service/QuestionListService.java index 35a7caa..1796b5f 100644 --- a/src/main/java/com/example/copykamanotes/service/QuestionListService.java +++ b/src/main/java/com/example/copykamanotes/service/QuestionListService.java @@ -1,4 +1,27 @@ package com.example.copykamanotes.service; + +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.questionList.CreateQuestionListBody; +import com.example.copykamanotes.model.dto.questionList.UpdateQuestionListBody; +import com.example.copykamanotes.model.entity.Question; +import com.example.copykamanotes.model.entity.QuestionList; +import com.example.copykamanotes.model.vo.questionList.CreateQuestionListVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface QuestionListService { + + ApiResponse getQuestionList(Integer questionListId); + + ApiResponse> getQuestionLists(); + + ApiResponse createQuestionList(CreateQuestionListBody body); + + ApiResponse deleteQuestionList(Integer questionListId); + + ApiResponse updateQuestionList(Integer questionListId, UpdateQuestionListBody body); } diff --git a/src/main/java/com/example/copykamanotes/service/QuestionService.java b/src/main/java/com/example/copykamanotes/service/QuestionService.java index 32ebd27..4fcf4b5 100644 --- a/src/main/java/com/example/copykamanotes/service/QuestionService.java +++ b/src/main/java/com/example/copykamanotes/service/QuestionService.java @@ -1,10 +1,38 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.question.CreateQuestionBody; +import com.example.copykamanotes.model.dto.question.QuestionQueryParam; +import com.example.copykamanotes.model.dto.question.SearchQuestionBody; +import com.example.copykamanotes.model.dto.question.UpdateQuestionBody; import com.example.copykamanotes.model.entity.Question; +import com.example.copykamanotes.model.vo.question.CreateQuestionVO; +import com.example.copykamanotes.model.vo.question.QuestionNoteVO; +import com.example.copykamanotes.model.vo.question.QuestionVO; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; +@Transactional public interface QuestionService { + + Question findById(Integer questionId); + Map getQuestionMapByIds(List questionIds); + + ApiResponse> getQuestions(QuestionQueryParam queryParam); + + ApiResponse createQuestion(CreateQuestionBody body); + + ApiResponse updateQuestion(Integer questionId, UpdateQuestionBody body); + + ApiResponse deleteQuestion(Integer questionId); + + ApiResponse> userGetQuestions(QuestionQueryParam queryParam); + + ApiResponse userGetQuestion(Integer questionId); + + ApiResponse> searchQuestion(SearchQuestionBody body); } diff --git a/src/main/java/com/example/copykamanotes/service/SearchService.java b/src/main/java/com/example/copykamanotes/service/SearchService.java index be21448..5b359a6 100644 --- a/src/main/java/com/example/copykamanotes/service/SearchService.java +++ b/src/main/java/com/example/copykamanotes/service/SearchService.java @@ -1,4 +1,15 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.entity.Note; +import com.example.copykamanotes.model.entity.User; + +import java.util.List; + public interface SearchService { + ApiResponse> searchNote(String keyword, int page, int pageSize); + + ApiResponse> searchUsers(String keyword, int page, int pageSize); + + ApiResponse> searchNotesByTag(String keyword, int page, int pageSize); } diff --git a/src/main/java/com/example/copykamanotes/service/StatisticService.java b/src/main/java/com/example/copykamanotes/service/StatisticService.java index 0fb1392..e4e1904 100644 --- a/src/main/java/com/example/copykamanotes/service/StatisticService.java +++ b/src/main/java/com/example/copykamanotes/service/StatisticService.java @@ -1,4 +1,14 @@ package com.example.copykamanotes.service; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.dto.statistic.StatisticQueryParam; +import com.example.copykamanotes.model.entity.Statistic; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional public interface StatisticService { + + ApiResponse> getStatistics(StatisticQueryParam queryParam); } diff --git a/src/main/java/com/example/copykamanotes/service/impl/CollectionNoteServiceImpl.java b/src/main/java/com/example/copykamanotes/service/impl/CollectionNoteServiceImpl.java new file mode 100644 index 0000000..a8570d5 --- /dev/null +++ b/src/main/java/com/example/copykamanotes/service/impl/CollectionNoteServiceImpl.java @@ -0,0 +1,23 @@ +package com.example.copykamanotes.service.impl; + +import com.example.copykamanotes.mapper.CollectionNoteMapper; +import com.example.copykamanotes.service.CollectionNoteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Service +public class CollectionNoteServiceImpl implements CollectionNoteService { + + @Autowired + private CollectionNoteMapper collectionNoteMapper; + + @Override + public Set findUserCollectionNoteIds(Long userId, List noteIds) { + List userCollectedNoteIds = collectionNoteMapper.findUserCollectedNoteIds(userId, null); + return new HashSet<>(userCollectedNoteIds); + } +} diff --git a/src/main/java/com/example/copykamanotes/service/impl/NoteLikeServiceImpl.java b/src/main/java/com/example/copykamanotes/service/impl/NoteLikeServiceImpl.java index 8e3edd5..2154bd4 100644 --- a/src/main/java/com/example/copykamanotes/service/impl/NoteLikeServiceImpl.java +++ b/src/main/java/com/example/copykamanotes/service/impl/NoteLikeServiceImpl.java @@ -1,8 +1,10 @@ package com.example.copykamanotes.service.impl; import com.example.copykamanotes.mapper.NoteLikeMapper; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; import com.example.copykamanotes.service.NoteLikeService; -import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashSet; @@ -10,9 +12,10 @@ import java.util.List; import java.util.Set; @Service -@RequiredArgsConstructor public class NoteLikeServiceImpl implements NoteLikeService { - private final NoteLikeMapper noteLikeMapper; + + @Autowired + private NoteLikeMapper noteLikeMapper; @Override @@ -20,4 +23,14 @@ public class NoteLikeServiceImpl implements NoteLikeService { List likedIds = noteLikeMapper.findUserLikedNoteIds(userId, noteIds); return new HashSet<>(likedIds); } + + @Override + public ApiResponse likeNote(Integer noteId) { + return null; + } + + @Override + public ApiResponse unlikeNote(Integer noteId) { + return null; + } } diff --git a/src/main/java/com/example/copykamanotes/service/impl/QuestionServiceImpl.java b/src/main/java/com/example/copykamanotes/service/impl/QuestionServiceImpl.java index dbcf0ba..bd8bdd3 100644 --- a/src/main/java/com/example/copykamanotes/service/impl/QuestionServiceImpl.java +++ b/src/main/java/com/example/copykamanotes/service/impl/QuestionServiceImpl.java @@ -1,6 +1,15 @@ package com.example.copykamanotes.service.impl; +import com.example.copykamanotes.model.base.ApiResponse; +import com.example.copykamanotes.model.base.EmptyVO; +import com.example.copykamanotes.model.dto.question.CreateQuestionBody; +import com.example.copykamanotes.model.dto.question.QuestionQueryParam; +import com.example.copykamanotes.model.dto.question.SearchQuestionBody; +import com.example.copykamanotes.model.dto.question.UpdateQuestionBody; import com.example.copykamanotes.model.entity.Question; +import com.example.copykamanotes.model.vo.question.CreateQuestionVO; +import com.example.copykamanotes.model.vo.question.QuestionNoteVO; +import com.example.copykamanotes.model.vo.question.QuestionVO; import com.example.copykamanotes.service.QuestionService; import org.springframework.stereotype.Service; @@ -9,7 +18,47 @@ import java.util.Map; @Service public class QuestionServiceImpl implements QuestionService { + @Override + public Question findById(Integer questionId) { + return null; + } + public Map getQuestionMapByIds(List questionIds) { return null; } + + @Override + public ApiResponse> getQuestions(QuestionQueryParam queryParam) { + return null; + } + + @Override + public ApiResponse createQuestion(CreateQuestionBody body) { + return null; + } + + @Override + public ApiResponse updateQuestion(Integer questionId, UpdateQuestionBody body) { + return null; + } + + @Override + public ApiResponse deleteQuestion(Integer questionId) { + return null; + } + + @Override + public ApiResponse> userGetQuestions(QuestionQueryParam queryParam) { + return null; + } + + @Override + public ApiResponse userGetQuestion(Integer questionId) { + return null; + } + + @Override + public ApiResponse> searchQuestion(SearchQuestionBody body) { + return null; + } }