Commit 84d39d7d by 段启岩

添加是否关注用户的功能

parent dcc60646
......@@ -26,7 +26,7 @@ public class PageVO<T> {
/**
* 每页数据量
*/
private long pageNumber;
private long pageSize;
/**
* 数据
......@@ -40,13 +40,13 @@ public class PageVO<T> {
setDataList(page.getRecords());
setTotalPage(page.getPages());
setTotalRecords(page.getTotal());
setPageNumber(page.getSize());
setPageSize(page.getSize());
}
public PageVO(Page<T> page) {
setDataList(page.getContent());
setTotalPage(page.getTotalPages());
setTotalRecords(page.getTotalElements());
setPageNumber(page.getSize());
setPageSize(page.getSize());
}
}
\ No newline at end of file
......@@ -11,5 +11,7 @@ import lombok.Data;
@Data
public class BlogDetailDTO extends Blog {
private Boolean followedAuthor;
private String content;
}
......@@ -20,6 +20,7 @@ import cn.meteor.beyondclouds.modules.topic.enums.TopicReferenceType;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.util.AbstractUtils;
import cn.meteor.beyondclouds.util.PageUtils;
......@@ -39,6 +40,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -73,6 +75,8 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IMessageQueueService messageQueueService;
private IUserFollowService userFollowService;
@Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCategoryService blogCategoryService, BlogMapper blogMapper, ITagService tagService) {
this.blogTagService = blogTagService;
......@@ -84,6 +88,11 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
@Autowired
public void setUserFollowService(IUserFollowService userFollowService) {
this.userFollowService = userFollowService;
}
@Autowired
public void setMessageQueueService(IMessageQueueService messageQueueService) {
this.messageQueueService = messageQueueService;
}
......@@ -105,6 +114,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 发布博客
*
* @param blog
* @param content
* @param topicIds
......@@ -158,6 +168,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 删除博客
*
* @param userId
* @param blogId
* @throws BlogServiceException
......@@ -177,8 +188,8 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
//2.删除博客评论表
QueryWrapper<BlogComment> queryWrapperComment = new QueryWrapper();
queryWrapperComment.eq("blog_id",blogId);
QueryWrapper<BlogComment> queryWrapperComment = new QueryWrapper();
queryWrapperComment.eq("blog_id", blogId);
blogCommentService.remove(queryWrapperComment);
//3.删除博客内容
......@@ -208,6 +219,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 博客详情
*
* @param blogId
* @return
* @throws BlogServiceException
......@@ -264,15 +276,37 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
blog.setTopics(List.of());
}
//装配并返回查询到的数据
BlogDetailDTO blogDetail = new BlogDetailDTO();
BeanUtils.copyProperties(blog, blogDetail);
blogDetail.setContent(blogExt.getContent());
// 查看当前用户有没有关注博主
blogDetail.setFollowedAuthor(false);
Set<String> currentUserFollowedUserIds;
if (subject.isAuthenticated()) {
String currentUserId = (String) subject.getId();
String authorId = blog.getUserId();
currentUserFollowedUserIds = userFollowService.getCurrentUserFollowedUserIds(currentUserId);
if (!CollectionUtils.isEmpty(currentUserFollowedUserIds)
&& currentUserFollowedUserIds.contains(authorId)) {
blogDetail.setFollowedAuthor(true);
} else if (currentUserId.equals(authorId)) {
blogDetail.setFollowedAuthor(true);
} else {
blogDetail.setFollowedAuthor(false);
}
}
return blogDetail;
}
/**
* 博客列表
*
* @param pageNumber
* @param pageSize
* @return
......@@ -289,6 +323,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 个人博客列表
*
* @param pageNumber
* @param pageSize
* @param userId
......@@ -306,6 +341,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 我的博客列表
*
* @param pageNumber
* @param pageSize
* @param userId
......@@ -322,6 +358,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 修改博客
*
* @param blog
* @param content
* @param topicIds
......@@ -334,7 +371,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
Assert.notNull(blog, "blog must not be null");
Assert.notNull(blog.getBlogId(), "blogId must not be null");
Assert.notNull(blog.getUserId(),"userId must not be null");
Assert.notNull(blog.getUserId(), "userId must not be null");
//1.判断当前用户是否拥有此博客
QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper<>();
......@@ -368,7 +405,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
blogExt.setContent(content);
QueryWrapper<BlogExt> blogExtQueryWrapper = new QueryWrapper();
blogExtQueryWrapper.eq("blog_id", blog.getBlogId());
blogExtService.update(blogExt,blogExtQueryWrapper);
blogExtService.update(blogExt, blogExtQueryWrapper);
}
//4.更新标签和话题的引用
......@@ -384,6 +421,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 更新博客里面对标签和话题的引用
*
* @param tagIds
* @param topicIds
* @param blogId
......@@ -453,6 +491,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 删除博客博客的旧话题引用
*
* @param blogId
*/
private void deleteOldTopicReferences(String blogId) {
......@@ -474,6 +513,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
/**
* 删除博客的旧标签引用
*
* @param blogId
*/
private void deleteOldTagReferences(String blogId) {
......@@ -497,13 +537,13 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper();
blogQueryWrapper.orderByDesc("view_number");
IPage<Blog> page = new Page<>(pageNumber, pageSize);
return blogMapper.selectPageWithTags(page, blogQueryWrapper);
return blogMapper.selectPageWithTags(page, blogQueryWrapper);
}
@Override
public IPage<Blog> getBlogPageByTagId(Integer pageNumber, Integer pageSize, String tagId) {
// 查询blogTagPage
IPage<BlogTag> page = new Page<>(pageNumber , pageSize);
IPage<BlogTag> page = new Page<>(pageNumber, pageSize);
QueryWrapper<BlogTag> blogTagQueryWrapper = new QueryWrapper<>();
blogTagQueryWrapper.eq("tag_id", tagId);
blogTagQueryWrapper.orderByDesc("create_time");
......@@ -569,7 +609,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
blogUserNickUpdateWrapper.eq("user_id", userId);
blogUserNickUpdateWrapper.set("user_nick", userNick);
update(blogUserNickUpdateWrapper);
}
}
}
@Override
......
......@@ -12,17 +12,21 @@ 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 com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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;
/**
......@@ -35,9 +39,15 @@ import java.util.stream.Collectors;
@RestController
public class PostApi {
private IUserFollowService userFollowService;
private IPostService postService;
@Autowired
public void setUserFollowService(IUserFollowService userFollowService) {
this.userFollowService = userFollowService;
}
@Autowired
public void setPostService(IPostService postService) {
this.postService = postService;
}
......@@ -107,12 +117,15 @@ public class PostApi {
@Anonymous
@ApiOperation("动态列表")
@GetMapping("/posts")
public Response<?> getPostPage (@Valid PageForm pageForm, BindingResult bindingResult) {
public Response<?> getPostPage (@Valid PageForm pageForm, BindingResult bindingResult, @CurrentSubject Subject subject) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getPostPage(pageForm.getPage(),pageForm.getSize());
return Response.success(pictureList(postPage));
return Response.success(toPostVOPage(postPage, subject));
}
/**
......@@ -128,7 +141,7 @@ public class PostApi {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
return Response.success(pictureList(postPage));
return Response.success(toPostVOPage(postPage, subject));
}
/**
......@@ -140,12 +153,12 @@ public class PostApi {
@Anonymous
@ApiOperation("他人动态列表")
@GetMapping("/user/{userId}/posts")
public Response<?> getOtherPosts (@PathVariable("userId") String userId , @Valid PageForm pageForm, BindingResult bindingResult) {
public Response<?> getOtherPosts (@PathVariable("userId") String userId , @Valid PageForm pageForm, BindingResult bindingResult, @CurrentSubject Subject subject) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), userId);
return Response.success(pictureList(postPage));
return Response.success(toPostVOPage(postPage, subject));
}
......@@ -154,19 +167,40 @@ public class PostApi {
* @param postPage
* @return
*/
private PageVO<PostVO> pictureList(IPage<Post> postPage) {
List<PostVO> postVOList = postPage.getRecords().stream()
.map(post -> {
PostVO postVO = new PostVO();
BeanUtils.copyProperties(post, postVO);
if (!StringUtils.isEmpty(post.getPictures())) {
postVO.setPictures(post.getPictures().split(","));
}
return postVO;
}).collect(Collectors.toList());
private PageVO<? extends PostVO> toPostVOPage(IPage<Post> postPage, Subject subject) {
List<PostVO> postVOList;
if (null != subject && subject.isAuthenticated()) {
String currentUserId = (String) subject.getId();
Set<String> currentUserFollowedUserIds = userFollowService.getCurrentUserFollowedUserIds(currentUserId);
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(currentUserId.equals(post.getUserId()) ||
(!CollectionUtils.isEmpty(currentUserFollowedUserIds) &&
currentUserFollowedUserIds.contains(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());
}
PageVO<PostVO> postPageVO = new PageVO<>();
PageUtils.copyMeta(postPage, postPageVO);
postPageVO.setDataList(postVOList);
postPageVO.setTotalPage(postPage.getPages());
return postPageVO;
}
}
......@@ -32,5 +32,5 @@ public class PostVO {
private Date updateTime;
private Boolean followedAuthor;
}
......@@ -129,11 +129,11 @@ public class ProjectApi {
@Anonymous
@ApiOperation("项目详情")
@GetMapping("/project/{projectId}")
public Response<ProjectDetailDTO> getProject(@PathVariable("projectId") String projectId) {
public Response<ProjectDetailDTO> getProject(@PathVariable("projectId") String projectId, @CurrentSubject Subject subject) {
try {
// 获取项目详情并返回
ProjectDetailDTO projectDetail = projectService.getProject(projectId);
ProjectDetailDTO projectDetail = projectService.getProjectDetail(projectId, subject);
return Response.success(projectDetail);
} catch (ProjectServiceException e) {
e.printStackTrace();
......
......@@ -11,6 +11,11 @@ import lombok.Data;
public class ProjectDetailDTO extends Project {
/**
* 当前用户是否关注作者
*/
private Boolean followedAuthor;
/**
* 项目详情
*/
private String projectDetail;
......
package cn.meteor.beyondclouds.modules.project.service;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.project.dto.ProjectDetailDTO;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
......@@ -33,9 +34,10 @@ public interface IProjectService extends IService<Project> {
/**
* 获取项目
* @param projectId
* @param subject
* @return
*/
ProjectDetailDTO getProject(String projectId) throws ProjectServiceException;
ProjectDetailDTO getProjectDetail(String projectId, Subject subject) throws ProjectServiceException;
/**
* 获取项目列表
......
package cn.meteor.beyondclouds.modules.project.service.impl;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.project.dto.ProjectDetailDTO;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.project.entity.ProjectCategory;
......@@ -16,6 +17,7 @@ import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
......@@ -27,8 +29,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Set;
/**
* <p>
* 项目表 服务实现类
......@@ -51,6 +56,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
private IMessageQueueService messageQueueService;
private IUserFollowService userFollowService;
@Autowired
public ProjectServiceImpl(IProjectExtService projectExtService, ProjectCategoryMapper projectCategoryMapper) {
this.projectExtService = projectExtService;
......@@ -58,6 +65,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
}
@Autowired
public void setUserFollowService(IUserFollowService userFollowService) {
this.userFollowService = userFollowService;
}
@Autowired
public void setMessageQueueService(IMessageQueueService messageQueueService) {
this.messageQueueService = messageQueueService;
}
......@@ -145,7 +157,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
}
@Override
public ProjectDetailDTO getProject(String projectId) throws ProjectServiceException {
public ProjectDetailDTO getProjectDetail(String projectId, Subject subject) throws ProjectServiceException {
Assert.notNull(projectId, "projectId must not be null");
// 1.获取项目
......@@ -167,6 +179,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
ProjectDetailDTO projectDetail = new ProjectDetailDTO();
BeanUtils.copyProperties(project, projectDetail);
projectDetail.setProjectDetail(projectExt.getProjectDetail());
// 查看当前用户有没有关注作者
projectDetail.setFollowedAuthor(false);
Set<String> currentUserFollowedUserIds;
if (subject.isAuthenticated()) {
String currentUserId = (String) subject.getId();
String authorId = project.getUserId();
currentUserFollowedUserIds = userFollowService.getCurrentUserFollowedUserIds(currentUserId);
if (!CollectionUtils.isEmpty(currentUserFollowedUserIds)
&& currentUserFollowedUserIds.contains(authorId)) {
projectDetail.setFollowedAuthor(true);
} else if (currentUserId.equals(authorId)) {
projectDetail.setFollowedAuthor(true);
} else {
projectDetail.setFollowedAuthor(false);
}
}
return projectDetail;
}
......
......@@ -140,10 +140,10 @@ public class QuestionApi {
@Anonymous
@ApiOperation("问题详情")
@GetMapping("/question/{questionId}")
public Response<QuestionDetailDTO> questionDetails(@PathVariable("questionId") String questionId) {
public Response<QuestionDetailDTO> questionDetails(@PathVariable("questionId") String questionId, @CurrentSubject Subject subject) {
QuestionDetailDTO questionDetail = null;
try {
questionDetail = questionService.questionDetails(questionId);
questionDetail = questionService.getQuestionDetail(questionId, subject);
return Response.success(questionDetail);
} catch (QuestionServiceException | QuestionTagServiceException e) {
e.printStackTrace();
......
......@@ -13,6 +13,11 @@ import lombok.Data;
@Data
public class QuestionDetailDTO extends Question {
/**
* 当前用户是否关注作者
*/
private Boolean followedAuthor;
@ApiModelProperty("详情")
private String questionDetail;
}
package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.question.dto.QuestionDetailDTO;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
......@@ -52,11 +53,12 @@ public interface IQuestionService extends IService<Question> {
/**
* 问题详情
* @param questionId 问题ID
* @param subject
* @return 问题详情
* @throws QuestionServiceException 问题业务异常
* @throws QuestionTagServiceException 问题标签业务异常
*/
QuestionDetailDTO questionDetails(String questionId) throws QuestionServiceException, QuestionTagServiceException;
QuestionDetailDTO getQuestionDetail(String questionId, Subject subject) throws QuestionServiceException, QuestionTagServiceException;
/**
* 获取问答列表
......
package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.question.dto.QuestionDetailDTO;
import cn.meteor.beyondclouds.modules.question.entity.*;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
......@@ -20,6 +21,7 @@ import cn.meteor.beyondclouds.modules.topic.enums.TopicReferenceType;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.util.AbstractUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -36,6 +38,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -75,6 +78,8 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private IMessageQueueService messageQueueService;
private IUserFollowService userFollowService;
@Autowired
public QuestionServiceImpl(IQuestionExtService questionExtService, IQuestionCategoryService questionCategoryService, ITopicReferenceService topicReferenceService, QuestionMapper questionMapper) {
this.questionExtService = questionExtService;
......@@ -84,6 +89,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
@Autowired
public void setUserFollowService(IUserFollowService userFollowService) {
this.userFollowService = userFollowService;
}
@Autowired
public void setMessageQueueService(IMessageQueueService messageQueueService) {
this.messageQueueService = messageQueueService;
}
......@@ -252,7 +262,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
@Override
public QuestionDetailDTO questionDetails(String questionId) throws QuestionServiceException, QuestionTagServiceException {
public QuestionDetailDTO getQuestionDetail(String questionId, Subject subject) throws QuestionServiceException, QuestionTagServiceException {
//1.获取问题基本信息
Question question = getById(questionId);
......@@ -299,6 +309,25 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
QuestionDetailDTO questionDetail = new QuestionDetailDTO();
BeanUtils.copyProperties(question, questionDetail);
questionDetail.setQuestionDetail(questionExt.getQuestionDetail());
// 查看当前用户有没有关注作者
questionDetail.setFollowedAuthor(false);
Set<String> currentUserFollowedUserIds;
if (subject.isAuthenticated()) {
String currentUserId = (String) subject.getId();
String authorId = questionDetail.getUserId();
currentUserFollowedUserIds = userFollowService.getCurrentUserFollowedUserIds(currentUserId);
if (!CollectionUtils.isEmpty(currentUserFollowedUserIds)
&& currentUserFollowedUserIds.contains(authorId)) {
questionDetail.setFollowedAuthor(true);
} else if (currentUserId.equals(authorId)) {
questionDetail.setFollowedAuthor(true);
} else {
questionDetail.setFollowedAuthor(false);
}
}
return questionDetail;
}
......
......@@ -202,7 +202,7 @@ public class SearchServiceImpl implements ISearchService {
}
private SearchItem buildSearchItemFromProject(String projectId) throws ProjectServiceException {
ProjectDetailDTO projectDetail = projectService.getProject(projectId);
ProjectDetailDTO projectDetail = projectService.getProjectDetail(projectId, Subject.anonymous(this.getClass().getName()));
if (null != projectDetail) {
SearchItem searchItem = new SearchItem(DataItemType.PROJECT, projectId);
searchItem.setTitle(projectDetail.getProjectName());
......@@ -231,7 +231,7 @@ public class SearchServiceImpl implements ISearchService {
}
private SearchItem buildSearchItemFromQuestion(String questionId) throws QuestionServiceException, QuestionTagServiceException {
QuestionDetailDTO questionDetail = questionService.questionDetails(questionId);
QuestionDetailDTO questionDetail = questionService.getQuestionDetail(questionId, Subject.anonymous(this.getClass().getName()));
if (null != questionDetail) {
SearchItem searchItem = new SearchItem(DataItemType.QUESTION, questionId);
searchItem.setTitle(questionDetail.getQuestionTitle());
......
......@@ -5,6 +5,9 @@ import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.io.Serializable;
import java.util.Set;
/**
* @author 段启岩
......@@ -48,4 +51,11 @@ public interface IUserFollowService extends IService<UserFollow> {
*/
IPage<UserFollow> getFollowersPage(Integer pageNumber, Integer pageSize, String userId);
/**
* 获取当前用户关注的所有用户的ID
* @param userId
* @return
*/
Set<String> getCurrentUserFollowedUserIds(String userId);
}
package cn.meteor.beyondclouds.modules.user.service.impl;
import cn.meteor.beyondclouds.common.helper.IRedisHelper;
import cn.meteor.beyondclouds.core.redis.RedisKey;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserBlacklist;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
......@@ -16,6 +18,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.Set;
/**
* @author 段启岩
......@@ -26,6 +31,12 @@ public class UserFollowServiceImpl extends ServiceImpl<IUserFollowMapper, UserFo
private IUserService userService;
private IUserBlacklistService userBlacklistService;
private IRedisHelper redisHelper;
@Autowired
public void setRedisHelper(IRedisHelper redisHelper) {
this.redisHelper = redisHelper;
}
@Autowired
public UserFollowServiceImpl(IUserBlacklistService userBlacklistService) {
......@@ -163,6 +174,11 @@ public class UserFollowServiceImpl extends ServiceImpl<IUserFollowMapper, UserFo
userFollowQueryWrapper.eq("follow_status", 0);
return page(page, userFollowQueryWrapper);
}
@Override
public Set<String> getCurrentUserFollowedUserIds(String userId) {
return redisHelper.setGet(RedisKey.USER_FOLLOWED(userId));
}
}
package cn.meteor.beyondclouds.util;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.common.vo.PageVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -18,4 +18,10 @@ public class PageUtils {
page.setRecords(List.of());
return page;
}
public static void copyMeta(IPage<?> src, PageVO<?> dest) {
dest.setTotalPage(src.getPages());
dest.setPageSize(src.getSize());
dest.setTotalRecords(src.getTotal());
}
}
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