blob: 05f62e7e320177f894323ceaecb59be0746b962e [file] [log] [blame]
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;
}
}
}