| | |
| | | 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.MgtArticleAuditDTO; |
| | | import com.ruoyi.article.controller.management.dto.MgtArticleDTO; |
| | | import com.ruoyi.article.controller.management.dto.MgtArticleQuery; |
| | | import com.ruoyi.article.controller.management.dto.MgtArticleUpdDTO; |
| | | import com.ruoyi.article.controller.management.vo.MgtArticleVO; |
| | | import com.ruoyi.article.domain.Article; |
| | | import com.ruoyi.article.domain.ArticleComments; |
| | |
| | | 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.page.BeanUtils; |
| | | import com.ruoyi.common.core.utils.page.CollUtils; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.system.api.domain.Member; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.domain.dto.MemberDTO; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | 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.Transactional; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | Member data = membeOne.getData(); |
| | | articleVO.setMemberNickname(data.getNickname()); |
| | | articleVO.setMemberAvatar(data.getAvatar()); |
| | | }else{ |
| | | articleVO.setMemberNickname("平台发布"); |
| | | articleVO.setMemberAvatar("https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); |
| | | } |
| | | LambdaQueryWrapper<MemberLike> wrapper1 = Wrappers.lambdaQuery(); |
| | | wrapper1.eq(MemberLike::getMemberId, articleDTO.getMemberId()); |
| | |
| | | @Override |
| | | public ArticleVO getMemberArticleInfo(ArticleDTO articleDTO) { |
| | | Article article=this.getById(articleDTO.getId()); |
| | | if (StringUtils.isNull(article)) { |
| | | throw new ServiceException("资讯不存在了"); |
| | | } |
| | | ArticleVO articleVO = BeanUtils.copyBean(article, |
| | | ArticleVO.class); |
| | | R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId(), |
| | | SecurityConstants.INNER); |
| | | Member data = membeOne.getData(); |
| | | articleVO.setMemberNickname(data.getNickname()); |
| | | articleVO.setMemberAvatar(data.getAvatar()); |
| | | if(articleVO!=null){ |
| | | R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId(), |
| | | SecurityConstants.INNER); |
| | | Member data = membeOne.getData(); |
| | | if (data!=null){ |
| | | articleVO.setMemberNickname(data.getNickname()); |
| | | articleVO.setMemberAvatar(data.getAvatar()); |
| | | |
| | | } |
| | | }else{ |
| | | articleVO.setMemberNickname("平台发布"); |
| | | articleVO.setMemberAvatar("https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); |
| | | } |
| | | LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery(); |
| | | wrapper1.eq(MemberLike::getMemberId,articleDTO.getMemberId()); |
| | | wrapper1.eq(MemberLike::getArticleId,article.getId()); |
| | |
| | | |
| | | @Override |
| | | public PageDTO<ArticleCommentsVO> getArticleCommentsList(ArticleDTO articleDTO) { |
| | | Long userId = SecurityUtils.getUserId(); |
| | | Member member = memberClient.getMemberByUserId(userId, SecurityConstants.INNER).getData(); |
| | | Page<ArticleComments> page = new Page<>(articleDTO.getPageCurr(), articleDTO.getPageSize()); |
| | | LambdaQueryWrapper< ArticleComments> wrapper= Wrappers.lambdaQuery(); |
| | | wrapper.eq(ArticleComments::getArticleId,articleDTO.getId()); |
| | |
| | | R<Member> membeOne = memberClient.getMembeOne(articleCommentsVO.getMemberId(), |
| | | SecurityConstants.INNER); |
| | | Member data = membeOne.getData(); |
| | | articleCommentsVO.setMemberNickname(data.getNickname()); |
| | | articleCommentsVO.setMemberNickavatar(data.getAvatar()); |
| | | if (data!=null){ |
| | | articleCommentsVO.setMemberNickname(data.getNickname()); |
| | | articleCommentsVO.setMemberNickavatar(data.getAvatar()); |
| | | }else{ |
| | | articleCommentsVO.setMemberNickname("平台发布"); |
| | | articleCommentsVO.setMemberNickavatar("https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); |
| | | } |
| | | |
| | | LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery(); |
| | | wrapper1.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId()); |
| | | wrapper1.eq(MemberLike::getMemberId, member.getId()); |
| | | wrapper1.eq(MemberLike::getArticleId,articleCommentsVO.getId()); |
| | | wrapper1.eq(MemberLike::getType,2); |
| | | wrapper1.eq( MemberLike::getDelFlag,0); |
| | |
| | | articleCommentsVO1.setContent(articleComments1.getContent()); |
| | | articleCommentsVO1.setMemberId(articleComments1.getMemberId()); |
| | | articleCommentsVO1.setId(articleComments1.getId()); |
| | | articleCommentsVO1.setMemberNickname(data1.getNickname()); |
| | | articleCommentsVO1.setMemberNickavatar(data1.getAvatar()); |
| | | articleCommentsVO1.setBmemberNickavatar(data1.getAvatar()); |
| | | if (data1!=null){ |
| | | articleCommentsVO1.setMemberNickname(data1.getNickname()); |
| | | articleCommentsVO1.setMemberNickavatar(data1.getAvatar()); |
| | | } |
| | | |
| | | |
| | | articleCommentsVO1.setLikeCount(articleComments1.getLikeCount()); |
| | | articleCommentsVO1.setCreateTime(articleComments1.getCreateTime()); |
| | | articleCommentsVO1.setBmemberNickname(data2.getNickname()); |
| | | articleCommentsVO1.setState(articleComments1.getState()); |
| | | articleCommentsVO1.setBmemberId(data2.getId()); |
| | | if (data2!=null){ |
| | | articleCommentsVO1.setBmemberNickname(data2.getNickname()); |
| | | articleCommentsVO1.setBmemberNickavatar(data2.getAvatar()); |
| | | articleCommentsVO1.setBmemberId(data2.getId()); |
| | | } |
| | | |
| | | articleCommentsVO1.setState(articleComments1.getState()); |
| | | LambdaQueryWrapper<MemberLike> wrapper3= Wrappers.lambdaQuery(); |
| | | wrapper3.eq(MemberLike::getMemberId,articleCommentsVO.getMemberId()); |
| | | wrapper3.eq(MemberLike::getArticleId,articleComments1.getId()); |
| | |
| | | }else { |
| | | articleCommentsVO1.setIslike(2); |
| | | } |
| | | articleCommentsVOList1.add(articleCommentsVO1); |
| | | if (data1!=null){ |
| | | articleCommentsVOList1.add(articleCommentsVO1); |
| | | } |
| | | |
| | | } |
| | | |
| | | articleCommentsVO.setArticleCommentsVOList(articleCommentsVOList1); |
| | |
| | | // 构建查询条件 |
| | | Set<Long> sysUserIdSet = null; |
| | | Set<Long> memberIdSet = null; |
| | | Page<Article> page = new Page<>(query.getPageCurr(), query.getPageSize()); |
| | | if (StringUtils.isNotBlank(query.getCreateBy()) || StringUtils.isNotBlank( |
| | | query.getPhone())) { |
| | | SysUser user = new SysUser(); |
| | |
| | | user.setPhonenumber(query.getPhone()); |
| | | List<SysUser> sysUserList = sysUserClient.getUserListByName(user, |
| | | SecurityConstants.INNER).getData(); |
| | | if (CollUtils.isNotEmpty(sysUserList)) { |
| | | sysUserIdSet = sysUserList.stream().map(SysUser::getUserId) |
| | | .collect(Collectors.toSet()); |
| | | } |
| | | MemberDTO memberDTO = new MemberDTO(); |
| | | memberDTO.setNickname(query.getCreateBy()); |
| | | memberDTO.setPhone(query.getPhone()); |
| | | List<Member> memberlist = memberClient.getMemberListByCondition(memberDTO, |
| | | SecurityConstants.INNER).getData(); |
| | | memberIdSet = memberlist.stream().map(Member::getId) |
| | | if (CollUtils.isNotEmpty(memberlist)) { |
| | | memberIdSet = memberlist.stream().map(Member::getId) |
| | | .collect(Collectors.toSet()); |
| | | } |
| | | if (StringUtils.isEmpty(sysUserIdSet) && StringUtils.isEmpty(memberIdSet)) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | } |
| | | // 分页查询 |
| | | Page<Article> page = this.lambdaQuery() |
| | | page = this.lambdaQuery() |
| | | .in(StringUtils.isNotEmpty(sysUserIdSet), Article::getCreateBy, |
| | | sysUserIdSet) |
| | | .or() |
| | | .in(StringUtils.isNotEmpty(memberIdSet), Article::getMemberId, memberIdSet) |
| | | .eq(StringUtils.isNotNull(query.getListingStatus()), Article::getListingStatus, |
| | | query.getListingStatus()) |
| | | .eq(StringUtils.isNotNull(query.getArticleType()), Article::getArticleType, |
| | | query.getArticleType()) |
| | | .eq(StringUtils.isNotNull(query.getStatus()), Article::getStatus, |
| | | query.getStatus()) |
| | | .in(StringUtils.isNotNull(query.getArticleType()) && query.getArticleType() |
| | | .equals(ArticleTypeEnum.USER_POSTING), Article::getStatus, |
| | | Lists.newArrayList(AuditStatusEnum.TO_BE_REVIEWED, |
| | | AuditStatusEnum.REJECTED)) |
| | | .like(StringUtils.isNotBlank(query.getTitle()), Article::getTitle, query.getTitle()) |
| | | .orderByDesc(Article::getStatus) |
| | | .orderByDesc(Article::getReported) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | |
| | | // 若为空直接返回 |
| | | if (StringUtils.isNotEmpty(page.getRecords())) { |
| | | if (StringUtils.isEmpty(page.getRecords())) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | /*根据资讯的发布类型分别从系统用户表和会员表中查询发布人信息并封装VO*/ |
| | |
| | | Set<Long> memIds = voList.stream().filter(articleVO -> articleVO.getArticleType() |
| | | .equals(ArticleTypeEnum.USER_POSTING)).map(MgtArticleVO::getMemberId).collect( |
| | | Collectors.toSet()); |
| | | Set<Long> memIds2 = voList.stream().map(MgtArticleVO::getReportBy).filter( |
| | | Objects::nonNull).map(Long::valueOf).collect( |
| | | Collectors.toSet()); |
| | | memIds.addAll(memIds2); |
| | | if (StringUtils.isNotEmpty(memIds)) { |
| | | List<Member> memberList = memberClient.getMemberListByIds(memIds, |
| | | SecurityConstants.INNER) |
| | | .getData(); |
| | | SecurityConstants.INNER).getData(); |
| | | memberMap = memberList.stream().collect( |
| | | Collectors.toMap(Member::getId, Function.identity())); |
| | | } else { |
| | | memberMap = null; |
| | | } |
| | | if (StringUtils.isNotNull(userMap)) { |
| | | if (StringUtils.isNotEmpty(userMap)) { |
| | | voList.stream().filter(articleVO -> articleVO.getArticleType() |
| | | .equals(ArticleTypeEnum.PLATFORM_RELEASE)).forEach(articleVO -> { |
| | | SysUser sysUser = userMap.get(Long.valueOf(articleVO.getCreateBy())); |
| | | if (StringUtils.isNotNull(sysUser)) { |
| | | articleVO.setCreateBy(sysUser.getNickName()); |
| | | articleVO.setPhone(sysUser.getPhonenumber()); |
| | | } else { |
| | | articleVO.setCreateBy(null); |
| | | } |
| | | }); |
| | | } |
| | | if (StringUtils.isNotNull(memberMap)) { |
| | | if (StringUtils.isNotEmpty(memberMap)) { |
| | | voList.stream().filter(articleVO -> articleVO.getArticleType() |
| | | .equals(ArticleTypeEnum.USER_POSTING)).forEach(articleVO -> { |
| | | Member member = memberMap.get(articleVO.getMemberId()); |
| | | if (StringUtils.isNotNull(member)) { |
| | | articleVO.setCreateBy(member.getNickname()); |
| | | articleVO.setPhone(member.getPhone()); |
| | | } else { |
| | | articleVO.setCreateBy(null); |
| | | } |
| | | }); |
| | | voList.stream().filter(articleVO -> articleVO.getReported().equals(Boolean.TRUE)) |
| | | .peek(articleVO -> { |
| | | Member member = memberMap.get(Long.valueOf(articleVO.getReportBy())); |
| | | if (StringUtils.isNotNull(member)) { |
| | | articleVO.setReportBy(member.getNickname()); |
| | | } |
| | | }).collect(Collectors.toList()); |
| | | } |
| | | return pageVO; |
| | | } |
| | |
| | | Article article = BeanUtils.copyBean(dto, Article.class); |
| | | if (StringUtils.isNull(article.getId())) { |
| | | article.setStatus(AuditStatusEnum.PASSED); |
| | | article.setArticleType(ArticleTypeEnum.PLATFORM_RELEASE); |
| | | this.save(article); |
| | | } else { |
| | | Article articleById = this.getById(article.getId()); |
| | |
| | | if (StringUtils.isNull(article)) { |
| | | throw new ServiceException("资讯不存在"); |
| | | } |
| | | return BeanUtils.copyBean(article, MgtArticleVO.class); |
| | | MgtArticleVO mgtArticleVO = BeanUtils.copyBean(article, MgtArticleVO.class); |
| | | long count = articleCommentsService.count( |
| | | Wrappers.lambdaQuery(ArticleComments.class).eq(ArticleComments::getArticleId, id) |
| | | .eq(ArticleComments::getType, 1)); |
| | | mgtArticleVO.setCommentCount((int) count); |
| | | return mgtArticleVO; |
| | | } |
| | | |
| | | /** |
| | | * 资讯审核 |
| | | * |
| | | * @param dto 管理后台-资讯审核传输对象 |
| | | */ |
| | | @Override |
| | | public void audit(MgtArticleAuditDTO dto) { |
| | | Article article = this.getById(dto.getId()); |
| | | if (StringUtils.isNull(article)) { |
| | | throw new ServiceException("资讯不存在"); |
| | | } |
| | | article.setStatus(dto.getStatus()); |
| | | if (AuditStatusEnum.REJECTED.equals(dto.getStatus())) { |
| | | article.setRefuseComment(dto.getRefuseComment()); |
| | | } |
| | | this.updateById(article); |
| | | } |
| | | |
| | | /** |
| | | * 上架/下架 |
| | | * |
| | | * @param dto 资讯上下架数据传输对象 |
| | | */ |
| | | @Override |
| | | public void updStatus(MgtArticleUpdDTO dto) { |
| | | this.lambdaUpdate().set(Article::getListingStatus, dto.getListingStatus()) |
| | | .eq(Article::getId, dto.getId()).update(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void removeCommentsById(Long id) { |
| | | ArticleComments articleComments = articleCommentsService.getById(id); |
| | | if (StringUtils.isNull(articleComments)) { |
| | | throw new ServiceException("评论/回复不存在"); |
| | | } |
| | | articleCommentsService.removeById(id); |
| | | // 评论 |
| | | if (articleComments.getType().equals(1)) { |
| | | // 查询回复 |
| | | List<ArticleComments> replyList = articleCommentsService.lambdaQuery() |
| | | .eq(ArticleComments::getReplyId, id).list(); |
| | | if (StringUtils.isNotEmpty(replyList)) { |
| | | List<Long> replyIds = replyList.stream().map(ArticleComments::getId) |
| | | .collect(Collectors.toList()); |
| | | articleCommentsService.removeByIds(replyIds); |
| | | } |
| | | } |
| | | } |
| | | } |