| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.google.common.collect.Lists; |
| | | 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.MgtArticleQuery; |
| | | import com.ruoyi.article.controller.management.vo.MgtArticleVO; |
| | | 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.controller.forepart.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.controller.forepart.vo.ArticleCommentsVO; |
| | | import com.ruoyi.article.controller.forepart.vo.ArticleVO; |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | 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.StringUtils; |
| | | 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.SysUser; |
| | | import com.ruoyi.system.api.domain.dto.MemberDTO; |
| | | import com.ruoyi.system.api.feignClient.MemberClient; |
| | | import com.ruoyi.system.api.util.HuaWeiOBSUtil; |
| | | import java.io.IOException; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | 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.web.multipart.MultipartFile; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private IMemberArticleCollectionService memberArticleCollectionService; |
| | | |
| | | @Resource |
| | | private SysUserClient sysUserClient; |
| | | |
| | | @Override |
| | | public PageDTO<ArticleVO> getArticleList(ArticleDTO articleDTO) { |
| | | Page<Article> page = new Page<>(articleDTO.getPageCurr(), articleDTO.getPageSize()); |
| | |
| | | if (articleDTO.getArticleType()!=0){ |
| | | wrapper.eq(Article::getArticleType,articleDTO.getArticleType()); |
| | | } |
| | | wrapper.like(Article::getTitle,articleDTO.getTitle()); |
| | | if (articleDTO.getTitle()!=null){ |
| | | wrapper.like(Article::getTitle,articleDTO.getTitle()); |
| | | } |
| | | wrapper.eq(Article::getStatus,2); |
| | | wrapper.eq( Article::getDelFlag,0); |
| | | wrapper.orderByDesc(Article::getCreateTime); |
| | |
| | | SecurityConstants.INNER); |
| | | Member data = membeOne.getData(); |
| | | articleVO.setMemberNickname(data.getNickname()); |
| | | articleVO.setMemberAvatar(data.getAvatar()); |
| | | } |
| | | LambdaQueryWrapper<MemberLike> wrapper1 = Wrappers.lambdaQuery(); |
| | | wrapper1.eq(MemberLike::getMemberId, articleDTO.getMemberId()); |
| | |
| | | Page<Article> page = new Page<>(articleDTO.getPageCurr(), articleDTO.getPageSize()); |
| | | LambdaQueryWrapper< Article> wrapper= Wrappers.lambdaQuery(); |
| | | wrapper.eq(Article::getMemberId,articleDTO.getMemberId()); |
| | | wrapper.eq(Article::getArticleType,2); |
| | | wrapper.eq( Article::getDelFlag,0); |
| | | wrapper.orderByDesc(Article::getCreateTime); |
| | | Page<Article> page1 = this.page(page, wrapper); |
| | |
| | | article=this.getById(articleDTO.getId()); |
| | | } |
| | | article.setMemberId(articleDTO.getMemberId()); |
| | | |
| | | article.setArticleType(ArticleTypeEnum.USER_POSTING); |
| | | article.setStatus(AuditStatusEnum.TO_BE_REVIEWED); |
| | | article.setContent(articleDTO.getContent()); |
| | | article.setTitle(articleDTO.getTitle()); |
| | | List<String> urlList=new ArrayList<>(); |
| | | if (articleDTO.getRticleImageUrl().length>0){ |
| | | for (MultipartFile file:articleDTO.getRticleImageUrl()){ |
| | | try { |
| | | String url= HuaWeiOBSUtil.obsUpload(file); |
| | | urlList.add(url); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | article.setImages(urlList.toString()); |
| | | } |
| | | article.setImages(articleDTO.getRticleImageUrl()); |
| | | this.saveOrUpdate(article); |
| | | |
| | | } |
| | |
| | | public ArticleVO getMemberArticleInfo(ArticleDTO articleDTO) { |
| | | Article article=this.getById(articleDTO.getId()); |
| | | ArticleVO articleVO=new ArticleVO(); |
| | | |
| | | BeanUtils.copyProperties(article, articleVO); |
| | | |
| | | R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId(), |
| | | SecurityConstants.INNER); |
| | | Member data = membeOne.getData(); |
| | | articleVO.setMemberNickname(data.getNickname()); |
| | | articleVO.setMemberAvatar(data.getAvatar()); |
| | | |
| | | LambdaQueryWrapper<MemberLike> wrapper1= Wrappers.lambdaQuery(); |
| | | wrapper1.eq(MemberLike::getMemberId,articleDTO.getMemberId()); |
| | |
| | | article.setReportedTime(LocalDateTime.now()); |
| | | this.saveOrUpdate(article); |
| | | } |
| | | |
| | | @Override |
| | | public PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query) { |
| | | // 构建查询条件 |
| | | Set<Long> sysUserIdSet = null; |
| | | Set<Long> memberIdSet = null; |
| | | if (StringUtils.isNotBlank(query.getCreateBy()) || StringUtils.isNotBlank( |
| | | query.getPhone())) { |
| | | SysUser user = new SysUser(); |
| | | user.setNickName(query.getCreateBy()); |
| | | user.setPhonenumber(query.getPhone()); |
| | | List<SysUser> sysUserList = sysUserClient.getUserListByName(user, |
| | | SecurityConstants.INNER).getData(); |
| | | 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) |
| | | .collect(Collectors.toSet()); |
| | | } |
| | | // 分页查询 |
| | | Page<Article> page = this.lambdaQuery() |
| | | .in(StringUtils.isNotEmpty(sysUserIdSet), Article::getCreateBy, |
| | | sysUserIdSet) |
| | | .in(StringUtils.isNotEmpty(memberIdSet), Article::getMemberId, memberIdSet) |
| | | .eq(StringUtils.isNotNull(query.getListingStatus()), Article::getListingStatus, |
| | | query.getListingStatus()) |
| | | .like(StringUtils.isNotBlank(query.getTitle()), Article::getTitle, query.getTitle()) |
| | | .orderByDesc(Article::getStatus) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | |
| | | // 若为空直接返回 |
| | | if (StringUtils.isNotEmpty(page.getRecords())) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | /*根据资讯的发布类型分别从系统用户表和会员表中查询发布人信息并封装VO*/ |
| | | PageDTO<MgtArticleVO> pageVO = PageDTO.of(page, MgtArticleVO.class); |
| | | List<MgtArticleVO> voList = pageVO.getList(); |
| | | Set<Integer> sysUserIds = voList.stream().filter(articleVO -> articleVO.getArticleType() |
| | | .equals(ArticleTypeEnum.PLATFORM_RELEASE)).map(MgtArticleVO::getCreateBy) |
| | | .map(Integer::valueOf).collect( |
| | | Collectors.toSet()); |
| | | |
| | | Map<Long, SysUser> userMap; |
| | | Map<Long, Member> memberMap; |
| | | if (StringUtils.isNotEmpty(sysUserIds)) { |
| | | List<SysUser> userList = sysUserClient.getUserList(Lists.newArrayList(sysUserIds)) |
| | | .getData(); |
| | | userMap = userList.stream().collect( |
| | | Collectors.toMap(SysUser::getUserId, Function.identity())); |
| | | } else { |
| | | userMap = null; |
| | | } |
| | | Set<Long> memIds = voList.stream().filter(articleVO -> articleVO.getArticleType() |
| | | .equals(ArticleTypeEnum.USER_POSTING)).map(MgtArticleVO::getMemberId).collect( |
| | | Collectors.toSet()); |
| | | if (StringUtils.isNotEmpty(memIds)) { |
| | | List<Member> memberList = memberClient.getMemberListByIds(memIds, |
| | | SecurityConstants.INNER) |
| | | .getData(); |
| | | memberMap = memberList.stream().collect( |
| | | Collectors.toMap(Member::getId, Function.identity())); |
| | | } else { |
| | | memberMap = null; |
| | | } |
| | | if (StringUtils.isNotNull(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()); |
| | | } |
| | | }); |
| | | } |
| | | if (StringUtils.isNotNull(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()); |
| | | } |
| | | }); |
| | | } |
| | | return pageVO; |
| | | } |
| | | } |