Commit 7ac83f24 by 段启岩

修复关注后不能立马刷新关注状态的bug

parent 74d3255a
......@@ -94,8 +94,9 @@ public class BlogApi {
@Anonymous
@ApiOperation("博客列表")
@GetMapping("/blogs")
public Response<PageVO<Blog>> getBlogs (@Valid PageForm pageForm) {
IPage<Blog> blogPage = blogService.getBlogPage(pageForm.getPage(), pageForm.getSize());
public Response<PageVO<Blog>> getBlogs (@Valid PageForm pageForm,
@RequestParam(value = "categoryId", required = false) Integer categoryId) {
IPage<Blog> blogPage = blogService.getBlogPage(pageForm.getPage(), pageForm.getSize(), categoryId);
PageVO<Blog> blogPageVO = new PageVO<>(blogPage);
return Response.success(blogPageVO);
}
......
......@@ -50,9 +50,10 @@ public interface IBlogService extends IService<Blog> {
* 博客列表
* @param pageNumber
* @param pageSize
* @param categoryId
* @return
*/
IPage<Blog> getBlogPage(Integer pageNumber , Integer pageSize);
IPage<Blog> getBlogPage(Integer pageNumber, Integer pageSize, Integer categoryId);
/**
* 个人博客列表
......
......@@ -322,14 +322,18 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
*
* @param pageNumber
* @param pageSize
* @param categoryId
* @return
*/
@Override
public IPage<Blog> getBlogPage(Integer pageNumber, Integer pageSize) {
public IPage<Blog> getBlogPage(Integer pageNumber, Integer pageSize, Integer categoryId) {
IPage<Blog> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper<>();
blogQueryWrapper.eq("view_privileges", 1);
blogQueryWrapper.orderByDesc("b.create_time");
if (null != categoryId) {
blogQueryWrapper.eq("category_id", categoryId);
}
IPage<Blog> blogPage = blogMapper.selectPageWithTags(page, blogQueryWrapper);
return blogPage;
}
......
......@@ -149,9 +149,9 @@ public class ProjectApi {
@Anonymous
@ApiOperation("项目列表")
@GetMapping("/projects")
public Response<PageVO<Project>> getProjects(@Valid PageForm pageForm) {
public Response<PageVO<Project>> getProjects(@Valid PageForm pageForm, @RequestParam(value = "categoryId", required = false) Integer categoryId) {
// 获取列表并返回
IPage<Project> projectPage = projectService.getProjectPage(pageForm.getPage(), pageForm.getSize());
IPage<Project> projectPage = projectService.getProjectPage(pageForm.getPage(), pageForm.getSize(), categoryId);
PageVO<Project> projectPageVO = new PageVO<>(projectPage);
return Response.success(projectPageVO);
}
......
......@@ -46,7 +46,7 @@ public interface IProjectService extends IService<Project> {
* @param pageNumber
* @param pageSize
*/
IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize);
IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize, Integer categoryId);
/**
* 更新项目
......
......@@ -204,9 +204,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
}
@Override
public IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize) {
public IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize, Integer categoryId) {
QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
projectQueryWrapper.orderByDesc("create_time");
if (null != categoryId) {
projectQueryWrapper.eq("category_id", categoryId);
}
IPage<Project> page = new Page<>(pageNumber, pageSize);
return page(page, projectQueryWrapper);
}
......
......@@ -177,9 +177,9 @@ public class QuestionApi {
@Anonymous
@ApiOperation("问答列表")
@GetMapping("/questions")
public Response<PageVO<Question>> getQuestions(@Valid PageForm pageForm) {
public Response<PageVO<Question>> getQuestions(@Valid PageForm pageForm, @RequestParam(value = "categoryId", required = false) Integer categoryId) {
//获取列表并返回
IPage<Question> questionPage = questionService.getQuestionPage(pageForm.getPage(), pageForm.getSize());
IPage<Question> questionPage = questionService.getQuestionPage(pageForm.getPage(), pageForm.getSize(), categoryId);
PageVO<Question> questionPageVO = new PageVO<>(questionPage);
return Response.success(questionPageVO);
}
......
......@@ -66,9 +66,10 @@ public interface IQuestionService extends IService<Question> {
* 获取问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param categoryId
* @return 分页对象
*/
IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize);
IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize, Integer categoryId);
/**
* 获取用户的问答列表
......
......@@ -336,10 +336,13 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@Override
public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize) {
public IPage<Question> getQuestionPage(Integer pageNumber, Integer pageSize, Integer categoryId) {
IPage<Question> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.orderByDesc("q.create_time");
if (null != categoryId) {
questionQueryWrapper.eq("q.category_id", categoryId);
}
return questionMapper.selectPageWithTags(page, questionQueryWrapper);
}
......
......@@ -236,6 +236,7 @@ public class UserApi {
try {
userFollowService.follow(userId, (String) subject.getId());
return Response.success();
} catch (UserServiceException e) {
e.printStackTrace();
......
package cn.meteor.beyondclouds.modules.user.listener;
import cn.meteor.beyondclouds.common.helper.IRedisHelper;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.core.listener.UserActionListener;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.core.queue.message.UserActionMessage;
import cn.meteor.beyondclouds.core.redis.RedisKey;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 用户登录注销监听器
* @author meteor
*/
@Slf4j
@Component
public class UserFollowedListener implements DataItemChangeListener {
private IUserFollowService userFollowService;
private IRedisHelper redisHelper;
@Autowired
public UserFollowedListener(IUserFollowService userFollowService, IRedisHelper redisHelper) {
this.userFollowService = userFollowService;
this.redisHelper = redisHelper;
}
@Override
public void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) {
String operatorId = dataItemChangeMessage.getOperatorId();
String itemId = (String) dataItemChangeMessage.getItemId();
UserFollow userFollow = userFollowService.getById(itemId);
String followerId = userFollow.getFollowerId();
Assert.isTrue(followerId.equals(operatorId), "数据不合法");
String followedId = userFollow.getFollowedId();
// 用户关注
if (dataItemChangeMessage.getItemType().equals(DataItemType.USER_FOLLOW)) {
// 更新关注者的关注列表
redisHelper.setAdd(RedisKey.USER_FOLLOWED(operatorId), followedId);
// 检查被关注者,如果被关注者登录过,则将当前发起关注的用户的ID存入他的粉丝列表里面
if (redisHelper.hasKey(RedisKey.USER_FANS(followedId))) {
redisHelper.setAdd(RedisKey.USER_FANS(followedId), operatorId);
}
}
}
}
......@@ -61,10 +61,14 @@ public class UserLoginAndLogoutListener implements UserActionListener {
if (!CollectionUtils.isEmpty(followedUserIds)) {
redisHelper.setAdd(RedisKey.USER_FOLLOWED(userId), followedUserIds.toArray(new String[0]));
} else {
redisHelper.setAdd(RedisKey.USER_FOLLOWED(userId), "");
}
if (!CollectionUtils.isEmpty(fansIds)) {
redisHelper.setAdd(RedisKey.USER_FANS(userId), fansIds.toArray(new String[0]));
redisHelper.setAdd(RedisKey.USER_FANS(userId), "fansIds.toArray(new String[0])");
} else {
redisHelper.setAdd(RedisKey.USER_FANS(userId), "");
}
log.debug("已经将用户{}的关注列表和粉丝列表存入redis.", userId);
}
......
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