1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| @Controller public class MessageController {
@Autowired private MessageService messageService;
@Autowired private HostHolder hostHolder;
@Autowired private UserService userService;
@RequestMapping(path = "/letter/list", method = RequestMethod.GET) public String getLetterList(Model model, Page page) { User user = hostHolder.getUser(); page.setLimit(5); page.setPath("/letter/list"); page.setRows(messageService.findConversationCount(user.getId())); List<Message> conversationList = messageService.findConversations( user.getId(), page.getOffset(), page.getLimit()); List<Map<String, Object>> conversations = new ArrayList<>(); if (conversationList != null) { for (Message message : conversationList) { Map<String, Object> map = new HashMap<>(); map.put("conversation", message); map.put("letterCount", messageService.findLetterCount(message.getConversationId())); map.put("unreadCount", messageService.findLetterUnreadCount(user.getId(), message.getConversationId())); int targetId = user.getId() == message.getFromId() ? message.getToId() : message.getFromId(); map.put("target", userService.findUserById(targetId)); conversations.add(map); } } model.addAttribute("conversations", conversations); int letterUnreadCount = messageService.findLetterUnreadCount(user.getId(), null); model.addAttribute("letterUnreadCount", letterUnreadCount);
return "/site/letter"; }
@RequestMapping(path = "/letter/detail/{conversationId}", method = RequestMethod.GET) public String getLetterDetail(@PathVariable("conversationId") String conversationId, Page page, Model model) { page.setLimit(5); page.setPath("/letter/detail/" + conversationId); page.setRows(messageService.findLetterCount(conversationId)); List<Message> letterList = messageService.findLetters(conversationId, page.getOffset(), page.getLimit()); List<Map<String, Object>> letters = new ArrayList<>(); if (letterList != null) { for (Message message : letterList) { Map<String, Object> map = new HashMap<>(); map.put("letter", message); map.put("fromUser", userService.findUserById(message.getFromId())); letters.add(map); } } model.addAttribute("letters", letters); model.addAttribute("target", getLetterTarget(conversationId)); List<Integer> ids = getLetterIds(letterList); if (!ids.isEmpty()) { messageService.readMessage(ids); }
return "/site/letter-detail"; }
private User getLetterTarget(String conversationId) { String[] ids = conversationId.split("_"); int id0 = Integer.parseInt(ids[0]); int id1 = Integer.parseInt(ids[1]);
if (hostHolder.getUser().getId() == id0) { return userService.findUserById(id1); } else { return userService.findUserById(id0); } } }
|