blob: 6222b483516b569c0d236b197f27be14ac292394 [file] [log] [blame]
package com.example.myproject.service;
import com.example.myproject.entity.Users;
import com.example.myproject.entity.UserFollow;
import com.example.myproject.repository.UserFollowRepository;
import com.example.myproject.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class UserFollowService {
@Autowired
private UserFollowRepository userFollowRepository;
@Autowired
private UserRepository userRepository;
// 用户关注操作
public Map<String, Object> follow(Long followerId, Long followedId) {
if (followerId.equals(followedId)) {
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "error");
response.put("message", "不能关注自己");
return response;
}
// 检查是否已关注该用户
UserFollow existingFollow = userFollowRepository.findByFollowerIdAndFollowedId(followerId, followedId);
if (existingFollow == null) {
// 创建新的关注记录
UserFollow userFollow = new UserFollow();
userFollow.setFollowerId(followerId);
userFollow.setFollowedId(followedId);
userFollow.setFollowTime(new java.util.Date());
userFollowRepository.save(userFollow);
// 返回关注成功响应
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "success");
response.put("message", "关注成功");
return response;
} else {
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "error");
response.put("message", "已经关注该用户");
return response;
}
}
// 取消关注操作
public Map<String, Object> unfollow(Long followerId, Long followedId) {
UserFollow userFollow = userFollowRepository.findByFollowerIdAndFollowedId(followerId, followedId);
if (userFollow != null) {
userFollowRepository.delete(userFollow);
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "success");
response.put("message", "取消关注成功");
return response;
} else {
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "error");
response.put("message", "未找到关注关系");
return response;
}
}
// 获取某个用户的所有粉丝
public Map<String, Object> getFollowers(Long userId) {
List<UserFollow> followers = userFollowRepository.findByFollowedId(userId);
List<Map<String, Object>> followersList = new ArrayList<>();
for (UserFollow follow : followers) {
// 获取粉丝的用户信息
Users follower = userRepository.findById(follow.getFollowerId()).orElse(null);
if (follower != null) {
Map<String, Object> followerInfo = new LinkedHashMap<>();
followerInfo.put("user_id", follower.getUserId());
followerInfo.put("username", follower.getUsername());
followerInfo.put("avatar_url", follower.getAvatarUrl());
followersList.add(followerInfo);
}
}
// 返回响应数据
Map<String, Object> response = new LinkedHashMap<>();
response.put("status", "success");
response.put("total", followersList.size());
response.put("followers", followersList);
return response;
}
// 获取某个用户的所有关注用户
public Map<String, Object> getFollowing(Long userId) {
List<UserFollow> following = userFollowRepository.findByFollowerId(userId);
List<Map<String, Object>> followingList = new ArrayList<>();
for (UserFollow follow : following) {
// 获取被关注的用户信息
Users followedUser = userRepository.findById(follow.getFollowedId()).orElse(null);
if (followedUser != null) {
Map<String, Object> followingInfo = new HashMap<>();
followingInfo.put("user_id", followedUser.getUserId());
followingInfo.put("username", followedUser.getUsername());
followingInfo.put("avatar_url", followedUser.getAvatarUrl());
followingList.add(followingInfo);
}
}
Map<String, Object> response = new HashMap<>();
response.put("status", "success");
response.put("total", followingList.size());
response.put("following", followingList);
return response;
}
}