From 230864fa43d5aa8f195658003ab804ae6bb33240 Mon Sep 17 00:00:00 2001 From: Timi Date: Thu, 15 Jan 2026 13:03:57 +0800 Subject: [PATCH] fix comment page --- .../blog/entity/CommentRemindQueue.java | 4 +- .../CommentRemindQueueServiceImplement.java | 8 +- .../common/controller/CommentController.java | 20 +-- .../common/controller/CommonController.java | 44 ++++++ .../common/controller/UserController.java | 26 ++-- .../api/modules/common/entity/Comment.java | 36 ++++- .../modules/common/entity/CommentReply.java | 16 ++- .../modules/common/mapper/CommentMapper.java | 28 ---- .../mapper/CommentRemindQueueMapper.java | 7 - .../common/mapper/CommentReplyMapper.java | 21 --- .../common/service/CommentReplyService.java | 12 +- .../common/service/CommentService.java | 22 +-- .../CommentReplyServiceImplement.java | 72 ++++------ .../implement/CommentServiceImplement.java | 130 +++++++----------- .../implement/UserServiceImplement.java | 17 ++- .../api/modules/common/task/EmailTask.java | 5 +- .../common/vo/comment/CommentReplyPage.java | 41 ------ .../common/vo/comment/CommentReplyView.java | 28 ---- .../common/vo/comment/CommentView.java | 34 ----- .../common/vo/comment/UserCommentPage.java | 18 --- .../api/modules/git/vo/issue/CommentPage.java | 21 --- .../resources/mapper/common/CommentMapper.xml | 120 +--------------- 22 files changed, 218 insertions(+), 512 deletions(-) delete mode 100644 src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyPage.java delete mode 100644 src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyView.java delete mode 100644 src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentView.java delete mode 100644 src/main/java/com/imyeyu/api/modules/common/vo/comment/UserCommentPage.java delete mode 100644 src/main/java/com/imyeyu/api/modules/git/vo/issue/CommentPage.java diff --git a/src/main/java/com/imyeyu/api/modules/blog/entity/CommentRemindQueue.java b/src/main/java/com/imyeyu/api/modules/blog/entity/CommentRemindQueue.java index ad2a12d..2e9dfa4 100644 --- a/src/main/java/com/imyeyu/api/modules/blog/entity/CommentRemindQueue.java +++ b/src/main/java/com/imyeyu/api/modules/blog/entity/CommentRemindQueue.java @@ -1,6 +1,6 @@ package com.imyeyu.api.modules.blog.entity; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; +import com.imyeyu.api.modules.common.entity.CommentReply; import com.imyeyu.spring.annotation.table.AutoUUID; import com.imyeyu.spring.annotation.table.Id; import lombok.Data; @@ -32,5 +32,5 @@ public class CommentRemindQueue { private Long replyId; - private CommentReplyView reply; + private CommentReply reply; } diff --git a/src/main/java/com/imyeyu/api/modules/blog/service/implement/CommentRemindQueueServiceImplement.java b/src/main/java/com/imyeyu/api/modules/blog/service/implement/CommentRemindQueueServiceImplement.java index 6460c50..f13bd11 100644 --- a/src/main/java/com/imyeyu/api/modules/blog/service/implement/CommentRemindQueueServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/blog/service/implement/CommentRemindQueueServiceImplement.java @@ -37,12 +37,16 @@ public class CommentRemindQueueServiceImplement extends AbstractEntityService list(@Valid @RequestBody CommentPage commentPage) { - return service.pageByBizId(commentPage); + public PageResult list(@Valid @RequestBody Page page) { + return service.page(page); } /** @@ -77,9 +74,14 @@ public class CommentController { */ @RequestRateLimit @RequestMapping("/reply/list") - public PageResult pageCommentReplies(@Valid @RequestBody CommentReplyPage page) { + public PageResult pageReplies(@Valid @RequestBody Page page) { // 通用接口,只允许查询评论的回复 - page.setBizType(CommentReplyPage.BizType.COMMENT); - return replyService.pageByBizType(page); + CommentReply example = new CommentReply(); + if (page.getEqualsExample() != null) { + example.setCommentId(page.getEqualsExample().getCommentId()); + } + page.setEqualsExample(example); + page.setLikesExample(null); + return replyService.page(page); } } diff --git a/src/main/java/com/imyeyu/api/modules/common/controller/CommonController.java b/src/main/java/com/imyeyu/api/modules/common/controller/CommonController.java index aa50490..416bc2d 100644 --- a/src/main/java/com/imyeyu/api/modules/common/controller/CommonController.java +++ b/src/main/java/com/imyeyu/api/modules/common/controller/CommonController.java @@ -11,12 +11,14 @@ import com.imyeyu.api.modules.common.entity.Task; import com.imyeyu.api.modules.common.entity.Template; import com.imyeyu.api.modules.common.entity.Version; import com.imyeyu.api.modules.common.service.AttachmentService; +import com.imyeyu.api.modules.common.service.ClipboardService; import com.imyeyu.api.modules.common.service.FeedbackService; import com.imyeyu.api.modules.common.service.SettingService; import com.imyeyu.api.modules.common.service.TaskService; import com.imyeyu.api.modules.common.service.TempFileService; import com.imyeyu.api.modules.common.service.TemplateService; import com.imyeyu.api.modules.common.service.VersionService; +import com.imyeyu.api.modules.common.vo.ClipboardRequest; import com.imyeyu.api.modules.common.vo.FeedbackRequest; import com.imyeyu.api.modules.common.vo.TempFileResponse; import com.imyeyu.api.modules.system.util.ResourceHandler; @@ -45,6 +47,7 @@ import lombok.Cleanup; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.tika.Tika; +import org.springframework.http.MediaType; import org.springframework.data.mongodb.gridfs.GridFsResource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -55,6 +58,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.yaml.snakeyaml.Yaml; import javax.imageio.ImageIO; @@ -89,6 +93,7 @@ public class CommonController { private final TemplateService templateService; private final TempFileService tempFileService; private final AttachmentService attachmentService; + private final ClipboardService clipboardService; private final Gson gson; private final Yaml yaml; @@ -102,6 +107,45 @@ public class CommonController { return "IT WORKING! " + TimiSpring.getRequestIP(); } + /** + * 获取共享剪切板内容 + * + * @param id 会话 ID + * @return 剪切板内容 + */ + @AOPLog + @RequestRateLimit + @GetMapping("/clipboard/{id}") + public String clipboardGet(@Valid @NotBlank @PathVariable("id") String id) { + return clipboardService.getContent(id); + } + + /** + * 设置共享剪切板内容 + * + * @param id 会话 ID + * @param request 请求内容 + */ + @AOPLog + @RequestRateLimit + @PostMapping("/clipboard/{id}") + public void clipboardSet(@Valid @NotBlank @PathVariable("id") String id, @Valid @RequestBody ClipboardRequest request) { + clipboardService.setContent(id, request.getContent()); + } + + /** + * 订阅共享剪切板实时更新 + * + * @param id 会话 ID + * @return SSE 发射器 + */ + @AOPLog + @IgnoreGlobalReturn + @GetMapping(value = "/clipboard/stream/{id}", produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public SseEmitter clipboardStream(@Valid @NotBlank @PathVariable("id") String id) { + return clipboardService.subscribe(id); + } + /** * 获取验证码 * diff --git a/src/main/java/com/imyeyu/api/modules/common/controller/UserController.java b/src/main/java/com/imyeyu/api/modules/common/controller/UserController.java index 591efe0..95f0808 100644 --- a/src/main/java/com/imyeyu/api/modules/common/controller/UserController.java +++ b/src/main/java/com/imyeyu/api/modules/common/controller/UserController.java @@ -1,11 +1,10 @@ package com.imyeyu.api.modules.common.controller; -import com.imyeyu.java.TimiJava; -import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.api.annotation.CaptchaValid; import com.imyeyu.api.annotation.EnableSetting; import com.imyeyu.api.bean.CaptchaFrom; import com.imyeyu.api.modules.common.bean.SettingKey; +import com.imyeyu.api.modules.common.entity.Comment; import com.imyeyu.api.modules.common.entity.CommentReply; import com.imyeyu.api.modules.common.entity.UserConfig; import com.imyeyu.api.modules.common.entity.UserPrivacy; @@ -15,10 +14,6 @@ import com.imyeyu.api.modules.common.service.UserConfigService; import com.imyeyu.api.modules.common.service.UserPrivacyService; import com.imyeyu.api.modules.common.service.UserProfileService; import com.imyeyu.api.modules.common.service.UserService; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyPage; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; -import com.imyeyu.api.modules.common.vo.comment.CommentView; -import com.imyeyu.api.modules.common.vo.comment.UserCommentPage; import com.imyeyu.api.modules.common.vo.user.EmailVerifyCallbackRequest; import com.imyeyu.api.modules.common.vo.user.LoginRequest; import com.imyeyu.api.modules.common.vo.user.LoginResponse; @@ -27,11 +22,14 @@ import com.imyeyu.api.modules.common.vo.user.UpdatePasswordByKeyRequest; import com.imyeyu.api.modules.common.vo.user.UpdatePasswordRequest; import com.imyeyu.api.modules.common.vo.user.UserRequest; import com.imyeyu.api.modules.common.vo.user.UserView; +import com.imyeyu.java.TimiJava; +import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.spring.annotation.AOPLog; import com.imyeyu.spring.annotation.RequestRateLimit; import com.imyeyu.spring.annotation.RequestSingleParam; import com.imyeyu.spring.annotation.RequiredToken; import com.imyeyu.spring.bean.CaptchaData; +import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.bean.PageResult; import com.imyeyu.utils.Time; import jakarta.validation.Valid; @@ -266,9 +264,11 @@ public class UserController implements TimiJava { @RequiredToken @RequestRateLimit @PostMapping("/comment/list") - public PageResult listComment(@Valid @RequestBody UserCommentPage page) { - page.setUserId(service.getLoginUser().getId()); - return commentService.pageByUserId(page); + public PageResult listComment(@Valid @RequestBody Page page) { + Comment example = new Comment(); + example.setUserId(service.getLoginUser().getId()); + page.setEqualsExample(example); + return commentService.page(page); } @AOPLog @@ -287,9 +287,11 @@ public class UserController implements TimiJava { @RequiredToken @RequestRateLimit @PostMapping("/comment/reply/list") - public PageResult listCommentReply(@Valid @RequestBody CommentReplyPage page) { - page.setBizId(service.getLoginUser().getId()); - return commentReplyService.pageByBizType(page); + public PageResult listCommentReply(@Valid @RequestBody Page page) { + CommentReply example = new CommentReply(); + example.setReceiverId(service.getLoginUser().getId()); + page.setEqualsExample(example); + return commentReplyService.page(page); } @AOPLog diff --git a/src/main/java/com/imyeyu/api/modules/common/entity/Comment.java b/src/main/java/com/imyeyu/api/modules/common/entity/Comment.java index 4f0d960..df4315c 100644 --- a/src/main/java/com/imyeyu/api/modules/common/entity/Comment.java +++ b/src/main/java/com/imyeyu/api/modules/common/entity/Comment.java @@ -1,5 +1,14 @@ package com.imyeyu.api.modules.common.entity; +import com.imyeyu.api.modules.blog.entity.Article; +import com.imyeyu.api.modules.blog.service.implement.ArticleServiceImplement; +import com.imyeyu.api.modules.common.bean.CommentSupport; +import com.imyeyu.api.modules.common.vo.user.UserView; +import com.imyeyu.api.modules.git.bean.gitea.Repository; +import com.imyeyu.api.modules.git.service.implement.IssueServiceImplement; +import com.imyeyu.api.modules.git.service.implement.MergeServiceImplement; +import com.imyeyu.spring.annotation.table.Transient; +import com.imyeyu.spring.entity.Entity; import com.imyeyu.spring.service.GettableService; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; @@ -7,11 +16,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import com.imyeyu.api.modules.blog.service.implement.ArticleServiceImplement; -import com.imyeyu.api.modules.common.bean.CommentSupport; -import com.imyeyu.api.modules.git.service.implement.IssueServiceImplement; -import com.imyeyu.api.modules.git.service.implement.MergeServiceImplement; -import com.imyeyu.spring.entity.Entity; + +import java.util.List; /** * 评论 @@ -64,4 +70,24 @@ public class Comment extends Entity { /** 发送用户 IP */ private String ip; + + /** 回复数量 */ + @Transient + private long repliesLength; + + /** 发送用户 */ + @Transient + private UserView user; + + /** 关联文章 */ + @Transient + private Article article; + + /** 关联仓库 */ + @Transient + private Repository repository; + + /** 回复列表 */ + @Transient + private List replies; } diff --git a/src/main/java/com/imyeyu/api/modules/common/entity/CommentReply.java b/src/main/java/com/imyeyu/api/modules/common/entity/CommentReply.java index c72c663..ddada70 100644 --- a/src/main/java/com/imyeyu/api/modules/common/entity/CommentReply.java +++ b/src/main/java/com/imyeyu/api/modules/common/entity/CommentReply.java @@ -1,9 +1,11 @@ package com.imyeyu.api.modules.common.entity; +import com.imyeyu.api.modules.common.vo.user.UserView; +import com.imyeyu.spring.annotation.table.Transient; +import com.imyeyu.spring.entity.Entity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import com.imyeyu.spring.entity.Entity; /** * 评论回复 @@ -42,4 +44,16 @@ public class CommentReply extends Entity { /** 被回复用户忽略该回复的时间 */ private Long ignoredAt; + + /** 所属评论 */ + @Transient + private Comment comment; + + /** 发送用户 */ + @Transient + private UserView sender; + + /** 回复用户 */ + @Transient + private UserView receiver; } diff --git a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentMapper.java b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentMapper.java index 8105b94..de30895 100644 --- a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentMapper.java +++ b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentMapper.java @@ -1,15 +1,9 @@ package com.imyeyu.api.modules.common.mapper; import com.imyeyu.api.modules.common.entity.Comment; -import com.imyeyu.api.modules.common.vo.comment.CommentView; -import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.mapper.BaseMapper; -import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; -import java.util.LinkedHashMap; -import java.util.List; - /** * 评论 * @@ -18,30 +12,8 @@ import java.util.List; */ public interface CommentMapper extends BaseMapper { - @Override - long countByPage(Page page); - - @Override - List selectByPage(Page page); - - @Select("SELECT * FROM comment WHERE id = #{id}" + NOT_DELETE) - Comment select(Long id); - - @Update("UPDATE comment SET deleted_at = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) WHERE id = #{id}") - @Override - void delete(Long id); - - @Select("SELECT COUNT(1) FROM comment WHERE biz_type = #{bizType} AND biz_id = #{bizId}" + NOT_DELETE) - long count(Comment.BizType bizType, Long bizId); - long countAll(Comment.BizType bizType, Long bizId); - List list(Comment.BizType bizType, Long bizId, Long offset, long limit, LinkedHashMap orderMap); - - long countByUserId(Long userId); - - List listByUserId(Long userId, Long offset, long limit, LinkedHashMap orderMap); - @Update("UPDATE comment SET deleted_at = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) WHERE user_id = #{userId} ") void deleteByUserId(Long userId); } diff --git a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentRemindQueueMapper.java b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentRemindQueueMapper.java index 9555d73..89db088 100644 --- a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentRemindQueueMapper.java +++ b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentRemindQueueMapper.java @@ -2,7 +2,6 @@ package com.imyeyu.api.modules.common.mapper; import com.imyeyu.api.modules.blog.entity.CommentRemindQueue; import com.imyeyu.spring.mapper.BaseMapper; -import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -17,10 +16,4 @@ public interface CommentRemindQueueMapper extends BaseMapper listByUserId(Long userId); - - @Delete("DELETE FROM comment_remind_queue WHERE user_id = #{userId}") - void destroyByUserId(Long userId); - - @Delete("DELETE FROM comment_remind_queue WHERE reply_id = #{replyId}") - void destroyByReplyId(Long replyId); } diff --git a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentReplyMapper.java b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentReplyMapper.java index 9c29bb2..315d0bd 100644 --- a/src/main/java/com/imyeyu/api/modules/common/mapper/CommentReplyMapper.java +++ b/src/main/java/com/imyeyu/api/modules/common/mapper/CommentReplyMapper.java @@ -2,13 +2,7 @@ package com.imyeyu.api.modules.common.mapper; import com.imyeyu.api.modules.common.entity.CommentReply; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyPage; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; import com.imyeyu.spring.mapper.BaseMapper; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; /** * 评论回复 @@ -17,19 +11,4 @@ import java.util.List; * @since 2021-08-24 10:36 */ public interface CommentReplyMapper extends BaseMapper { - - @Select("SELECT * FROM comment_reply WHERE sender_id = #{senderId}" + NOT_DELETE) - List listAllBySenderId(Long senderId); - - @Select("SELECT COUNT(1) FROM comment_reply WHERE ${bizType.column} = #{bizId}" + NOT_DELETE) - long countByBizType(CommentReplyPage.BizType bizType, Long bizId); - - @Select("SELECT * FROM comment_reply WHERE ${bizType.column} = #{bizId} AND ignored_at IS NULL" + NOT_DELETE + PAGE) - List listByBizType(CommentReplyPage.BizType bizType, Long bizId, Long offset, long limit); - - @Update("UPDATE comment_reply SET deleted_at = " + UNIX_TIME + " WHERE sender_id = #{userId} OR receiver_id = #{userId}") - void deleteByUserId(Long userId); - - @Update("UPDATE comment_reply SET deleted_at = " + UNIX_TIME + " WHERE comment_id = #{commentId}") - void deleteByCommentId(Long commentId); } diff --git a/src/main/java/com/imyeyu/api/modules/common/service/CommentReplyService.java b/src/main/java/com/imyeyu/api/modules/common/service/CommentReplyService.java index b27e510..49185b7 100644 --- a/src/main/java/com/imyeyu/api/modules/common/service/CommentReplyService.java +++ b/src/main/java/com/imyeyu/api/modules/common/service/CommentReplyService.java @@ -1,13 +1,7 @@ package com.imyeyu.api.modules.common.service; import com.imyeyu.api.modules.common.entity.CommentReply; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyPage; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; -import com.imyeyu.spring.bean.PageResult; -import com.imyeyu.spring.service.CreatableService; -import com.imyeyu.spring.service.DeletableService; -import com.imyeyu.spring.service.GettableService; -import com.imyeyu.spring.service.UpdatableService; +import com.imyeyu.spring.service.BaseService; /** * 评论回复服务 @@ -15,7 +9,5 @@ import com.imyeyu.spring.service.UpdatableService; * @author 夜雨 * @since 2021-08-24 10:33 */ -public interface CommentReplyService extends CreatableService, GettableService, UpdatableService, DeletableService { - - PageResult pageByBizType(CommentReplyPage page); +public interface CommentReplyService extends BaseService { } diff --git a/src/main/java/com/imyeyu/api/modules/common/service/CommentService.java b/src/main/java/com/imyeyu/api/modules/common/service/CommentService.java index 7c070ed..ba56441 100644 --- a/src/main/java/com/imyeyu/api/modules/common/service/CommentService.java +++ b/src/main/java/com/imyeyu/api/modules/common/service/CommentService.java @@ -1,14 +1,7 @@ package com.imyeyu.api.modules.common.service; -import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.api.modules.common.entity.Comment; -import com.imyeyu.api.modules.common.vo.comment.CommentView; -import com.imyeyu.api.modules.common.vo.comment.UserCommentPage; -import com.imyeyu.api.modules.git.vo.issue.CommentPage; -import com.imyeyu.spring.bean.PageResult; -import com.imyeyu.spring.service.CreatableService; -import com.imyeyu.spring.service.DeletableService; -import com.imyeyu.spring.service.GettableService; +import com.imyeyu.spring.service.BaseService; /** * 评论服务 @@ -16,16 +9,5 @@ import com.imyeyu.spring.service.GettableService; * @author 夜雨 * @since 2021-02-23 21:32 */ -public interface CommentService extends CreatableService, GettableService, DeletableService { - - PageResult pageByBizId(CommentPage page); - - /** - * 获取用户评论页面 - * - * @param userCommentPage 页面参数 - * @return 页面列表 - * @throws TimiException 服务异常 - */ - PageResult pageByUserId(UserCommentPage userCommentPage); +public interface CommentService extends BaseService { } diff --git a/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentReplyServiceImplement.java b/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentReplyServiceImplement.java index 23c7fea..20cd703 100644 --- a/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentReplyServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentReplyServiceImplement.java @@ -1,13 +1,8 @@ package com.imyeyu.api.modules.common.service.implement; -import com.imyeyu.java.TimiJava; -import com.imyeyu.java.bean.timi.TimiCode; -import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.api.TimiServerAPI; import com.imyeyu.api.config.dbsource.TimiServerDBConfig; -import com.imyeyu.api.modules.blog.entity.Article; import com.imyeyu.api.modules.blog.entity.CommentRemindQueue; -import com.imyeyu.api.modules.blog.service.ArticleService; import com.imyeyu.api.modules.blog.service.CommentRemindQueueService; import com.imyeyu.api.modules.common.bean.CommentSupport; import com.imyeyu.api.modules.common.entity.Comment; @@ -21,23 +16,21 @@ import com.imyeyu.api.modules.common.service.CommentService; import com.imyeyu.api.modules.common.service.EmailQueueService; import com.imyeyu.api.modules.common.service.UserConfigService; import com.imyeyu.api.modules.common.service.UserService; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyPage; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; -import com.imyeyu.api.modules.common.vo.comment.CommentView; -import com.imyeyu.api.modules.git.service.RepositoryService; +import com.imyeyu.java.TimiJava; +import com.imyeyu.java.bean.timi.TimiCode; +import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.spring.TimiSpring; +import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.bean.PageResult; import com.imyeyu.spring.mapper.BaseMapper; import com.imyeyu.spring.service.AbstractEntityService; import com.imyeyu.spring.service.GettableService; import com.imyeyu.utils.Time; import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.UUID; /** @@ -52,8 +45,6 @@ public class CommentReplyServiceImplement extends AbstractEntityService page(Page page) { + PageResult result = super.page(page); + for (CommentReply reply : result.getList()) { + Comment comment = commentService.get(reply.getCommentId()); + if (TimiJava.isNotEmpty(comment.getUserId())) { + comment.setUser(userService.view(comment.getUserId())); + } + reply.setComment(comment); + if (TimiJava.isNotEmpty(reply.getSenderId())) { + reply.setSender(userService.view(reply.getSenderId())); + } + if (TimiJava.isNotEmpty(reply.getReceiverId())) { + reply.setReceiver(userService.view(reply.getReceiverId())); + } + } + return result; } @Transactional(TimiServerDBConfig.ROLLBACKER) @@ -160,37 +163,10 @@ public class CommentReplyServiceImplement extends AbstractEntityService pageByBizType(CommentReplyPage page) { - PageResult result = new PageResult<>(); - List list = mapper.listByBizType(page.getBizType(), page.getBizId(), page.getOffset(), page.getLimit()); - for (int i = 0; i < list.size(); i++) { - CommentReplyView reply = list.get(i); - CommentView comment = new CommentView(); - BeanUtils.copyProperties(commentService.get(reply.getCommentId()), comment); - if (TimiJava.isNotEmpty(comment.getUserId())) { - comment.setUser(userService.view(comment.getUserId())); - } - switch (comment.getBizType()) { - case ARTICLE -> { - Article article = articleService.get(comment.getBizId()); - article.setData(null); - article.setExtendData(null); - comment.setArticle(article); - } -// case GIT_ISSUE, GIT_MERGE -> comment.setRepository(repositoryService.get(comment.getBizId())); - } - reply.setComment(comment); - - if (TimiJava.isNotEmpty(reply.getSenderId())) { - reply.setSender(userService.view(reply.getSenderId())); - } - if (TimiJava.isNotEmpty(reply.getReceiverId())) { - reply.setReceiver(userService.view(reply.getReceiverId())); - } - } - result.setList(list); - result.setTotal(mapper.countByBizType(page.getBizType(), page.getBizId())); - return result; + public void delete(Long crId) { + super.delete(crId); + commentRemindQueueService.destroyByReplyId(crId); } } diff --git a/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentServiceImplement.java b/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentServiceImplement.java index 22ec875..3c9cd35 100644 --- a/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/common/service/implement/CommentServiceImplement.java @@ -1,12 +1,8 @@ package com.imyeyu.api.modules.common.service.implement; -import com.imyeyu.java.TimiJava; -import com.imyeyu.java.bean.timi.TimiCode; -import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.api.TimiServerAPI; import com.imyeyu.api.config.dbsource.TimiServerDBConfig; -import com.imyeyu.api.modules.blog.entity.Article; -import com.imyeyu.api.modules.blog.service.ArticleService; +import com.imyeyu.api.modules.blog.entity.CommentRemindQueue; import com.imyeyu.api.modules.common.bean.CommentSupport; import com.imyeyu.api.modules.common.entity.Comment; import com.imyeyu.api.modules.common.entity.CommentReply; @@ -16,12 +12,11 @@ import com.imyeyu.api.modules.common.mapper.CommentRemindQueueMapper; import com.imyeyu.api.modules.common.mapper.CommentReplyMapper; import com.imyeyu.api.modules.common.service.CommentService; import com.imyeyu.api.modules.common.service.UserService; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; -import com.imyeyu.api.modules.common.vo.comment.CommentView; -import com.imyeyu.api.modules.common.vo.comment.UserCommentPage; -import com.imyeyu.api.modules.git.service.RepositoryService; -import com.imyeyu.api.modules.git.vo.issue.CommentPage; +import com.imyeyu.java.TimiJava; +import com.imyeyu.java.bean.timi.TimiCode; +import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.spring.TimiSpring; +import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.bean.PageResult; import com.imyeyu.spring.mapper.BaseMapper; import com.imyeyu.spring.service.AbstractEntityService; @@ -31,7 +26,6 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.LinkedHashMap; import java.util.List; /** @@ -45,8 +39,6 @@ import java.util.List; public class CommentServiceImplement extends AbstractEntityService implements CommentService { private final UserService userService; - private final ArticleService articleService; - private final RepositoryService repositoryService; private final CommentMapper mapper; private final CommentReplyMapper replyMapper; @@ -57,6 +49,36 @@ public class CommentServiceImplement extends AbstractEntityService page(Page page) { + PageResult result = super.page(page); + for (Comment comment : result.getList()) { + if (TimiJava.isNotEmpty(comment.getUserId())) { + comment.setUser(userService.view(comment.getUserId())); + } + Page replyPage = new Page<>(); + replyPage.setIndex(0); + replyPage.setSize(6); + { + CommentReply exampleReply = new CommentReply(); + exampleReply.setCommentId(comment.getId()); + replyPage.setEqualsExample(exampleReply); + } + PageResult replyResult = replyMapper.selectPageResult(replyPage); + comment.setReplies(replyResult.getList()); + comment.setRepliesLength(replyResult.getTotal()); + for (CommentReply reply : replyResult.getList()) { + if (TimiJava.isNotEmpty(reply.getSenderId())) { + reply.setSender(userService.view(reply.getSenderId())); + } + if (TimiJava.isNotEmpty(reply.getReceiverId())) { + reply.setReceiver(userService.view(reply.getReceiverId())); + } + } + } + return result; + } + @Transactional(TimiServerDBConfig.ROLLBACKER) @Override public void create(Comment comment) { @@ -83,77 +105,31 @@ public class CommentServiceImplement extends AbstractEntityService replies = replyMapper.listAllBySenderId(user.getId()); - for (int i = 0; i < replies.size(); i++) { - // 移出被回复者的回复提醒队列 - remindQueueMapper.destroyByReplyId(replies.get(i).getId()); - } - replyMapper.deleteByCommentId(cId); - super.delete(cId); - } - - @Override - public PageResult pageByBizId(CommentPage page) { - if (page.getOrderMap() == null) { - page.setOrderMap(new LinkedHashMap<>()); - } - if (page.getOrderMap().isEmpty()) { - page.getOrderMap().put("createdAt", BaseMapper.OrderType.DESC); - } - List list = mapper.list(page.getBizType(), page.getBizId(), page.getOffset(), page.getLimit(), page.getOrderMap()); - for (int i = 0; i < list.size(); i++) { - CommentView comment = list.get(i); - if (TimiJava.isNotEmpty(comment.getUserId())) { - comment.setUser(userService.view(comment.getUserId())); - } - List replies = comment.getReplies(); - for (int j = 0; j < replies.size(); j++) { - CommentReplyView reply = replies.get(j); - if (TimiJava.isNotEmpty(reply.getSenderId())) { - reply.setSender(userService.view(reply.getSenderId())); - } - if (TimiJava.isNotEmpty(reply.getReceiverId())) { - reply.setReceiver(userService.view(reply.getReceiverId())); - } + { + // 移除被回复者的回复提醒队列 + CommentReply example = new CommentReply(); + example.setSenderId(user.getId()); + List replies = replyMapper.selectAllByExample(example); + for (CommentReply reply : replies) { + CommentRemindQueue destroyRemindExample = new CommentRemindQueue(); + destroyRemindExample.setReplyId(reply.getReplyId()); + remindQueueMapper.destroyAllByExample(destroyRemindExample); } } - PageResult result = new PageResult<>(); - result.setList(list); - result.setTotal(mapper.count(page.getBizType(), page.getBizId())); - return result; - } - - @Override - public PageResult pageByUserId(UserCommentPage page) { - if (page.getOrderMap() == null) { - page.setOrderMap(new LinkedHashMap<>()); + { + // 删除回复 + CommentReply example = new CommentReply(); + example.setCommentId(commentId); + replyMapper.deleteAllByExample(example); } - if (page.getOrderMap().isEmpty()) { - page.getOrderMap().put("createdAt", BaseMapper.OrderType.DESC); - } - PageResult result = new PageResult<>(); - result.setList(mapper.listByUserId(page.getUserId(), page.getOffset(), page.getLimit(), page.getOrderMap())); - result.setTotal(mapper.countByUserId(page.getUserId())); - - for (int i = 0; i < result.getList().size(); i++) { - CommentView view = result.getList().get(i); - switch (view.getBizType()) { - case ARTICLE -> { - Article article = articleService.get(view.getBizId()); - article.setData(null); - article.setExtendData(null); - view.setArticle(article); - } -// case GIT_ISSUE, GIT_MERGE -> view.setRepository(repositoryService.get(view.getBizId())); - } - } - return result; + // 删除评论 + super.delete(commentId); } } diff --git a/src/main/java/com/imyeyu/api/modules/common/service/implement/UserServiceImplement.java b/src/main/java/com/imyeyu/api/modules/common/service/implement/UserServiceImplement.java index bdc90ba..c7d70fd 100644 --- a/src/main/java/com/imyeyu/api/modules/common/service/implement/UserServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/common/service/implement/UserServiceImplement.java @@ -1,11 +1,9 @@ package com.imyeyu.api.modules.common.service.implement; -import com.imyeyu.java.TimiJava; -import com.imyeyu.java.bean.timi.TimiCode; -import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.api.config.dbsource.TimiServerDBConfig; import com.imyeyu.api.modules.blog.util.UserToken; import com.imyeyu.api.modules.common.entity.Attachment; +import com.imyeyu.api.modules.common.entity.CommentReply; import com.imyeyu.api.modules.common.entity.EmailQueue; import com.imyeyu.api.modules.common.entity.User; import com.imyeyu.api.modules.common.entity.UserConfig; @@ -29,7 +27,11 @@ import com.imyeyu.api.modules.common.vo.user.UserView; import com.imyeyu.api.modules.git.entity.Developer; import com.imyeyu.api.modules.git.service.DeveloperService; import com.imyeyu.api.modules.minecraft.service.PlayerService; +import com.imyeyu.java.TimiJava; +import com.imyeyu.java.bean.timi.TimiCode; +import com.imyeyu.java.bean.timi.TimiException; import com.imyeyu.spring.TimiSpring; +import com.imyeyu.spring.bean.Logic; import com.imyeyu.spring.mapper.BaseMapper; import com.imyeyu.spring.service.AbstractEntityService; import com.imyeyu.spring.util.Redis; @@ -360,8 +362,13 @@ public class UserServiceImplement extends AbstractEntityService impl } // 删除评论 commentMapper.deleteByUserId(user.getId()); - // 删除回复 - commentReplyMapper.deleteByUserId(user.getId()); + { + // 删除回复 + CommentReply example = new CommentReply(); + example.setSenderId(user.getId()); + example.setReceiverId(user.getId()); + commentReplyMapper.deleteAllByExample(example, Logic.OR); + } // 删除账号 delete(user.getId()); // 清除登录会话 diff --git a/src/main/java/com/imyeyu/api/modules/common/task/EmailTask.java b/src/main/java/com/imyeyu/api/modules/common/task/EmailTask.java index 4d8bce6..c06f672 100644 --- a/src/main/java/com/imyeyu/api/modules/common/task/EmailTask.java +++ b/src/main/java/com/imyeyu/api/modules/common/task/EmailTask.java @@ -17,7 +17,6 @@ import com.imyeyu.api.modules.common.entity.User; import com.imyeyu.api.modules.common.service.CommentReplyService; import com.imyeyu.api.modules.common.service.EmailQueueService; import com.imyeyu.api.modules.common.service.UserService; -import com.imyeyu.api.modules.common.vo.comment.CommentReplyView; import com.imyeyu.spring.util.Redis; import com.imyeyu.utils.Text; import com.imyeyu.utils.Time; @@ -175,9 +174,7 @@ public class EmailTask implements TimiJava { for (CommentRemindQueue remind : reminds) { // 回复 CommentReply reply = commentReplyService.get(remind.getReplyId()); - CommentReplyView replyView = new CommentReplyView(); - BeanUtils.copyProperties(reply, replyView); - remind.setReply(replyView); + remind.setReply(reply); if (TimiJava.isNotEmpty(remind.getReply().getSenderId())) { // 发送者 remind.getReply().setSender(userService.view(remind.getReply().getSenderId())); diff --git a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyPage.java b/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyPage.java deleted file mode 100644 index 63f39b4..0000000 --- a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyPage.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.imyeyu.api.modules.common.vo.comment; - -import com.imyeyu.spring.bean.Page; -import jakarta.validation.constraints.Min; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.Getter; - -/** - * @author 夜雨 - * @since 2023-07-15 09:03 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class CommentReplyPage extends Page { - - /** - * - * - * @author 夜雨 - * @since 2025-04-17 23:29 - */ - @Getter - @AllArgsConstructor - public enum BizType { - - COMMENT("comment_id"), - - SENDER("sender_id"), - - RECEIVER("receiver_id"); - - final String column; - } - - private BizType bizType; - - @Min(1) - private Long bizId; -} diff --git a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyView.java b/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyView.java deleted file mode 100644 index 80cdf61..0000000 --- a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentReplyView.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.imyeyu.api.modules.common.vo.comment; - -import com.imyeyu.api.modules.common.entity.CommentReply; -import com.imyeyu.api.modules.common.vo.user.UserView; -import com.imyeyu.spring.annotation.table.Transient; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * @author 夜雨 - * @since 2024-03-05 17:48 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class CommentReplyView extends CommentReply { - - /** 所属评论 */ - @Transient - private CommentView comment; - - /** 发送用户 */ - @Transient - private UserView sender; - - /** 回复用户 */ - @Transient - private UserView receiver; -} diff --git a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentView.java b/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentView.java deleted file mode 100644 index 1e739bf..0000000 --- a/src/main/java/com/imyeyu/api/modules/common/vo/comment/CommentView.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.imyeyu.api.modules.common.vo.comment; - -import com.imyeyu.api.modules.blog.entity.Article; -import com.imyeyu.api.modules.common.entity.Comment; -import com.imyeyu.api.modules.common.vo.user.UserView; -import com.imyeyu.api.modules.git.bean.gitea.Repository; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -/** - * @author 夜雨 - * @since 2024-02-29 16:37 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class CommentView extends Comment { - - /** 回复数量 */ - private int repliesLength; - - /** 发送用户 */ - private UserView user; - - /** 关联文章 */ - private Article article; - - /** 关联仓库 */ - private Repository repository; - - /** 回复列表 */ - private List replies; -} diff --git a/src/main/java/com/imyeyu/api/modules/common/vo/comment/UserCommentPage.java b/src/main/java/com/imyeyu/api/modules/common/vo/comment/UserCommentPage.java deleted file mode 100644 index e9769a7..0000000 --- a/src/main/java/com/imyeyu/api/modules/common/vo/comment/UserCommentPage.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.imyeyu.api.modules.common.vo.comment; - -import jakarta.validation.constraints.Min; -import lombok.Data; -import lombok.EqualsAndHashCode; -import com.imyeyu.spring.bean.Page; - -/** - * @author 夜雨 - * @since 2023-07-15 14:13 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class UserCommentPage extends Page { - - @Min(1) - private Long userId; -} diff --git a/src/main/java/com/imyeyu/api/modules/git/vo/issue/CommentPage.java b/src/main/java/com/imyeyu/api/modules/git/vo/issue/CommentPage.java deleted file mode 100644 index 919d8cf..0000000 --- a/src/main/java/com/imyeyu/api/modules/git/vo/issue/CommentPage.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.imyeyu.api.modules.git.vo.issue; - -import com.imyeyu.api.modules.common.entity.Comment; -import com.imyeyu.spring.bean.Page; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * @author 夜雨 - * @since 2024-02-28 14:27 - */ -@Data -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class CommentPage extends Page { - - private Comment.BizType bizType; - - private long bizId; -} diff --git a/src/main/resources/mapper/common/CommentMapper.xml b/src/main/resources/mapper/common/CommentMapper.xml index e4ed4c8..5267cf2 100644 --- a/src/main/resources/mapper/common/CommentMapper.xml +++ b/src/main/resources/mapper/common/CommentMapper.xml @@ -2,101 +2,7 @@ comment - - - - - - - - - - - - - - - - - - - - - - SELECT SUM(result.total_comment + result.total_reply) FROM ( @@ -116,28 +22,4 @@ AND comment_reply.deleted_at IS NULL ) AS result - - - FROM - - WHERE - user_id = #{userId} - AND deleted_at IS NULL - - - \ No newline at end of file