Java tutorial
/* * Copyright (c) 2013, Helome and/or its affiliates. All rights reserved. * Helome PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * Created on 2014-6-5 */ package mobile.service; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import mobile.service.result.ServiceResult; import mobile.vo.result.MobilePage; import mobile.vo.user.ChatMessageItem; import mobile.vo.user.NewMessageNum; import mobile.vo.user.SystemMessageItem; import models.User; import org.apache.commons.lang3.EnumUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.util.CollectionUtils; import play.mvc.Http.Context; import utils.HelomeUtil; import vo.ChatMessageRecordVO; import vo.page.Page; import ext.MessageCenter.utils.MCMessageUtil; import ext.msg.model.Message; import ext.msg.model.Message.MsgType; import ext.msg.vo.MsgCount; /** * * * @ClassName: MessageService * @Description: ?? * @date 2014-6-5 ?2:43:04 * @author ShenTeng * */ public class MessageService { /** * ?? * * @return */ public static ServiceResult markRead(List<String> msgIds) { return markRead(msgIds, User.getFromSession(Context.current().session()).id); } /** * ? * * @return */ public static ServiceResult markRead(List<String> msgIds, Long userId) { List<Long> systemMsgIdList = new ArrayList<>(); List<String> chatMsgIdList = new ArrayList<>(); for (String msgId : msgIds) { if (StringUtils.isNotBlank(msgId) && msgId.startsWith("chat_") && msgId.length() > "chat_".length()) { chatMsgIdList.add(msgId); } else { long numId = NumberUtils.toLong(msgId, -1); if (numId > 0) { systemMsgIdList.add(numId); } } } Message.markReaded(String.valueOf(userId), systemMsgIdList); for (String chatMsgId : chatMsgIdList) { if (chatMsgId.startsWith("chat_G")) { Long groupId = HelomeUtil.toLong(chatMsgId.substring("chat_G".length()), null); MCMessageUtil.cleanGroupChatNum(groupId, userId); } else { Long senderId = HelomeUtil.toLong(chatMsgId.split("_")[1], null); if (null != senderId) { MCMessageUtil.resetCommunicateNum(senderId, userId); } } } return ServiceResult.success(); } /** * ????VO * * @return */ public static NewMessageNum getNewMessageNum() { return getNewMessageNum(User.getFromSession(Context.current().session())); } /** * ???VO * * @param userId Id * @return */ public static NewMessageNum getNewMessageNum(User user) { MsgCount msgCountVO = Message.newsMessageNum(user); return NewMessageNum.create(msgCountVO); } /** * ????Page * * @param pageIndex ?1 * @param pageSize ? * @return */ public static MobilePage<ChatMessageItem> getChatMessagePage(Integer pageIndex, Integer pageSize) { User user = User.getFromSession(Context.current().session()); Page<ChatMessageRecordVO> pageMsg; try { pageMsg = Message.queryMessageByRead(pageIndex - 1, pageSize, String.valueOf(user.id), "no_system", user); } catch (IOException e) { throw new RuntimeException(e); } List<ChatMessageItem> chatMessageList = new ArrayList<>(pageMsg.getList().size()); for (ChatMessageRecordVO c : pageMsg.getList()) { chatMessageList.add(ChatMessageItem.create(c)); } return new MobilePage<>(pageMsg.getTotalRowCount(), chatMessageList); } /** * ???Page * * @param pageIndex ?1 * @param pageSize ? * @param autoRead ???????? * @param msgTypeList ??nullempty??{@literal ext.msg.model.Message.MsgType} * @param unReadFirst ??? * @return */ public static MobilePage<SystemMessageItem> getSystemMessagePage(Integer pageIndex, Integer pageSize, Boolean autoRead, List<String> msgTypeList, boolean unReadFirst) { Set<MsgType> msgTypeSet = new HashSet<>(); if (!CollectionUtils.isEmpty(msgTypeList)) { for (String msgTypeStr : msgTypeList) { MsgType msgType = EnumUtils.getEnum(MsgType.class, msgTypeStr); if (msgType != null) { msgTypeSet.add(msgType); } } } User user = User.getFromSession(Context.current().session()); Page<Message> pageMsg = Message.queryMessageByRead(pageIndex - 1, pageSize, String.valueOf(user.id), msgTypeSet, unReadFirst); List<SystemMessageItem> sysMsgList = SystemMessageItem.createList(pageMsg.getList()); List<Long> systemMsgIdList = new ArrayList<>(); for (Message message : pageMsg.getList()) { systemMsgIdList.add(message.id); } if (autoRead) { Message.markReaded(String.valueOf(user.id), systemMsgIdList); } return new MobilePage<>(pageMsg.getTotalRowCount(), sysMsgList); } /** * ????? * * @param id ?Id * @return */ public static ServiceResult deleteMessage(Long id) { User user = User.getFromSession(Context.current().session()); boolean deleteResult = Message.deleteMessageById(id, user.id); if (!deleteResult) { return ServiceResult.error("251001", "???"); } return ServiceResult.success(); } /** * ?????? * * @param idList ?Id? * @return */ public static ServiceResult batchDeleteMessage(List<Long> idList) { User user = User.getFromSession(Context.current().session()); Message.deleteMessages(idList, user.id); return ServiceResult.success(); } }