From 01d6fa48a0de7a21988e89f71721b6b85e53b517 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 06 三月 2025 16:33:53 +0800 Subject: [PATCH] 去掉资讯图片必填限制 --- ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 147 insertions(+), 1 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 d23e6fa..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,10 +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.domain.pojo.ArticleComments; +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.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 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> @@ -18,4 +39,129 @@ public class ArticleCommentsServiceImpl extends ServiceImpl<ArticleCommentsMapper, ArticleComments> implements IArticleCommentsService { + @Resource + private ArticleMapper articleMapper; + @Resource + private MemberClient memberClient; + @Override + public void saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { + ArticleComments articleComments=new ArticleComments(); + if (articleCommentsDTO.getId()!=null){ + articleComments= this.getById(articleCommentsDTO.getId()); + } + if (articleCommentsDTO.getMemberId()==null){ + throw new ServiceException("用户id错误"); + } + if (articleCommentsDTO.getType()==1){ + articleComments.setMemberId(articleCommentsDTO.getMemberId()); + articleComments.setArticleId(articleCommentsDTO.getArticleId()); + articleComments.setContent(articleCommentsDTO.getContent()); + articleComments.setState(articleCommentsDTO.getState()); + articleComments.setType(1); + }else{ + articleComments.setMemberId(articleCommentsDTO.getMemberId()); + articleComments.setArticleId(articleCommentsDTO.getArticleId()); + 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); + } + + @Override + public void delMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { + 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