From 392b42c4891cf2e6beda57ab32c51598f290f4b7 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 14 三月 2025 20:56:27 +0800 Subject: [PATCH] bug修改 --- ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 103 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java index ba9e375..35de939 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java @@ -1,16 +1,31 @@ package com.ruoyi.article.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; +import com.ruoyi.article.controller.management.dto.MgtArticleCommentsQuery; +import com.ruoyi.article.controller.management.vo.MgtArticleCommentsVO; import com.ruoyi.article.domain.Article; import com.ruoyi.article.domain.ArticleComments; -import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.mapper.ArticleCommentsMapper; import com.ruoyi.article.mapper.ArticleMapper; import com.ruoyi.article.service.IArticleCommentsService; +import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.exception.ServiceException; -import org.springframework.stereotype.Service; - +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.system.api.domain.Member; +import com.ruoyi.system.api.domain.dto.MemberDTO; +import com.ruoyi.system.api.feignClient.MemberClient; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import javax.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -26,7 +41,8 @@ @Resource private ArticleMapper articleMapper; - + @Resource + private MemberClient memberClient; @Override public void saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { ArticleComments articleComments=new ArticleComments(); @@ -40,6 +56,7 @@ articleComments.setMemberId(articleCommentsDTO.getMemberId()); articleComments.setArticleId(articleCommentsDTO.getArticleId()); articleComments.setContent(articleCommentsDTO.getContent()); + articleComments.setState(articleCommentsDTO.getState()); articleComments.setType(1); }else{ articleComments.setMemberId(articleCommentsDTO.getMemberId()); @@ -47,10 +64,12 @@ articleComments.setReplyId(articleCommentsDTO.getReplyId()); articleComments.setContent(articleCommentsDTO.getContent()); articleComments.setBmemberId(articleCommentsDTO.getBmemberId()); + articleComments.setState(articleCommentsDTO.getState()); articleComments.setType(2); } Article byId = articleMapper.selectById(articleCommentsDTO.getArticleId()); byId.setCommentCount(byId.getCommentCount()+1); + byId.setReadStatus(byId.getReadStatus() == 2 ? 1 : 2); articleMapper.updateById(byId); this.saveOrUpdate(articleComments); } @@ -65,4 +84,84 @@ this.removeById(articleCommentsDTO.getId()); } + + /** + * 查看详情-评论详情 + * + * @param query 资讯评论回复查询对象 + * @return PageDTO<MgtArticleCommentsVO> + */ + @Override + @Transactional(rollbackFor = Exception.class) + public PageDTO<MgtArticleCommentsVO> getArticleCommentsPage(MgtArticleCommentsQuery query) { + PageDTO<MgtArticleCommentsVO> result; + Set<Long> memberIdSet = null; + Page<ArticleComments> page = new Page<>(query.getPageCurr(), query.getPageSize()); + if (StringUtils.isNotBlank(query.getNickname())) { + MemberDTO memberDTO = new MemberDTO(); + memberDTO.setNickname(query.getNickname()); + List<Member> data = memberClient.getMemberListByCondition(memberDTO, + SecurityConstants.INNER).getData(); + if (StringUtils.isEmpty(data)) { + // 搜索结果为空,直接返回空 + return PageDTO.empty(page); + } + memberIdSet = data.stream().map(Member::getId).collect(Collectors.toSet()); + } + page = this.lambdaQuery() + .eq(ArticleComments::getArticleId, query.getArticleId()) + .in(StringUtils.isNotEmpty(memberIdSet), ArticleComments::getMemberId, memberIdSet) + .orderByDesc(ArticleComments::getCreateTime) + .page(new Page<>(query.getPageCurr(), query.getPageSize())); + if (StringUtils.isEmpty(page.getRecords())) { + result = PageDTO.empty(page); + } else { + PageDTO<MgtArticleCommentsVO> pageVO = PageDTO.of(page, + MgtArticleCommentsVO.class);// 获取会员信息 + Set<Long> memIdSet = pageVO.getList().stream().map(MgtArticleCommentsVO::getMemberId) + .collect(Collectors.toSet()); + List<Member> memberList = memberClient.getMemberListByIds(memIdSet, + SecurityConstants.INNER).getData(); + Map<Long, Member> memberMap = memberList.stream() + .collect(Collectors.toMap(Member::getId, Function.identity())); + pageVO.getList().forEach(item -> { + Member member = memberMap.get(item.getMemberId()); + if (StringUtils.isNotNull(member)) { + item.setNickname(member.getNickname()); + item.setPhone(member.getPhone()); + } + }); + result = pageVO; + } + // 修改查看评论状态 + Article article = articleMapper.selectById(query.getArticleId()); + article.setReadStatus(2); + articleMapper.updateById(article); + return result; + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void delArticleComments(Long id) { + ArticleComments articleComments = this.getById(id); + if (StringUtils.isNull(articleComments)) { + throw new ServiceException("评论不存在"); + } + // 查询资讯 + Article article = articleMapper.selectById(articleComments.getArticleId()); + + if (articleComments.getType() == 2) { + this.removeById(id); + article.setCommentCount(Math.max(article.getCommentCount() - 1, 0)); + } else if (articleComments.getType() == 1) { + List<ArticleComments> list = this.lambdaQuery().eq(ArticleComments::getReplyId, id) + .list(); + List<Long> commentsIds = list.stream().map(ArticleComments::getId) + .collect(Collectors.toList()); + commentsIds.add(articleComments.getId()); + this.removeByIds(commentsIds); + article.setCommentCount(Math.max((article.getCommentCount() - list.size()), 0)); + } + articleMapper.updateById(article); + } } -- Gitblit v1.7.1