Package com.freewebsys.sns.service.imp

Source Code of com.freewebsys.sns.service.imp.MessageServiceImp

package com.freewebsys.sns.service.imp;

import java.util.List;
import java.util.Map;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.freewebsys.core.dao.BaseDao;
import com.freewebsys.core.page.PageConf;
import com.freewebsys.core.service.CommonDaoUtil;
import org.springframework.beans.factory.annotation.Autowired;
import com.freewebsys.sns.pojo.Message;
import com.freewebsys.sns.pojo.MessageLog;
import com.freewebsys.sns.pojo.UserInfo;
import com.freewebsys.sns.service.MessageService;
import com.freewebsys.sns.service.MessageException;

public class MessageServiceImp implements MessageService {

  @Autowired
  private BaseDao baseDao;

  /**
   * Message删除
   */
  @Override
  @Transactional
  public void deleteMessageById(Integer id) throws MessageException {
    try {
      Message message = (Message) baseDao.findById(Message.class, id);
      baseDao.delete(message);
    } catch (Exception e) {
      throw new MessageException("Message删除异常");
    }
  }

  /**
   * Message保存
   */
  @Override
  @Transactional
  public void saveMessage(Message message, UserInfo fromUserInfo)
      throws MessageException {
    try {
      baseDao.save(message);// 保存信息
      String[] userIds = message.getToUserIds().split(",");
      for (String userId : userIds) {
        MessageLog messageLog = new MessageLog();
        // 设置消息Id
        messageLog.setMessageId(message.getId());
        // 设置时间
        messageLog.setCreateTime(new Date());
        // 设置用户
        messageLog.setUserId(new Integer(userId));
        // 设置阅读状态
        messageLog.setIsRead(0);
        // 设置信箱状态-收件箱
        messageLog.setStatus(3);

        baseDao.save(messageLog);
      }

      MessageLog messageLogMe = new MessageLog();
      // 设置消息Id
      messageLogMe.setMessageId(message.getId());
      // 设置时间
      messageLogMe.setCreateTime(new Date());
      // 设置我自己的发件箱
      messageLogMe.setUserId(fromUserInfo.getId());
      // 设置阅读状态已读
      messageLogMe.setIsRead(1);
      // 设置信箱状态-发件箱
      messageLogMe.setStatus(2);

      baseDao.save(messageLogMe);
    } catch (Exception e) {
      throw new MessageException("Message保存异常");
    }
  }

  /**
   * Message按ID查询
   */
  @Override
  @Transactional
  public Message findMessageById(Integer id) throws MessageException {
    try {
      return (Message) baseDao.findById(Message.class, id);
    } catch (Exception e) {
      throw new MessageException("Message按ID查询异常");
    }
  }

  /**
   * Message分页
   */
  @Override
  @Transactional
  public PageConf findMessagePageList(int start, int limit,
      UserInfo myUserInfo, String type) throws MessageException {
    try {
      if (StringUtils.isNumeric(type)) {// 判断是否是数字
        String hql = " select module from MessageLog module left join fetch module.message "
            + " where module.parentId is null and module.userId = ? and module.status = ? ";

        // Object[]需要进行强制转换.
        return baseDao.findPage(start, limit, hql, new Object[] {
            myUserInfo.getId(), new Integer(type) });
      } else {
        return null;
      }
    } catch (Exception e) {
      e.printStackTrace();
      throw new MessageException("Message分页异常");
    }
  }

  /**
   * 查询Message全部
   */
  @Override
  @Transactional
  public List<Message> findAllMessage(Map map) throws MessageException {
    try {
      String hql = " select module from Message module ";
      // 通用查询匹配
      Object[] values = CommonDaoUtil.commonQuery(map);
      hql += values[0].toString();
      // Object[]需要进行强制转换.
      return baseDao.find(hql, (Object[]) values[1]);
    } catch (Exception e) {
      throw new MessageException("查询Message全部异常");
    }
  }

  /**
   * 按照UserIds进行查询,判断UserIds是否存在,并返回UserIds,UserNames
   */
  @Override
  public String[] findUserByIds(String toUserIds) throws MessageException {
    if (toUserIds == null || toUserIds.equals("")) {
      return new String[] { "", "" };
    } else {
      String[] userIds = toUserIds.split(",");
      String tempIds = "";// 累加Id
      String tempNames = "";// 累加用户名

      // 是否是第一个
      boolean isFirst = true;
      for (String userId : userIds) {
        // 按照用户名称查询用户
        if (StringUtils.isNumeric(userId)) {// 判断是否是数字
          String hql = " from UserInfo module where module.id = ? ";
          UserInfo userInfo = (UserInfo) baseDao.findFirstOne(hql,
              new Integer(userId));
          if (userInfo != null) {// 如果用户存在就累加
            if (isFirst) {// 如果是第一个不添加','
              tempIds = userId;
              tempNames = userInfo.getName() + "";
              isFirst = false;
            } else {// 累加
              tempIds += "," + userId;
              tempNames += "," + userInfo.getName();
            }
          }
        }
      }
      return new String[] { tempIds, tempNames };
    }
  }

  public static void main(String[] args) {
    System.out.println(StringUtils.isNumeric("111"));
    System.out.println(StringUtils.isNumeric("111.1"));
  }
}
TOP

Related Classes of com.freewebsys.sns.service.imp.MessageServiceImp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.