Commit 7ac83f24 by 段启岩

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

parent 74d3255a
...@@ -94,8 +94,9 @@ public class BlogApi { ...@@ -94,8 +94,9 @@ public class BlogApi {
@Anonymous @Anonymous
@ApiOperation("博客列表") @ApiOperation("博客列表")
@GetMapping("/blogs") @GetMapping("/blogs")
public Response<PageVO<Blog>> getBlogs (@Valid PageForm pageForm) { public Response<PageVO<Blog>> getBlogs (@Valid PageForm pageForm,
IPage<Blog> blogPage = blogService.getBlogPage(pageForm.getPage(), pageForm.getSize()); @RequestParam(value = "categoryId", required = false) Integer categoryId) {
IPage<Blog> blogPage = blogService.getBlogPage(pageForm.getPage(), pageForm.getSize(), categoryId);
PageVO<Blog> blogPageVO = new PageVO<>(blogPage); PageVO<Blog> blogPageVO = new PageVO<>(blogPage);
return Response.success(blogPageVO); return Response.success(blogPageVO);
} }
......
...@@ -50,9 +50,10 @@ public interface IBlogService extends IService<Blog> { ...@@ -50,9 +50,10 @@ public interface IBlogService extends IService<Blog> {
* 博客列表 * 博客列表
* @param pageNumber * @param pageNumber
* @param pageSize * @param pageSize
* @param categoryId
* @return * @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 ...@@ -322,14 +322,18 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
* *
* @param pageNumber * @param pageNumber
* @param pageSize * @param pageSize
* @param categoryId
* @return * @return
*/ */
@Override @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); IPage<Blog> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper<>(); QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper<>();
blogQueryWrapper.eq("view_privileges", 1); blogQueryWrapper.eq("view_privileges", 1);
blogQueryWrapper.orderByDesc("b.create_time"); blogQueryWrapper.orderByDesc("b.create_time");
if (null != categoryId) {
blogQueryWrapper.eq("category_id", categoryId);
}
IPage<Blog> blogPage = blogMapper.selectPageWithTags(page, blogQueryWrapper); IPage<Blog> blogPage = blogMapper.selectPageWithTags(page, blogQueryWrapper);
return blogPage; return blogPage;
} }
......
...@@ -149,9 +149,9 @@ public class ProjectApi { ...@@ -149,9 +149,9 @@ public class ProjectApi {
@Anonymous @Anonymous
@ApiOperation("项目列表") @ApiOperation("项目列表")
@GetMapping("/projects") @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); PageVO<Project> projectPageVO = new PageVO<>(projectPage);
return Response.success(projectPageVO); return Response.success(projectPageVO);
} }
......
...@@ -46,7 +46,7 @@ public interface IProjectService extends IService<Project> { ...@@ -46,7 +46,7 @@ public interface IProjectService extends IService<Project> {
* @param pageNumber * @param pageNumber
* @param pageSize * @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 ...@@ -204,9 +204,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
} }
@Override @Override
public IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize) { public IPage<Project> getProjectPage(Integer pageNumber, Integer pageSize, Integer categoryId) {
QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>(); QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
projectQueryWrapper.orderByDesc("create_time"); projectQueryWrapper.orderByDesc("create_time");
if (null != categoryId) {
projectQueryWrapper.eq("category_id", categoryId);
}
IPage<Project> page = new Page<>(pageNumber, pageSize); IPage<Project> page = new Page<>(pageNumber, pageSize);
return page(page, projectQueryWrapper); return page(page, projectQueryWrapper);
} }
......
...@@ -177,9 +177,9 @@ public class QuestionApi { ...@@ -177,9 +177,9 @@ public class QuestionApi {
@Anonymous @Anonymous
@ApiOperation("问答列表") @ApiOperation("问答列表")
@GetMapping("/questions") @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); PageVO<Question> questionPageVO = new PageVO<>(questionPage);
return Response.success(questionPageVO); return Response.success(questionPageVO);
} }
......
...@@ -66,9 +66,10 @@ public interface IQuestionService extends IService<Question> { ...@@ -66,9 +66,10 @@ public interface IQuestionService extends IService<Question> {
* 获取问答列表 * 获取问答列表
* @param pageNumber 页数 * @param pageNumber 页数
* @param pageSize 页面大小 * @param pageSize 页面大小
* @param categoryId
* @return 分页对象 * @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 ...@@ -336,10 +336,13 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
@Override @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); IPage<Question> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>(); QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.orderByDesc("q.create_time"); questionQueryWrapper.orderByDesc("q.create_time");
if (null != categoryId) {
questionQueryWrapper.eq("q.category_id", categoryId);
}
return questionMapper.selectPageWithTags(page, questionQueryWrapper); return questionMapper.selectPageWithTags(page, questionQueryWrapper);
} }
......
...@@ -236,6 +236,7 @@ public class UserApi { ...@@ -236,6 +236,7 @@ public class UserApi {
try { try {
userFollowService.follow(userId, (String) subject.getId()); userFollowService.follow(userId, (String) subject.getId());
return Response.success(); return Response.success();
} catch (UserServiceException e) { } catch (UserServiceException e) {
e.printStackTrace(); 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 { ...@@ -61,10 +61,14 @@ public class UserLoginAndLogoutListener implements UserActionListener {
if (!CollectionUtils.isEmpty(followedUserIds)) { if (!CollectionUtils.isEmpty(followedUserIds)) {
redisHelper.setAdd(RedisKey.USER_FOLLOWED(userId), followedUserIds.toArray(new String[0])); redisHelper.setAdd(RedisKey.USER_FOLLOWED(userId), followedUserIds.toArray(new String[0]));
} else {
redisHelper.setAdd(RedisKey.USER_FOLLOWED(userId), "");
} }
if (!CollectionUtils.isEmpty(fansIds)) { 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); 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