您的位置:首页 > 科技 > 能源 > 国内永久免费网游_制作微信小程序怎么赚钱_百度电话客服24小时_东营seo网站推广

国内永久免费网游_制作微信小程序怎么赚钱_百度电话客服24小时_东营seo网站推广

2024/10/6 16:24:49 来源:https://blog.csdn.net/weixin_53515812/article/details/142703613  浏览:    关键词:国内永久免费网游_制作微信小程序怎么赚钱_百度电话客服24小时_东营seo网站推广
国内永久免费网游_制作微信小程序怎么赚钱_百度电话客服24小时_东营seo网站推广
@Resourceprivate StringRedisTemplate stringRedisTemplate;@Resourceprivate IUserService userService;@Overridepublic Result follow(Long followUserId, Boolean isFollow) {//1.获取登陆的用户Long userId = UserHolder.getUser().getId();//1.判断是关注还是取关if(isFollow){//关注,新增数据Follow follow = new Follow();follow.setUserId(userId);follow.setFollowUserId(followUserId);boolean isSuccess = this.save(follow);if(isSuccess){// 把关注用户的id,放入到redis的set集合 sadd userId followerUserIdString key = "follows:" + userId;stringRedisTemplate.opsForSet().add(key, followUserId.toString());}}else {//取关,删除QueryWrapper<Follow> queryWrapper = new QueryWrapper<>();queryWrapper.eq("follow_user_id", followUserId).eq("user_id", userId);boolean isSuccess = this.remove(queryWrapper);if(isSuccess){//从redis集合中移除String key = "follows:" + userId;stringRedisTemplate.opsForSet().remove(key, followUserId.toString());}}return Result.ok();}@Overridepublic Result isFollow(Long followUserId) {//1.获取登陆的用户Long userId = UserHolder.getUser().getId();//查询是否关注Integer count = this.query().eq("follow_user_id", followUserId).eq("user_id", userId).count();return Result.ok(count > 0);}@Overridepublic Result followCommons(Long id) {//获取当前的用户Long userId = UserHolder.getUser().getId();//知道两个用户在Redis中求交集String key1 = "follows:" + userId;String key2 = "follows:" + id;Set<String> intersect = stringRedisTemplate.opsForSet().intersect(key1, key2);if(intersect == null || intersect.isEmpty()){//无交集return Result.ok(Collections.emptyList());}//通过Set集合解析出Id集合List<Long> ids = intersect.stream().map(Long::valueOf).collect(Collectors.toList());//查询用户List<UserDTO> users = userService.listByIds(ids).stream().map(user -> BeanUtil.copyProperties(user, UserDTO.class)).collect(Collectors.toList());return Result.ok(users);}

 博客推送与分页查询

 查询的控制层

    @GetMapping("/of/follow")public Result queryBlogOfFollow(@RequestParam("lastId") Long max, @RequestParam(value = "offset", defaultValue = "0") Integer offset){return blogService.queryBlogOfFollow(max, offset);}

 发布与查询的服务层

    //大V发布,并进行推送@Overridepublic Result saveBlog(Blog blog) {// 获取登录用户UserDTO user = UserHolder.getUser();blog.setUserId(user.getId());// 保存探店博文boolean isSuccess = this.save(blog);if(!isSuccess){return Result.fail("新增笔记失败");}//查询笔记作者的所有粉丝  follow_user_id时大V的idList<Follow> follows = followService.query().eq("follow_user_id", user.getId()).list();//推送笔记id给所有粉丝for (Follow follow : follows) {//获取粉丝idLong userId = follow.getUserId();//推送String key = "feed:" + userId;stringRedisTemplate.opsForZSet().add(key, blog.getId().toString(), System.currentTimeMillis());}// 返回idreturn Result.ok(blog.getId());}//粉丝收到,并实现滚动分页查询@Overridepublic Result queryBlogOfFollow(Long max, Integer offset) {//1.获取当前用户Long userId = UserHolder.getUser().getId();//2.查询收件箱  ZREVRANGEBYSCORE key max min limit offset countString key = FEED_KEY + userId;Set<ZSetOperations.TypedTuple<String>> typedTuples = stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, 0, max, offset, 2);//非空判断if(typedTuples == null || typedTuples.isEmpty()){return Result.ok();}//3.解析数据:blogId,minTime(时间戳)、offsetList<Long> ids = new ArrayList<>(typedTuples.size());long minTime = 0;int os = 1; //最少为一个与最小一样for (ZSetOperations.TypedTuple<String> typedTuple : typedTuples) {//获取idids.add(Long.valueOf(typedTuple.getValue()));//获取分数long time = typedTuple.getScore().longValue();if(time == minTime){os++;}else {minTime = time;os = 1;}}//4.根据id查询blogString idStr = StrUtil.join(",", ids);List<Blog> blogs = this.query().in("id", ids).last("ORDER BY FIELD(id," + idStr + ")").list();for (Blog blog : blogs) {//查询blog有关的用户this.queryBlogUser(blog);//查询blog是否被点赞this.isBlogLiked(blog);}//5.封装并返回ScrollResult r = new ScrollResult();r.setList(blogs);r.setOffset(os);r.setMinTime(minTime);return Result.ok(r);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com