Commit b914ade3 by 段启岩

动态完成是否点赞

parent 58d00de6
......@@ -13,25 +13,18 @@ import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.post.form.PostForm;
import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.post.vo.PostVO;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import cn.meteor.beyondclouds.util.PageUtils;
import cn.meteor.beyondclouds.util.SubjectUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -136,10 +129,8 @@ public class PostApi {
return Response.error(PostErrorCode.TYPE_ERROR);
}
IPage<Post> postPage = postService.getPostPage(pageForm.getPage(), pageForm.getSize(), type);
return Response.success(toPostVOPage(postPage));
PageDTO<PostDTO> postPage = postService.getPostPage(pageForm.getPage(), pageForm.getSize(), type);
return Response.success(postPage);
}
/**
......@@ -155,8 +146,8 @@ public class PostApi {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
return Response.success(toPostVOPage(postPage));
PageDTO<PostDTO> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
return Response.success(postPage);
}
/**
......@@ -174,48 +165,8 @@ public class PostApi {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), userId);
return Response.success(toPostVOPage(postPage));
}
/**
* 动态图片输出格式转化
*
* @param postPage
* @return
*/
private PageDTO<? extends PostVO> toPostVOPage(IPage<Post> postPage) {
List<PostVO> postVOList;
if (SubjectUtils.isAuthenticated()) {
postVOList = postPage.getRecords().stream()
.map(post -> {
PostVO postVO = new PostVO();
BeanUtils.copyProperties(post, postVO);
if (!StringUtils.isEmpty(post.getPictures())) {
postVO.setPictures(post.getPictures().split(","));
}
postVO.setFollowedAuthor(userFollowService.hasFollowedUser(post.getUserId()));
return postVO;
}).collect(Collectors.toList());
} else {
postVOList = postPage.getRecords().stream()
.map(post -> {
PostVO postVO = new PostVO();
BeanUtils.copyProperties(post, postVO);
if (!StringUtils.isEmpty(post.getPictures())) {
postVO.setPictures(post.getPictures().split(","));
}
postVO.setFollowedAuthor(false);
return postVO;
}).collect(Collectors.toList());
}
PageDTO<PostVO> postPageDTO = new PageDTO<>();
PageUtils.copyMeta(postPage, postPageDTO);
postPageDTO.setDataList(postVOList);
return postPageDTO;
PageDTO<PostDTO> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), userId);
return Response.success(postPage);
}
@ReplaceWithRemarks
......@@ -225,8 +176,8 @@ public class PostApi {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getFollowedPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
return Response.success(toPostVOPage(postPage));
PageDTO<PostDTO> postPage = postService.getFollowedPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
return Response.success(postPage);
}
/**
......
......@@ -43,7 +43,7 @@ public interface IPostService extends IService<Post> {
* @param type
* @return
*/
IPage<Post> getPostPage(Integer pageNumber, Integer pageSize, Integer type);
PageDTO<PostDTO> getPostPage(Integer pageNumber, Integer pageSize, Integer type);
/**
* 个人动态列表
......@@ -53,7 +53,7 @@ public interface IPostService extends IService<Post> {
* @param userId
* @return
*/
IPage<Post> getUserPostPage(Integer pageNumber, Integer pageSize, String userId);
PageDTO<PostDTO> getUserPostPage(Integer pageNumber, Integer pageSize, String userId);
/**
* 更新动态里的用户头像
......@@ -77,7 +77,7 @@ public interface IPostService extends IService<Post> {
* @param userId
* @return
*/
IPage<Post> getFollowedPostPage(Integer pageNumber, Integer pageSize, String userId);
PageDTO<PostDTO> getFollowedPostPage(Integer pageNumber, Integer pageSize, String userId);
/**
* 推荐动态
......
package cn.meteor.beyondclouds.modules.post.service.impl;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.post.dto.PostDTO;
......@@ -44,6 +45,8 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -283,7 +286,7 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
* @return
*/
@Override
public IPage<Post> getPostPage(Integer pageNumber, Integer pageSize, Integer type) {
public PageDTO<PostDTO> getPostPage(Integer pageNumber, Integer pageSize, Integer type) {
IPage<Post> postPage = new Page<>(pageNumber, pageSize);
QueryWrapper<Post> queryWrapper = new QueryWrapper();
queryWrapper.eq("status", 0);
......@@ -291,7 +294,7 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
if (null != type) {
queryWrapper.eq("type", type);
}
return page(postPage, queryWrapper);
return toPageDTO(page(postPage, queryWrapper));
}
/**
......@@ -303,7 +306,7 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
* @return
*/
@Override
public IPage<Post> getUserPostPage(Integer pageNumber, Integer pageSize, String userId) {
public PageDTO<PostDTO> getUserPostPage(Integer pageNumber, Integer pageSize, String userId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", userId);
if (!SubjectUtils.isAuthenticated() || !SubjectUtils.getSubject().getId().equals(userId)) {
......@@ -312,7 +315,7 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
queryWrapper.orderByDesc("create_time");
IPage<Post> postPage = new Page<>(pageNumber, pageSize);
return page(postPage, queryWrapper);
return toPageDTO(page(postPage, queryWrapper));
}
/**
......@@ -349,7 +352,7 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
}
@Override
public IPage<Post> getFollowedPostPage(Integer pageNumber, Integer pageSize, String userId) {
public PageDTO<PostDTO> getFollowedPostPage(Integer pageNumber, Integer pageSize, String userId) {
IPage<Post> postPage = new Page<>(pageNumber, pageSize);
//查询出我所关注的用户
QueryWrapper<UserFollow> userFollowQueryWrapper = new QueryWrapper<>();
......@@ -364,9 +367,9 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
postQueryWrapper.in("user_id", followedIds);
postQueryWrapper.eq("status", 0);
postQueryWrapper.orderByDesc("create_time");
return page(postPage, postQueryWrapper);
return toPageDTO(page(postPage, postQueryWrapper));
} else {
return postPage;
return PageUtils.emptyPageDTO();
}
}
......@@ -385,6 +388,19 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
private PageDTO<PostDTO> toPageDTO(IPage<Post> postPage) {
List<PostDTO> postDTOList;
if (SubjectUtils.isAuthenticated()) {
List<String> postIds = postPage.getRecords().stream()
.map(Post::getPostId)
.collect(Collectors.toList());
// 获取点赞情况
QueryWrapper<PostPraise> postPraiseQueryWrapper = new QueryWrapper<>();
postPraiseQueryWrapper.in("target_id", postIds);
postPraiseQueryWrapper.eq("target_type", PostPraiseType.POST_PRAISE.getPraiseType());
postPraiseQueryWrapper.eq("user_id", SubjectUtils.getSubject().getId());
List<PostPraise> postPraiseList = postPraiseService.list(postPraiseQueryWrapper);
Set<String> praisedPostIds = postPraiseList.stream()
.map(PostPraise::getTargetId)
.collect(Collectors.toSet());
postDTOList = postPage.getRecords().stream()
.map(post -> {
PostDTO postDTO = new PostDTO();
......@@ -392,20 +408,21 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
if (!StringUtils.isEmpty(post.getPictures())) {
postDTO.setPictures(post.getPictures().split(","));
}
postDTO.setPraised(praisedPostIds.contains(post.getPostId()));
postDTO.setFollowedAuthor(userFollowService.hasFollowedUser(post.getUserId()));
return postDTO;
}).collect(Collectors.toList());
} else {
postDTOList = postPage.getRecords().stream()
.map(post -> {
PostDTO postVO = new PostDTO();
BeanUtils.copyProperties(post, postVO);
PostDTO postDTO = new PostDTO();
BeanUtils.copyProperties(post, postDTO);
if (!StringUtils.isEmpty(post.getPictures())) {
postVO.setPictures(post.getPictures().split(","));
postDTO.setPictures(post.getPictures().split(","));
}
postVO.setFollowedAuthor(false);
return postVO;
postDTO.setFollowedAuthor(false);
postDTO.setPraised(false);
return postDTO;
}).collect(Collectors.toList());
}
PageDTO<PostDTO> pageDTO = new PageDTO<>();
......
package cn.meteor.beyondclouds.modules.post.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author meteor
*/
@Data
public class PostVO {
private static final long serialVersionUID=1L;
private String postId;
private String userId;
private Integer type;
private String content;
private String[] pictures;
private String video;
private String userAvatar;
private String userNick;
private Integer commentNumber;
private Integer status;
private Integer praiseNum;
private Date createTime;
private Date updateTime;
private Boolean followedAuthor;
private Boolean praised;
}
......@@ -19,6 +19,15 @@ public class PageUtils {
return page;
}
public static <T>PageDTO<T> emptyPageDTO() {
PageDTO<T> page = new PageDTO<>();
page.setTotalRecords(0L);
page.setTotalPage(0L);
page.setDataList(List.of());
page.setPageSize(0);
return page;
}
public static void copyMeta(IPage<?> src, PageDTO<?> dest) {
dest.setTotalPage(src.getPages());
dest.setPageSize(src.getSize());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment