注册登录,用户等级,社交,动态,新手任务
Change-Id: I1d3183526517fb3c0dab665e0e7547eefa5c9d76
diff --git a/src/main/java/com/example/myproject/service/UserFollowService.java b/src/main/java/com/example/myproject/service/UserFollowService.java
new file mode 100644
index 0000000..6222b48
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/UserFollowService.java
@@ -0,0 +1,122 @@
+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;
+ }
+}