目录
实现关注与取关
实现
Controller层
@RestController
@RequestMapping("/follow")
public class FollowController {
@Resource
private IFollowService followService;
@PutMapping("/{id}/{isFollow}")
public Result follow(@PathVariable("id")Long followUserId,@PathVariable("isFollow") Boolean isFollow){
return followService.follow(followUserId,isFollow);
}
@GetMapping("/or/not/{id}")
public Result follow(@PathVariable("id")Long followUserId){
return followService.isFollow(followUserId);
}
}
Service层
@Override
public Result follow(Long followUserId, Boolean isFollow) {
//1.获取登录用户
UserDTO user = UserHolder.getUser();
Long userId = user.getId();
//判断是取关还是关注
if(isFollow){
//2.关注,新增数据
Follow follow = new Follow();
follow.setUserId(userId);
follow.setFollowUserId(followUserId);
follow.setCreateTime(LocalDateTime.now());
boolean isSuccess = save(follow);
}
else{
//取关,删除数据
//sql: delete from tb_follow where user_id = ? and follow_user_id = ?
remove(new QueryWrapper<Follow>()
.eq("user_id",userId)
.eq("follow_user_id",followUserId)
);
}
return Result.ok();
}
@Override
public Result isFollow(Long followUserId) {
//1.获取用户
UserDTO user = UserHolder.getUser();
Long userId = user.getId();
//查询是否关注
//sql: select * from tb_follow where user_id = ? and follow_user_id
Integer count = query().eq("user_id", userId).eq("follow_user_id", followUserId).count();
return Result.ok(count>0);
}
实现共同关注功能
修改前面的关注接口,关注的对象不仅仅存入数据库中,还需存入redis中(共同关注功能需要set数据结构完成)
修改
@Override
public Result follow(Long followUserId, Boolean isFollow) {
//1.获取登录用户
UserDTO user = UserHolder.getUser();
Long userId = user.getId();
String key = "follows:"+userId;
//判断是取关还是关注
if(isFollow){
//2.关注,新增数据
Follow follow = new Follow();
follow.setUserId(userId);
follow.setFollowUserId(followUserId);