用户,社交接口

Change-Id: I10d13773cbe4bbcf3b69a2038cdf7aa9ba54b6df
diff --git a/src/main/java/com/example/myproject/service/UserMessageService.java b/src/main/java/com/example/myproject/service/UserMessageService.java
new file mode 100644
index 0000000..05f62e7
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/UserMessageService.java
@@ -0,0 +1,112 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.UserMessages;
+import com.example.myproject.repository.UserMessagesRepository;
+import com.example.myproject.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.Optional;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Date;
+import java.util.stream.Collectors;
+
+@Service
+public class UserMessageService {
+
+    @Autowired
+    private UserMessagesRepository userMessagesRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    // 发送私信
+    public Map<String, Object> sendMessage(Long senderId, Long receiverId, String content) {
+        UserMessages message = new UserMessages();
+        message.setSenderId(senderId);
+        message.setReceiverId(receiverId);
+        message.setContent(content);
+        message.setTime(new Date());
+        UserMessages savedMessage = userMessagesRepository.save(message);
+
+        // 返回响应
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("message", "私信发送成功");
+        response.put("message_id", savedMessage.getMessageId());
+        return response;
+    }
+
+    // 获取当前用户的所有消息
+    public Map<String, Object> getUserMessages(Long userId) {
+        // 查询当前用户发送和接收的所有消息
+        List<UserMessages> messages = userMessagesRepository.findBySenderIdOrReceiverId(userId, userId);
+
+        // 获取发送者和接收者的用户名
+        List<Map<String, Object>> messageDetails = messages.stream()
+                .map(message -> {
+                    Map<String, Object> messageMap = new HashMap<>();
+                    messageMap.put("message_id", message.getMessageId());
+                    messageMap.put("sender_id", message.getSenderId());
+                    messageMap.put("receiver_id", message.getReceiverId());
+                    messageMap.put("content", message.getContent());
+                    messageMap.put("timestamp", message.getTime());
+                    String senderUsername = userRepository.findById(message.getSenderId())
+                            .map(user -> user.getUsername())
+                            .orElse("Unknown");
+                    messageMap.put("sender_username", senderUsername);
+                    String receiverUsername = userRepository.findById(message.getReceiverId())
+                            .map(user -> user.getUsername())
+                            .orElse("Unknown");
+                    messageMap.put("receiver_username", receiverUsername);
+
+                    return messageMap;
+                })
+                .collect(Collectors.toList());
+
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("messages", messageDetails);
+        return response;
+    }
+
+    // 获取单条消息的详情
+    public Map<String, Object> getMessage(Long messageId) {
+        Optional<UserMessages> optionalMessage = userMessagesRepository.findById(messageId);
+
+        if (optionalMessage.isPresent()) {
+            UserMessages message = optionalMessage.get();
+
+            // 获取发送者和接收者的用户名
+            String senderUsername = userRepository.findById(message.getSenderId())
+                    .map(user -> user.getUsername())
+                    .orElse("Unknown");
+            String receiverUsername = userRepository.findById(message.getReceiverId())
+                    .map(user -> user.getUsername())
+                    .orElse("Unknown");
+
+            // 构建响应数据
+            Map<String, Object> response = new HashMap<>();
+            Map<String, Object> messageDetails = new HashMap<>();
+            messageDetails.put("message_id", message.getMessageId());
+            messageDetails.put("sender_id", message.getSenderId());
+            messageDetails.put("sender_username", senderUsername);
+            messageDetails.put("receiver_id", message.getReceiverId());
+            messageDetails.put("receiver_username", receiverUsername);
+            messageDetails.put("content", message.getContent());
+            messageDetails.put("timestamp", message.getTime());
+
+            response.put("status", "success");
+            response.put("message", messageDetails);
+            return response;
+        } else {
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "error");
+            errorResponse.put("message", "Message not found");
+            return errorResponse;
+        }
+    }
+
+
+}