微博不能关注怎么回事20566 微博不能关注人了是怎么回事( 三 )

Controller实现package com.zjq.seckill.controller;import com.zjq.commons.model.domain.ResultInfo;import com.zjq.seckill.service.FollowService;import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;/** * 关注/取关控制层 * @author zjq */@RestControllerpublic class FollowController {@Resourceprivate FollowService followService;@Resourceprivate HttpServletRequest request;/*** 关注/取关** @param followUserId 关注的用户ID* @param isFollowed是否关注 1=关注 0=取消* @param access_token登录用户token* @return*/@PostMapping("/{followUserId}")public ResultInfo follow(@PathVariable Integer followUserId,@RequestParam int isFollowed,String access_token) {ResultInfo resultInfo = followService.follow(followUserId,isFollowed, access_token, request.getServletPath());return resultInfo;}}网关配置路由规则spring:application:name: ms-gatewaycloud:gateway:discovery:locator:enabled: true # 开启配置注册中心进行路由功能lower-case-service-id: true # 将服务名称转小写routes:# 好友功能微服务- id: ms-followuri: lb://ms-followpredicates:- Path=/follow/**filters:- StripPrefix=1测试验证依次启动,注册中心、网关、认证中心、好友功能微服务 。
测试id为5的用户,关注id为1的用户 。

微博不能关注怎么回事20566 微博不能关注人了是怎么回事



微博不能关注怎么回事20566 微博不能关注人了是怎么回事


【微博不能关注怎么回事20566 微博不能关注人了是怎么回事】查看redis可以看到有两个集合,一个粉丝集合 , 一个关注集合 。
微博不能关注怎么回事20566 微博不能关注人了是怎么回事


查看数据库,id为5的用户关注了id为1的用户
微博不能关注怎么回事20566 微博不能关注人了是怎么回事



微博不能关注怎么回事20566 微博不能关注人了是怎么回事


共同关注列表从Redis中读取登录用户的关注列表与查看用户的关注列表,然后进行交集操作 , 获取共同关注的用户id
然后通过用户服务传入用户id数据获取用户基本信息
Controller添加方法/*** 共同关注列表** @param userId* @param access_token* @return*/@GetMapping("commons/{userId}")public ResultInfo findCommonsFriends(@PathVariable Integer userId,String access_token) {return followService.findCommonsFriends(userId, access_token, request.getServletPath());}Service添加方法/*** 共同关注列表** @param userId* @param accessToken* @param path* @return*/@Transactional(rollbackFor = Exception.class)public ResultInfo findCommonsFriends(Integer userId, String accessToken, String path) {// 是否选择了查看对象AssertUtil.isTrue(userId == null || userId < 1,"请选择要查看的人");// 获取登录用户信息SignInUserInfo userInfo = loadSignInuserInfo(accessToken);// 获取登录用户的关注信息String loginuserKey = RedisKeyConstant.following.getKey() + userInfo.getId();// 获取登录用户查看对象的关注信息String userKey = RedisKeyConstant.following.getKey() + userId;// 计算交集Set<Integer> userIds = redisTemplate.opsForSet().intersect(loginuserKey, userKey);// 没有if (userIds == null || userIds.isEmpty()) {return ResultInfoUtil.buildSuccess(path, new ArrayList<ShortUserInfo>());}// 调用食客服务根据 ids 查询食客信息ResultInfo resultInfo = restTemplate.getForObject(usersServerName + "findByIds?access_token={accessToken}&ids={ids}",ResultInfo.class, accessToken, StrUtil.join(",", userIds));if (resultInfo.getCode() != ApiConstant.SUCCESS_CODE) {resultInfo.setPath(path);return resultInfo;}// 处理结果集List<LinkedHashMap> dinnerInfoMaps = (ArrayList) resultInfo.getData();List<ShortUserInfo> userInfos = dinnerInfoMaps.stream().map(user -> BeanUtil.fillBeanWithMap(user, new ShortUserInfo(), true)).collect(Collectors.toList());return ResultInfoUtil.buildSuccess(path, userInfos);}

推荐阅读