blob: 05f62e7e320177f894323ceaecb59be0746b962e [file] [log] [blame]
223011381c359102025-06-03 15:19:59 +08001package com.example.myproject.service;
2
3import com.example.myproject.entity.UserMessages;
4import com.example.myproject.repository.UserMessagesRepository;
5import com.example.myproject.repository.UserRepository;
6import org.springframework.beans.factory.annotation.Autowired;
7import org.springframework.stereotype.Service;
8import java.util.Optional;
9import java.util.HashMap;
10import java.util.List;
11import java.util.Map;
12import java.util.Date;
13import java.util.stream.Collectors;
14
15@Service
16public class UserMessageService {
17
18 @Autowired
19 private UserMessagesRepository userMessagesRepository;
20
21 @Autowired
22 private UserRepository userRepository;
23
24 // 发送私信
25 public Map<String, Object> sendMessage(Long senderId, Long receiverId, String content) {
26 UserMessages message = new UserMessages();
27 message.setSenderId(senderId);
28 message.setReceiverId(receiverId);
29 message.setContent(content);
30 message.setTime(new Date());
31 UserMessages savedMessage = userMessagesRepository.save(message);
32
33 // 返回响应
34 Map<String, Object> response = new HashMap<>();
35 response.put("status", "success");
36 response.put("message", "私信发送成功");
37 response.put("message_id", savedMessage.getMessageId());
38 return response;
39 }
40
41 // 获取当前用户的所有消息
42 public Map<String, Object> getUserMessages(Long userId) {
43 // 查询当前用户发送和接收的所有消息
44 List<UserMessages> messages = userMessagesRepository.findBySenderIdOrReceiverId(userId, userId);
45
46 // 获取发送者和接收者的用户名
47 List<Map<String, Object>> messageDetails = messages.stream()
48 .map(message -> {
49 Map<String, Object> messageMap = new HashMap<>();
50 messageMap.put("message_id", message.getMessageId());
51 messageMap.put("sender_id", message.getSenderId());
52 messageMap.put("receiver_id", message.getReceiverId());
53 messageMap.put("content", message.getContent());
54 messageMap.put("timestamp", message.getTime());
55 String senderUsername = userRepository.findById(message.getSenderId())
56 .map(user -> user.getUsername())
57 .orElse("Unknown");
58 messageMap.put("sender_username", senderUsername);
59 String receiverUsername = userRepository.findById(message.getReceiverId())
60 .map(user -> user.getUsername())
61 .orElse("Unknown");
62 messageMap.put("receiver_username", receiverUsername);
63
64 return messageMap;
65 })
66 .collect(Collectors.toList());
67
68 Map<String, Object> response = new HashMap<>();
69 response.put("status", "success");
70 response.put("messages", messageDetails);
71 return response;
72 }
73
74 // 获取单条消息的详情
75 public Map<String, Object> getMessage(Long messageId) {
76 Optional<UserMessages> optionalMessage = userMessagesRepository.findById(messageId);
77
78 if (optionalMessage.isPresent()) {
79 UserMessages message = optionalMessage.get();
80
81 // 获取发送者和接收者的用户名
82 String senderUsername = userRepository.findById(message.getSenderId())
83 .map(user -> user.getUsername())
84 .orElse("Unknown");
85 String receiverUsername = userRepository.findById(message.getReceiverId())
86 .map(user -> user.getUsername())
87 .orElse("Unknown");
88
89 // 构建响应数据
90 Map<String, Object> response = new HashMap<>();
91 Map<String, Object> messageDetails = new HashMap<>();
92 messageDetails.put("message_id", message.getMessageId());
93 messageDetails.put("sender_id", message.getSenderId());
94 messageDetails.put("sender_username", senderUsername);
95 messageDetails.put("receiver_id", message.getReceiverId());
96 messageDetails.put("receiver_username", receiverUsername);
97 messageDetails.put("content", message.getContent());
98 messageDetails.put("timestamp", message.getTime());
99
100 response.put("status", "success");
101 response.put("message", messageDetails);
102 return response;
103 } else {
104 Map<String, Object> errorResponse = new HashMap<>();
105 errorResponse.put("status", "error");
106 errorResponse.put("message", "Message not found");
107 return errorResponse;
108 }
109 }
110
111
112}