From 72ef4f043ba34a535d00bff6a0e264d1a7e12548 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期一, 27 五月 2024 17:54:57 +0800 Subject: [PATCH] 写用户端接口 --- ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleVO.java | 60 ++++++ ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java | 11 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IMemberArticleCollectionService.java | 8 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java | 152 +++++++++++++++- ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java | 14 + ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java | 34 +++ ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberLikeDTO.java | 3 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/MemberArticleCollectionVO.java | 41 ++++ ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/ArticleCommentsDTO.java | 3 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberArticleCollectionServiceImpl.java | 92 ++++++++++ ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleCommentsVO.java | 6 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberArticleCollectionDTO.java | 18 ++ ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java | 5 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberLikeServiceImpl.java | 70 ++++--- 14 files changed, 460 insertions(+), 57 deletions(-) diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java index f5dfd23..c71df1d 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/ArticleController.java @@ -3,8 +3,10 @@ import com.ruoyi.article.domain.Article; import com.ruoyi.article.dto.ArticleDTO; +import com.ruoyi.article.dto.MemberLikeDTO; import com.ruoyi.article.service.IArticleService; import com.ruoyi.article.vo.ArticleCommentsVO; +import com.ruoyi.article.vo.ArticleVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.MemberAddress; @@ -42,8 +44,8 @@ @PostMapping("/getArticleList") @ResponseBody @ApiOperation(value = "获取资讯") - public R<PageDTO<Article>> getArticleList(ArticleDTO articleDTO) { - return R.ok(iArticleService.getArticleList(articleDTO)); + public R<PageDTO<ArticleVO>> getArticleList(ArticleDTO articleDTO) { + return R.ok(iArticleService.getArticleList(articleDTO)); } @PostMapping("/getMemberArticleList") @@ -73,11 +75,9 @@ @PostMapping("/getMemberArticleInfo") @ResponseBody @ApiOperation(value = "获取资讯详情") - public R<Article> getMemberArticleInfo(ArticleDTO articleDTO) { + public R<ArticleVO> getMemberArticleInfo(ArticleDTO articleDTO) { return R.ok(iArticleService.getMemberArticleInfo(articleDTO)); } - - @PostMapping("/getArticleCommentsList") @@ -94,4 +94,5 @@ iArticleService.getReport(articleDTO); return R.ok(); } + } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java index 02aa1c2..18d7db9 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/MemberArticleCollectionController.java @@ -1,9 +1,24 @@ package com.ruoyi.article.controller; +import com.ruoyi.article.domain.Article; +import com.ruoyi.article.dto.ArticleDTO; +import com.ruoyi.article.dto.MemberArticleCollectionDTO; +import com.ruoyi.article.dto.MemberLikeDTO; +import com.ruoyi.article.service.IMemberArticleCollectionService; +import com.ruoyi.article.vo.ArticleVO; +import com.ruoyi.article.vo.MemberArticleCollectionVO; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.page.PageDTO; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; /** * <p> @@ -17,4 +32,23 @@ @RequestMapping("/member-article-collection") public class MemberArticleCollectionController { + @Resource + private IMemberArticleCollectionService memberArticleCollectionService; + + @PostMapping("/saveMemberArticleCollection") + @ResponseBody + @ApiOperation(value = "文章收藏和取消收藏") + public R<T> saveMemberArticleCollection(MemberArticleCollectionDTO memberArticleCollectionDTO) { + memberArticleCollectionService.saveMemberArticleCollection(memberArticleCollectionDTO); + return R.ok(); + } + + + @PostMapping("/getMemberArticleCollection") + @ResponseBody + @ApiOperation(value = "获取用户收藏资讯") + public R<PageDTO<MemberArticleCollectionVO>> getMemberArticleCollection(ArticleDTO articleDTO) { + return R.ok(memberArticleCollectionService.getMemberArticleCollection(articleDTO)); + } + } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/ArticleCommentsDTO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/ArticleCommentsDTO.java index 314c084..138fda2 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/ArticleCommentsDTO.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/ArticleCommentsDTO.java @@ -1,12 +1,13 @@ package com.ruoyi.article.dto; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data -public class ArticleCommentsDTO { +public class ArticleCommentsDTO extends BasePage { @ApiModelProperty(value = "资讯评论id") @TableId(value = "id", type = IdType.ASSIGN_ID) diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberArticleCollectionDTO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberArticleCollectionDTO.java new file mode 100644 index 0000000..6ac6d58 --- /dev/null +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberArticleCollectionDTO.java @@ -0,0 +1,18 @@ +package com.ruoyi.article.dto; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MemberArticleCollectionDTO extends BasePage { + + @ApiModelProperty(value = "收藏目标id") + private Long targetId; + + @ApiModelProperty(value = "会员id") + private Long memberId; + + @ApiModelProperty(value = "1收藏,2 取消收藏") + private Long state; +} diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberLikeDTO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberLikeDTO.java index aa3605c..1dadc99 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberLikeDTO.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/dto/MemberLikeDTO.java @@ -1,10 +1,11 @@ package com.ruoyi.article.dto; +import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -public class MemberLikeDTO { +public class MemberLikeDTO extends BasePage { @ApiModelProperty(value = "会员id") private Long memberId; diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java index 5b522b4..2186e9b 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java @@ -4,6 +4,7 @@ import com.ruoyi.article.domain.Article; import com.ruoyi.article.dto.ArticleDTO; import com.ruoyi.article.vo.ArticleCommentsVO; +import com.ruoyi.article.vo.ArticleVO; import com.ruoyi.common.core.utils.page.PageDTO; /** @@ -16,7 +17,7 @@ */ public interface IArticleService extends IService<Article> { - PageDTO< Article> getArticleList(ArticleDTO articleDTO); + PageDTO<ArticleVO> getArticleList(ArticleDTO articleDTO); PageDTO<Article> getMemberArticleList(ArticleDTO articleDTO); @@ -24,7 +25,7 @@ void delMemberArticle(ArticleDTO articleDTO); - Article getMemberArticleInfo(ArticleDTO articleDTO); + ArticleVO getMemberArticleInfo(ArticleDTO articleDTO); PageDTO<ArticleCommentsVO> getArticleCommentsList(ArticleDTO articleDTO); void getReport(ArticleDTO articleDTO); diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IMemberArticleCollectionService.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IMemberArticleCollectionService.java index 16cfa71..6fbea11 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IMemberArticleCollectionService.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IMemberArticleCollectionService.java @@ -2,6 +2,11 @@ import com.ruoyi.article.domain.MemberArticleCollection; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.article.dto.ArticleDTO; +import com.ruoyi.article.dto.MemberArticleCollectionDTO; +import com.ruoyi.article.vo.ArticleVO; +import com.ruoyi.article.vo.MemberArticleCollectionVO; +import com.ruoyi.common.core.utils.page.PageDTO; /** * <p> @@ -12,5 +17,8 @@ * @since 2024-05-27 */ public interface IMemberArticleCollectionService extends IService<MemberArticleCollection> { + void saveMemberArticleCollection(MemberArticleCollectionDTO memberArticleCollectionDTO); + + PageDTO<MemberArticleCollectionVO> getMemberArticleCollection(ArticleDTO articleDTO); } 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..3e82b6e 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,12 @@ package com.ruoyi.article.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.service.IArticleCommentsService; +import com.ruoyi.article.service.IArticleService; import com.ruoyi.common.core.exception.ServiceException; import org.springframework.stereotype.Service; @@ -23,6 +25,9 @@ ServiceImpl<ArticleCommentsMapper, ArticleComments> implements IArticleCommentsService { @Resource private IArticleCommentsService articleCommentsService; + + @Resource + private IArticleService articleService; @Override public void saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { @@ -46,11 +51,20 @@ articleComments.setBmemberId(articleCommentsDTO.getBmemberId()); articleComments.setType(2); } + Article byId = articleService.getById(articleCommentsDTO.getArticleId()); + byId.setCommentCount(byId.getCommentCount()+1); + articleService.saveOrUpdate(byId); articleCommentsService.saveOrUpdate(articleComments); } @Override public void delMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { + ArticleComments byId1 = articleCommentsService.getById(articleCommentsDTO.getId()); + + Article byId = articleService.getById(byId1.getArticleId()); + byId.setCommentCount(byId.getCommentCount()-1); + articleService.saveOrUpdate(byId); + articleCommentsService.removeById(articleCommentsDTO.getId()); } } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java index e0db56b..68bba48 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java @@ -6,14 +6,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.article.domain.Article; import com.ruoyi.article.domain.ArticleComments; +import com.ruoyi.article.domain.MemberArticleCollection; +import com.ruoyi.article.domain.MemberLike; import com.ruoyi.article.dto.ArticleDTO; import com.ruoyi.article.mapper.ArticleMapper; import com.ruoyi.article.service.IArticleCommentsService; import com.ruoyi.article.service.IArticleService; +import com.ruoyi.article.service.IMemberArticleCollectionService; +import com.ruoyi.article.service.IMemberLikeService; import com.ruoyi.article.vo.ArticleCommentsVO; +import com.ruoyi.article.vo.ArticleVO; 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.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.MemberAddress; @@ -47,10 +53,16 @@ private IArticleCommentsService articleCommentsService; @Resource - private MemberClient emberClient; + private MemberClient memberClient; + + @Resource + private IMemberLikeService memberLikeService; + + @Resource + private IMemberArticleCollectionService memberArticleCollectionService; @Override - public PageDTO<Article> getArticleList(ArticleDTO articleDTO) { + public PageDTO<ArticleVO> getArticleList(ArticleDTO articleDTO) { Page<Article> page = new Page<>(articleDTO.getPageCurr(), articleDTO.getPageSize()); LambdaQueryWrapper< Article> wrapper= Wrappers.lambdaQuery(); if (articleDTO.getArticleType()!=0){ @@ -61,7 +73,39 @@ wrapper.eq( Article::getDelFlag,0); wrapper.orderByDesc(Article::getCreateTime); Page< Article> page1 = articleService.page(page, wrapper); - return PageDTO.of(page1); + + PageDTO<ArticleVO> articleCommentsVOPageDTO = PageDTO.of(page1, ArticleVO.class); + List<ArticleVO> list2 = articleCommentsVOPageDTO.getList(); + for (ArticleVO articleVO:list2) { + if (articleVO.getMemberId()!=null){ + R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId()); + Member data = membeOne.getData(); + articleVO.setMemberNickname(data.getNickname()); + } + LambdaQueryWrapper<MemberLike> wrapper1 = Wrappers.lambdaQuery(); + wrapper1.eq(MemberLike::getMemberId, articleDTO.getMemberId()); + wrapper1.eq(MemberLike::getArticleId, articleVO.getId()); + wrapper1.eq(MemberLike::getType, 1); + wrapper1.eq(MemberLike::getDelFlag, 0); + List<MemberLike> list = memberLikeService.list(wrapper1); + if (list.size() > 0) { + articleVO.setIsLike(1); + } else { + articleVO.setIsLike(2); + } + + LambdaQueryWrapper<MemberArticleCollection> wrapper2 = Wrappers.lambdaQuery(); + wrapper2.eq(MemberArticleCollection::getMemberId, articleDTO.getMemberId()); + wrapper2.eq(MemberArticleCollection::getTargetId, articleVO.getId()); + wrapper2.eq(MemberArticleCollection::getDelFlag, 0); + List<MemberArticleCollection> list1 = memberArticleCollectionService.list(wrapper2); + if (list1.size() > 0) { + articleVO.setIsCollect(1); + } else { + articleVO.setIsCollect(2); + } + } + return articleCommentsVOPageDTO; } @Override @@ -108,9 +152,34 @@ } @Override - public Article getMemberArticleInfo(ArticleDTO articleDTO) { + public ArticleVO getMemberArticleInfo(ArticleDTO articleDTO) { Article article=articleService.getById(articleDTO.getId()); - return article; + ArticleVO articleVO=new ArticleVO(); + BeanUtils.copyProperties(article, articleVO); + + LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery(); + wrapper1.eq(MemberLike::getMemberId,articleDTO.getMemberId()); + wrapper1.eq(MemberLike::getArticleId,article.getId()); + wrapper1.eq(MemberLike::getType,1); + wrapper1.eq( MemberLike::getDelFlag,0); + List<MemberLike> list = memberLikeService.list(wrapper1); + if (list.size()>0){ + articleVO.setIsLike(1); + }else { + articleVO.setIsLike(2); + } + + LambdaQueryWrapper<MemberArticleCollection> wrapper2= Wrappers.lambdaQuery(); + wrapper2.eq(MemberArticleCollection::getMemberId,articleDTO.getMemberId()); + wrapper2.eq(MemberArticleCollection::getTargetId,article.getId()); + wrapper2.eq( MemberArticleCollection::getDelFlag,0); + List<MemberArticleCollection> list1 = memberArticleCollectionService.list(wrapper2); + if (list1.size()>0){ + articleVO.setIsCollect(1); + }else { + articleVO.setIsCollect(2); + } + return articleVO; } @Override @@ -122,24 +191,79 @@ wrapper.eq( ArticleComments::getType,1); wrapper.orderByDesc(ArticleComments::getCreateTime); 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()); + 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<ArticleComments> articleCommentsList=page1.getRecords(); - List<ArticleCommentsVO> articleCommentsVOList=new ArrayList<>(); - for(ArticleComments articleComments:articleCommentsList){ - ArticleCommentsVO articleCommentsVO=new ArticleCommentsVO(); + 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()); + Member data1 = membeOne1.getData(); + + R<Member> membeOne2 = memberClient.getMembeOne(articleCommentsVO.getBmemberId()); + 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); + }else { + articleCommentsVO1.setIslike(2); + } + articleCommentsVOList1.add(articleCommentsVO1); + } + + articleCommentsVO.setArticleCommentsVOList(articleCommentsVOList1); + + list2.add(articleCommentsVO); } - - - - return null; + return articleCommentsVOPageDTO; } @Override public void getReport(ArticleDTO articleDTO) { Article article= articleService.getById(articleDTO.getId()); - R<Member> membeOne = emberClient.getMembeOne(articleDTO.getMemberId()); + R<Member> membeOne = memberClient.getMembeOne(articleDTO.getMemberId()); Member data = membeOne.getData(); article.setReportBy(data.getNickname()); article.setReportedTime(LocalDateTime.now()); diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberArticleCollectionServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberArticleCollectionServiceImpl.java index 4acbc1e..f31f625 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberArticleCollectionServiceImpl.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberArticleCollectionServiceImpl.java @@ -1,10 +1,32 @@ package com.ruoyi.article.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.article.domain.Article; +import com.ruoyi.article.domain.ArticleComments; import com.ruoyi.article.domain.MemberArticleCollection; +import com.ruoyi.article.domain.MemberLike; +import com.ruoyi.article.dto.ArticleDTO; +import com.ruoyi.article.dto.MemberArticleCollectionDTO; import com.ruoyi.article.mapper.MemberArticleCollectionMapper; +import com.ruoyi.article.service.IArticleService; import com.ruoyi.article.service.IMemberArticleCollectionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.article.vo.ArticleCommentsVO; +import com.ruoyi.article.vo.ArticleVO; +import com.ruoyi.article.vo.MemberArticleCollectionVO; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.system.api.domain.Member; +import com.ruoyi.system.api.feignClient.MemberClient; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -17,4 +39,74 @@ @Service public class MemberArticleCollectionServiceImpl extends ServiceImpl<MemberArticleCollectionMapper, MemberArticleCollection> implements IMemberArticleCollectionService { + @Resource + private IMemberArticleCollectionService memberArticleCollectionService; + + @Resource + private IArticleService articleService; + @Resource + private MemberClient memberClient; + + @Override + public void saveMemberArticleCollection(MemberArticleCollectionDTO memberArticleCollectionDTO) { + if (memberArticleCollectionDTO.getMemberId()!=null) { + throw new ServiceException("用户ID不能为空"); + } + if (memberArticleCollectionDTO.getState()!=null) { + throw new ServiceException("类型不能为空"); + } + + LambdaQueryWrapper< MemberArticleCollection> wrapper= Wrappers.lambdaQuery(); + wrapper.eq(MemberArticleCollection::getMemberId,memberArticleCollectionDTO.getMemberId()); + wrapper.eq(MemberArticleCollection::getTargetId,memberArticleCollectionDTO.getTargetId()); + + if (memberArticleCollectionDTO.getState()==1){ + List<MemberArticleCollection> list = memberArticleCollectionService.list(wrapper); + if (list.size()==0){ + MemberArticleCollection m =new MemberArticleCollection(); + m.setMemberId(memberArticleCollectionDTO.getMemberId()); + m.setTargetId(memberArticleCollectionDTO.getTargetId()); + memberArticleCollectionService.save(m); + + Article byId = articleService.getById(memberArticleCollectionDTO.getTargetId()); + byId.setCollectCount(byId.getCollectCount()+1); + articleService.saveOrUpdate(byId); + } + + }else{ + List<MemberArticleCollection> list = memberArticleCollectionService.list(wrapper); + if (list.size()>0){ + for (MemberArticleCollection memberArticleCollection:list){ + Article byId = articleService.getById(memberArticleCollection.getTargetId()); + byId.setCollectCount(byId.getCollectCount()-1); + articleService.saveOrUpdate(byId); + memberArticleCollectionService.removeById(memberArticleCollection); + } + } + + } + } + + @Override + public PageDTO<MemberArticleCollectionVO> getMemberArticleCollection(ArticleDTO articleDTO) { + Page<MemberArticleCollection> page = new Page<>(articleDTO.getPageCurr(), articleDTO.getPageSize()); + LambdaQueryWrapper< MemberArticleCollection> wrapper= Wrappers.lambdaQuery(); + wrapper.eq(MemberArticleCollection::getMemberId,articleDTO.getMemberId()); + Page<MemberArticleCollection> page1 = memberArticleCollectionService.page(page, wrapper); + PageDTO<MemberArticleCollectionVO> articleCommentsVOPageDTO = PageDTO.of(page1, MemberArticleCollectionVO.class); + List<MemberArticleCollectionVO> list2 = articleCommentsVOPageDTO.getList(); + for (MemberArticleCollectionVO memberArticleCollectionVO:list2){ + Article byId = articleService.getById(memberArticleCollectionVO.getTargetId()); + memberArticleCollectionVO.setContent(byId.getContent()); + memberArticleCollectionVO.setImages(byId.getImages()); + memberArticleCollectionVO.setTitle(byId.getTitle()); + + R<Member> membeOne = memberClient.getMembeOne(memberArticleCollectionVO.getMemberId()); + Member data = membeOne.getData(); + memberArticleCollectionVO.setMemberNickname(data.getNickname()); + memberArticleCollectionVO.setIsCollect(1); + + } + return articleCommentsVOPageDTO; + } } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberLikeServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberLikeServiceImpl.java index 4655268..8c2ee66 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberLikeServiceImpl.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/MemberLikeServiceImpl.java @@ -46,53 +46,59 @@ if (memberLikeDTO.getState()!=null) { throw new ServiceException("类型不能为空"); } + LambdaQueryWrapper< MemberLike> wrapper= Wrappers.lambdaQuery(); + wrapper.eq(MemberLike::getMemberId,memberLikeDTO.getMemberId()); + wrapper.eq(MemberLike::getArticleId,memberLikeDTO.getArticleId()); + wrapper.eq(MemberLike::getType,memberLikeDTO.getType()); + wrapper.eq( MemberLike::getDelFlag,0); if (memberLikeDTO.getState()==1){ - MemberLike memberLike=new MemberLike(); - memberLike.setMemberId(memberLikeDTO.getMemberId()); - memberLike.setArticleId(memberLikeDTO.getArticleId()); - memberLike.setType(memberLikeDTO.getType()); - if (memberLikeDTO.getType()==1){ - Article byId = articleService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()+1); - articleService.saveOrUpdate(byId); - } - if (memberLikeDTO.getType()==2){ - ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()+1); - articleCommentsService.saveOrUpdate(byId); - } - if (memberLikeDTO.getType()==3){ - ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()+1); - articleCommentsService.saveOrUpdate(byId); - } - memberLikeService.save(memberLike); - }else{ - LambdaQueryWrapper< MemberLike> wrapper= Wrappers.lambdaQuery(); - wrapper.eq(MemberLike::getMemberId,memberLikeDTO.getMemberId()); - wrapper.eq(MemberLike::getArticleId,memberLikeDTO.getArticleId()); - wrapper.eq(MemberLike::getType,memberLikeDTO.getType()); - wrapper.eq( MemberLike::getDelFlag,0); List< MemberLike> memberLikes = memberLikeService.list(wrapper); - for (MemberLike memberLike:memberLikes){ - memberLikeService.removeById(memberLike); - + if (memberLikes.size()==0){ + MemberLike memberLike=new MemberLike(); + memberLike.setMemberId(memberLikeDTO.getMemberId()); + memberLike.setArticleId(memberLikeDTO.getArticleId()); + memberLike.setType(memberLikeDTO.getType()); if (memberLikeDTO.getType()==1){ Article byId = articleService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()-1); + byId.setLikeCount(byId.getLikeCount()+1); articleService.saveOrUpdate(byId); } if (memberLikeDTO.getType()==2){ ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()-1); + byId.setLikeCount(byId.getLikeCount()+1); articleCommentsService.saveOrUpdate(byId); } if (memberLikeDTO.getType()==3){ ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); - byId.setLikeCount(byId.getLikeCount()-1); + byId.setLikeCount(byId.getLikeCount()+1); articleCommentsService.saveOrUpdate(byId); } + memberLikeService.save(memberLike); } + }else{ + List< MemberLike> memberLikes = memberLikeService.list(wrapper); + if (memberLikes.size()>0){ + for (MemberLike memberLike:memberLikes){ + memberLikeService.removeById(memberLike); + + if (memberLikeDTO.getType()==1){ + Article byId = articleService.getById(memberLikeDTO.getArticleId()); + byId.setLikeCount(byId.getLikeCount()-1); + articleService.saveOrUpdate(byId); + } + if (memberLikeDTO.getType()==2){ + ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); + byId.setLikeCount(byId.getLikeCount()-1); + articleCommentsService.saveOrUpdate(byId); + } + if (memberLikeDTO.getType()==3){ + ArticleComments byId = articleCommentsService.getById(memberLikeDTO.getArticleId()); + byId.setLikeCount(byId.getLikeCount()-1); + articleCommentsService.saveOrUpdate(byId); + } + } + } + } } } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleCommentsVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleCommentsVO.java index 4d070b5..0a4ef06 100644 --- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleCommentsVO.java +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleCommentsVO.java @@ -42,9 +42,11 @@ @ApiModelProperty(value = "会员头像") private String bmemberNickavatar; + @ApiModelProperty(value = "点赞数") + private Integer likeCount; - @ApiModelProperty("点赞数") - private Integer likeNum; + @ApiModelProperty("是否点赞 1 点赞, 2 未点赞") + private Integer islike; List<ArticleCommentsVO> articleCommentsVOList; } diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleVO.java new file mode 100644 index 0000000..2753f89 --- /dev/null +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/ArticleVO.java @@ -0,0 +1,60 @@ +package com.ruoyi.article.vo; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.enums.ArticleTypeEnum; +import com.ruoyi.common.core.enums.AuditStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ArticleVO { + @ApiModelProperty(value = "资讯id") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + @ApiModelProperty(value = "资讯类型 1=平台发布 2=用户发布") + private ArticleTypeEnum articleType; + + @ApiModelProperty(value = "资讯标题") + private String title; + + @ApiModelProperty(value = "资讯内容") + private String content; + + @ApiModelProperty(value = "资讯图片 ['a','b','c','d','e']") + private String images; + + @ApiModelProperty(value = "资讯视频") + private String videoUrl; + + @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝 4被举报") + private AuditStatusEnum status; + + @ApiModelProperty(value = "点赞数") + private Integer likeCount; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "收藏数") + private Integer collectCount; + + @ApiModelProperty(value = "评论数") + private Integer commentCount; + + @ApiModelProperty(value = "会员id") + private Long memberId; + @ApiModelProperty(value = "拒绝原因") + private String refuseComment; + + @ApiModelProperty("是否点赞 1 点赞, 2 未点赞") + private Integer isLike; + + @ApiModelProperty("是否收藏 1收藏, 2 未收藏") + private Integer isCollect; + + @ApiModelProperty(value = "会员名称") + private String memberNickname; +} diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/MemberArticleCollectionVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/MemberArticleCollectionVO.java new file mode 100644 index 0000000..27a10e9 --- /dev/null +++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/vo/MemberArticleCollectionVO.java @@ -0,0 +1,41 @@ +package com.ruoyi.article.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class MemberArticleCollectionVO { + + private Integer id; + + @ApiModelProperty(value = "收藏目标id") + private Long targetId; + + @ApiModelProperty(value = "会员id") + private Long memberId; + + @ApiModelProperty(value = "资讯标题") + private String title; + + @ApiModelProperty(value = "资讯内容") + private String content; + + @ApiModelProperty(value = "资讯图片 ['a','b','c','d','e']") + private String images; + + @ApiModelProperty(value = "资讯视频") + private String videoUrl; + + @ApiModelProperty(value = "会员名称") + private String memberNickname; + + @ApiModelProperty("是否收藏 1收藏, 2 未收藏") + private Integer isCollect; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; +} -- Gitblit v1.7.1