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 | 127 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 119 insertions(+), 8 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 4c53c83..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,14 +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.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> @@ -21,14 +38,16 @@ @Service public class ArticleCommentsServiceImpl extends ServiceImpl<ArticleCommentsMapper, ArticleComments> implements IArticleCommentsService { - @Resource - private IArticleCommentsService articleCommentsService; + @Resource + private ArticleMapper articleMapper; + @Resource + private MemberClient memberClient; @Override public void saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { ArticleComments articleComments=new ArticleComments(); if (articleCommentsDTO.getId()!=null){ - articleComments= articleCommentsService.getById(articleCommentsDTO.getId()); + articleComments= this.getById(articleCommentsDTO.getId()); } if (articleCommentsDTO.getMemberId()==null){ throw new ServiceException("用户id错误"); @@ -37,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()); @@ -44,13 +64,104 @@ articleComments.setReplyId(articleCommentsDTO.getReplyId()); articleComments.setContent(articleCommentsDTO.getContent()); articleComments.setBmemberId(articleCommentsDTO.getBmemberId()); + articleComments.setState(articleCommentsDTO.getState()); articleComments.setType(2); } - articleCommentsService.saveOrUpdate(articleComments); + Article byId = articleMapper.selectById(articleCommentsDTO.getArticleId()); + byId.setCommentCount(byId.getCommentCount()+1); + byId.setReadStatus(byId.getReadStatus() == 2 ? 1 : 2); + articleMapper.updateById(byId); + this.saveOrUpdate(articleComments); } @Override public void delMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { - articleCommentsService.removeById(articleCommentsDTO.getId()); + ArticleComments byId1 = this.getById(articleCommentsDTO.getId()); + + Article byId = articleMapper.selectById(byId1.getArticleId()); + byId.setCommentCount(byId.getCommentCount()-1); + articleMapper.updateById(byId); + + 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