rentaiming
2024-06-12 7613f6b73a96039ea400aeba3d63c15ffaf04795
ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.article.controller.forepart.dto.ArticleDTO;
import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO;
import com.ruoyi.article.controller.forepart.vo.ArticleVO;
import com.ruoyi.article.controller.management.dto.MgtArticleDTO;
import com.ruoyi.article.controller.management.dto.MgtArticleQuery;
import com.ruoyi.article.controller.management.vo.MgtArticleVO;
import com.ruoyi.article.domain.Article;
@@ -23,8 +24,10 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.ArticleTypeEnum;
import com.ruoyi.common.core.enums.AuditStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.enums.ListingStatusEnum;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.SysUser;
@@ -78,6 +81,7 @@
        if (articleDTO.getTitle()!=null){
            wrapper.like(Article::getTitle,articleDTO.getTitle());
        }
        wrapper.eq(Article::getListingStatus,0);
        wrapper.eq(Article::getStatus,2);
        wrapper.eq( Article::getDelFlag,0);
        wrapper.orderByDesc(Article::getCreateTime);
@@ -156,10 +160,8 @@
    @Override
    public ArticleVO getMemberArticleInfo(ArticleDTO articleDTO) {
        Article article=this.getById(articleDTO.getId());
        ArticleVO articleVO=new ArticleVO();
        BeanUtils.copyProperties(article, articleVO);
        ArticleVO articleVO = BeanUtils.copyBean(article,
                ArticleVO.class);
        R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId(),
                SecurityConstants.INNER);
        Member data = membeOne.getData();
@@ -202,72 +204,79 @@
        Page<ArticleComments> page1 = articleCommentsService.page(page, wrapper);
        PageDTO<ArticleCommentsVO> articleCommentsVOPageDTO = PageDTO.of(page1, ArticleCommentsVO.class);
        List<ArticleCommentsVO> list2 = articleCommentsVOPageDTO.getList();
        for(ArticleCommentsVO articleCommentsVO:list2){
            R<Member> membeOne = memberClient.getMembeOne(articleCommentsVO.getMemberId(),
                    SecurityConstants.INNER);
            Member data = membeOne.getData();
            articleCommentsVO.setMemberNickname(data.getNickname());
            articleCommentsVO.setBmemberNickavatar(data.getAvatar());
            LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery();
            wrapper1.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId());
            wrapper1.eq(MemberLike::getArticleId,articleCommentsVO.getArticleId());
            wrapper1.eq(MemberLike::getType,2);
            wrapper1.eq( MemberLike::getDelFlag,0);
            List<MemberLike> list = memberLikeService.list(wrapper1);
            if (list.size()>0){
                articleCommentsVO.setIslike(1);
            }else {
                articleCommentsVO.setIslike(2);
            }
            List<ArticleCommentsVO> articleCommentsVOList1=new ArrayList<>();
            LambdaQueryWrapper< ArticleComments> wrapper2= Wrappers.lambdaQuery();
            wrapper2.eq(ArticleComments::getReplyId,articleCommentsVO.getArticleId());
            wrapper2.eq( ArticleComments::getDelFlag,0);
            wrapper2.eq( ArticleComments::getType,2);
            List<ArticleComments> list1 = articleCommentsService.list(wrapper2);
            for (ArticleComments articleComments1:list1){
                ArticleCommentsVO articleCommentsVO1=new ArticleCommentsVO();
                R<Member> membeOne1 = memberClient.getMembeOne(articleCommentsVO.getMemberId(),
        if (list2!=null){
            for(int i=0;i<list2.size();i++){
                ArticleCommentsVO articleCommentsVO=list2.get(i);
                R<Member> membeOne = memberClient.getMembeOne(articleCommentsVO.getMemberId(),
                        SecurityConstants.INNER);
                Member data1 = membeOne1.getData();
                R<Member> membeOne2 = memberClient.getMembeOne(articleCommentsVO.getBmemberId(),
                        SecurityConstants.INNER);
                Member data2 = membeOne2.getData();
                articleCommentsVO1.setArticleId(articleComments1.getArticleId());
                articleCommentsVO1.setContent(articleComments1.getContent());
                articleCommentsVO1.setMemberId(articleComments1.getMemberId());
                articleCommentsVO1.setId(articleComments1.getId());
                articleCommentsVO1.setMemberNickname(data1.getNickname());
                articleCommentsVO1.setBmemberNickavatar(data1.getAvatar());
                articleCommentsVO1.setLikeCount(articleComments1.getLikeCount());
                articleCommentsVO1.setCreateTime(articleComments1.getCreateTime());
                articleCommentsVO1.setBmemberNickavatar(data2.getAvatar());
                articleCommentsVO1.setBmemberNickname(data2.getNickname());
                LambdaQueryWrapper<MemberLike> wrapper3= Wrappers.lambdaQuery();
                wrapper3.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId());
                wrapper3.eq(MemberLike::getArticleId,articleCommentsVO.getArticleId());
                wrapper3.eq(MemberLike::getType,2);
                wrapper3.eq( MemberLike::getDelFlag,0);
                List<MemberLike> list3 = memberLikeService.list(wrapper3);
                if (list3.size()>0){
                    articleCommentsVO1.setIslike(1);
                Member data = membeOne.getData();
                articleCommentsVO.setMemberNickname(data.getNickname());
                articleCommentsVO.setMemberNickavatar(data.getAvatar());
                LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery();
                wrapper1.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId());
                wrapper1.eq(MemberLike::getArticleId,articleCommentsVO.getId());
                wrapper1.eq(MemberLike::getType,2);
                wrapper1.eq( MemberLike::getDelFlag,0);
                List<MemberLike> list = memberLikeService.list(wrapper1);
                if (list.size()>0){
                    articleCommentsVO.setIslike(1);
                }else {
                    articleCommentsVO1.setIslike(2);
                    articleCommentsVO.setIslike(2);
                }
                articleCommentsVOList1.add(articleCommentsVO1);
                List<ArticleCommentsVO> articleCommentsVOList1=new ArrayList<>();
                LambdaQueryWrapper< ArticleComments> wrapper2= Wrappers.lambdaQuery();
                wrapper2.eq(ArticleComments::getReplyId,articleCommentsVO.getId());
                wrapper2.eq( ArticleComments::getDelFlag,0);
                wrapper2.eq( ArticleComments::getType,2);
                List<ArticleComments> list1 = articleCommentsService.list(wrapper2);
                for (ArticleComments articleComments1:list1){
                    ArticleCommentsVO articleCommentsVO1=new ArticleCommentsVO();
                    R<Member> membeOne1 = memberClient.getMembeOne(articleComments1.getMemberId(),
                            SecurityConstants.INNER);
                    Member data1 = membeOne1.getData();
                    R<Member> membeOne2 = memberClient.getMembeOne(articleComments1.getBmemberId(),
                            SecurityConstants.INNER);
                    Member data2 = membeOne2.getData();
                    articleCommentsVO1.setArticleId(articleComments1.getArticleId());
                    articleCommentsVO1.setContent(articleComments1.getContent());
                    articleCommentsVO1.setMemberId(articleComments1.getMemberId());
                    articleCommentsVO1.setId(articleComments1.getId());
                    articleCommentsVO1.setMemberNickname(data1.getNickname());
                    articleCommentsVO1.setMemberNickavatar(data1.getAvatar());
                    articleCommentsVO1.setBmemberNickavatar(data1.getAvatar());
                    articleCommentsVO1.setLikeCount(articleComments1.getLikeCount());
                    articleCommentsVO1.setCreateTime(articleComments1.getCreateTime());
                    articleCommentsVO1.setBmemberNickname(data2.getNickname());
                    articleCommentsVO1.setState(articleComments1.getState());
                    articleCommentsVO1.setBmemberId(data2.getId());
                    LambdaQueryWrapper<MemberLike> wrapper3= Wrappers.lambdaQuery();
                    wrapper3.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId());
                    wrapper3.eq(MemberLike::getArticleId,articleComments1.getId());
                    wrapper3.eq(MemberLike::getType,2);
                    wrapper3.eq( MemberLike::getDelFlag,0);
                    List<MemberLike> list3 = memberLikeService.list(wrapper3);
                    if (list3.size()>0){
                        articleCommentsVO1.setIslike(1);
                    }else {
                        articleCommentsVO1.setIslike(2);
                    }
                    articleCommentsVOList1.add(articleCommentsVO1);
                }
                articleCommentsVO.setArticleCommentsVOList(articleCommentsVOList1);
            }
            articleCommentsVO.setArticleCommentsVOList(articleCommentsVOList1);
            list2.add(articleCommentsVO);
        }
        return articleCommentsVOPageDTO;
    }
@@ -278,11 +287,18 @@
        R<Member> membeOne = memberClient.getMembeOne(articleDTO.getMemberId(),
                SecurityConstants.INNER);
        Member data = membeOne.getData();
        article.setReportBy(data.getNickname());
        article.setReportBy(data.getId());
        article.setReportedTime(LocalDateTime.now());
        article.setReported(Boolean.TRUE);
        this.saveOrUpdate(article);
    }
    /**
     * 获取资讯列表的分页数据
     *
     * @param query 资讯管理查询条件
     * @return PageDTO<ArticleVO>
     */
    @Override
    public PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query) {
        // 构建查询条件
@@ -372,4 +388,57 @@
        }
        return pageVO;
    }
    /**
     * "添加/编辑资讯
     *
     * @param dto 管理后台-资讯传输对象
     */
    @Override
    public void saveArticle(MgtArticleDTO dto) {
        Article article = BeanUtils.copyBean(dto, Article.class);
        if (StringUtils.isNull(article.getId())) {
            article.setStatus(AuditStatusEnum.PASSED);
            this.save(article);
        } else {
            Article articleById = this.getById(article.getId());
            if (StringUtils.isNull(articleById)) {
                throw new ServiceException("资讯不存在");
            }
            this.updateById(article);
        }
    }
    /**
     * 处理举报
     *
     * @param id 资讯id
     */
    @Override
    public void handleReport(Long id) {
        Article article = this.getById(id);
        if (StringUtils.isNull(article)) {
            throw new ServiceException("资讯不存在");
        }
        if (Boolean.FALSE.equals(article.getReported())) {
            throw new ServiceException("该资讯未举报");
        }
        article.setReported(Boolean.FALSE);
        this.updateById(article);
    }
    /**
     * 查看详情
     *
     * @param id 资讯id
     * @return MgtArticleVO
     */
    @Override
    public MgtArticleVO getDetail(Long id) {
        Article article = this.getById(id);
        if (StringUtils.isNull(article)) {
            throw new ServiceException("资讯不存在");
        }
        return BeanUtils.copyBean(article, MgtArticleVO.class);
    }
}