注册登录,用户等级,社交,动态,新手任务

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;
+    }
+}