Search in sources :

Example 21 with Message

use of com.bc.pmpheep.general.po.Message in project pmph by BCSquad.

the class SystemMessageService method sendWhenDeclarationFormAuditToOrgUser.

/**
 * 人卫社审核教材申报表 向机构用户发送信息
 *
 * @introduction
 * @author Mryang
 * @createDate 2018年1月22日 上午10:12:34
 * @param declarationId
 * @param isPass
 * @param returnCause 退回原因
 * @param onlineProgress 4 == 退回给学校,5 == 退回给个人
 * @throws CheckedServiceException
 * @throws IOException
 */
public void sendWhenDeclarationFormAuditToOrgUser(Long declarationId, boolean isPass, String returnCause, Integer onlineProgress) throws CheckedServiceException, IOException {
    // 获取申报表
    Declaration declaration = declarationService.getDeclarationById(declarationId);
    if (null == declaration) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "申报表不存在");
    }
    if (null == declaration.getOrgId()) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "认证的管理员为空");
    }
    // 获取教材
    Material material = materialService.getMaterialById(declaration.getMaterialId());
    String msgContent = null;
    if (isPass) {
        // 通过
        msgContent = "恭喜!您校[" + declaration.getRealname() + "]提交的《<font color='red'>" + material.getMaterialName() + "</font>》申报表已通过[<font color='red'>出版社</font>]审核";
    } else {
        // 出版社退回给学校==4
        if (4 == onlineProgress.intValue()) {
            msgContent = "抱歉!您校[" + declaration.getRealname() + "]提交的《<font color='red'>" + material.getMaterialName() + "</font>》申报表被[<font color='red'>出版社</font>]退回,退回原因:" + returnCause + ",请核对后重试";
        } else if (5 == onlineProgress.intValue()) {
            // 出版社退回给个人==5
            msgContent = "抱歉!您提交的《<font color='red'>" + material.getMaterialName() + "</font>》申报表被[<font color='red'>出版社</font>]退回,退回原因:" + returnCause + ",请您核对后重试";
        }
    }
    WebScocketMessage webScocketMessage = null;
    List<String> userIds = null;
    if (4 == onlineProgress.intValue()) {
        // 获取机构用户
        List<Long> orgIds = new ArrayList<Long>(1);
        if (CollectionUtil.isEmpty(orgIds) || orgIds.size() == 0) {
            orgIds.add(declaration.getOrgId());
        }
        List<OrgUser> orgUserList = orgUserService.getOrgUserListByOrgIds(orgIds);
        // 存入消息主体
        Message message = new Message(msgContent);
        message = messageService.add(message);
        String msg_id = message.getId();
        // 消息集合
        List<UserMessage> userMessageList = new ArrayList<UserMessage>();
        userIds = new ArrayList<String>();
        for (OrgUser orgUser : orgUserList) {
            userMessageList.add(new // 消息内容id
            UserMessage(// 消息内容id
            msg_id, // 消息标题
            messageTitle, // 消息类型
            new Short("0"), // 发送者id 0- 系统
            0L, // 发送者类型 0- 系统
            new Short("0"), // 接收者id
            orgUser.getId(), // 接收者类型 (3- 机构用户 )
            new Short("3"), // 教材id
            null));
            userIds.add("3_" + orgUser.getId().toString());
        }
        // 发送消息
        // 批量插入消息
        userMessageService.addUserMessageBatch(userMessageList);
        // websocket推送页面消息
        webScocketMessage = new // 消息id
        WebScocketMessage(// 消息id
        msg_id, // 消息类型 0=系统消息/1=站内群发/2=站内私信(作家和机构用户不能群发)/3 小组互动
        Const.MSG_TYPE_0, // 发送者id 0=系统/其他=用户id
        0L, // 发送者姓名
        "系统", // 发送者类型 0=系统/1=社内用户/2=作家用户/3=机构用户
        Const.SENDER_TYPE_0, // 发送类型 0 新增 1 撤回 2 删除
        Const.SEND_MSG_TYPE_0, // 头像
        "", // 消息标题
        messageTitle, // 消息内容
        msgContent, // 发送时间
        DateUtil.getCurrentTime());
    } else if (5 == onlineProgress.intValue()) {
        // 存入消息主体
        Message message = new Message(msgContent);
        message = messageService.add(message);
        String msg_id = message.getId();
        // 发送消息
        userMessageService.addUserMessage(new UserMessage(msg_id, messageTitle, new Short("0"), 0L, new Short("0"), declaration.getUserId(), new Short("2"), null));
        // websocket推送页面消息
        webScocketMessage = new WebScocketMessage(msg_id, Const.MSG_TYPE_0, 0L, "系统", Const.SENDER_TYPE_0, Const.SEND_MSG_TYPE_0, RouteUtil.DEFAULT_USER_AVATAR, messageTitle, msgContent, DateUtil.getCurrentTime());
        userIds = new ArrayList<String>(1);
        userIds.add("2_" + declaration.getUserId());
    }
    myWebSocketHandler.sendWebSocketMessageToUser(userIds, webScocketMessage);
}
Also used : UserMessage(com.bc.pmpheep.back.po.UserMessage) WebScocketMessage(com.bc.pmpheep.websocket.WebScocketMessage) Message(com.bc.pmpheep.general.po.Message) OrgUser(com.bc.pmpheep.back.po.OrgUser) ArrayList(java.util.ArrayList) CheckedServiceException(com.bc.pmpheep.service.exception.CheckedServiceException) Material(com.bc.pmpheep.back.po.Material) WebScocketMessage(com.bc.pmpheep.websocket.WebScocketMessage) UserMessage(com.bc.pmpheep.back.po.UserMessage) Declaration(com.bc.pmpheep.back.po.Declaration)

Example 22 with Message

use of com.bc.pmpheep.general.po.Message in project pmph by BCSquad.

the class MessageService method update.

/**
 * 更新Message对象
 *
 * @param message 消息对象
 */
public void update(Message message) {
    if (null == message) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.NULL_PARAM, "消息更新对象为空");
    }
    if (null == message.getId() || message.getId().isEmpty()) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.NULL_PARAM, "消息更新对象id为空");
    }
    if (null == message.getContent() || message.getContent().isEmpty()) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.NULL_PARAM, "消息更新对象内容为空");
    }
    Message msg = get(message.getId());
    if (null == msg) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.OBJECT_NOT_FOUND, "未找到更新对象");
    }
    msg.setContent(message.getContent());
    messageDao.save(msg);
}
Also used : Message(com.bc.pmpheep.general.po.Message) CheckedServiceException(com.bc.pmpheep.service.exception.CheckedServiceException)

Example 23 with Message

use of com.bc.pmpheep.general.po.Message in project pmph by BCSquad.

the class UserMessageServiceImpl method listMessage.

@Override
public PageResult<UserMessageVO> listMessage(PageParameter<UserMessageVO> pageParameter, String sessionId) throws CheckedServiceException {
    PmphUser pmphUser = SessionUtil.getPmphUserBySessionId(sessionId);
    if (ObjectUtil.isNull(pmphUser)) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.NULL_PARAM, "用户为空");
    }
    if (ObjectUtil.isNull(pmphUser.getId())) {
        throw new CheckedServiceException(CheckedExceptionBusiness.MESSAGE, CheckedExceptionResult.NULL_PARAM, "用户为空");
    }
    // 如果是系统管理员,则查询所有,否则查询对应的消息
    if (Const.FALSE == pmphUser.getIsAdmin()) {
        List<Long> ids = new ArrayList<Long>();
        // 如果是主任,获取主任所在部门下的所有用户
        if (Const.TRUE == pmphUser.getIsDirector()) {
            // 社内部门父级节点ID
            Long parentId = 1L;
            PmphDepartment pmphDepartment = pmphDepartmentService.getPmphDepartmentById(pmphUser.getDepartmentId());
            // 如果是父级部门主任,则可以查看子级部门下的所有用户发送的消息
            if (parentId.longValue() == pmphDepartment.getParentId().longValue()) {
                PageParameter<PmphUserManagerVO> parameter = new PageParameter<>(1, 2000);
                PmphUserManagerVO pmphUserManagerVO = new PmphUserManagerVO();
                pmphUserManagerVO.setPath(pmphDepartment.getPath());
                pmphUserManagerVO.setDepartmentId(pmphDepartment.getId());
                parameter.setParameter(pmphUserManagerVO);
                PageResult<PmphUserManagerVO> listPageResult = pmphUserService.getListPmphUser(parameter, null);
                List<PmphUserManagerVO> listPmphUserManagerVOs = listPageResult.getRows();
                for (PmphUserManagerVO pmManagerVO : listPmphUserManagerVOs) {
                    ids.add(pmManagerVO.getId());
                }
            } else {
                // 如果是子级部门主任,则只可以查看子级部门下的用户发送的消息
                List<PmphUser> pmphUsers = pmphUserService.listPmphUserByDepartmentId(pmphUser.getDepartmentId());
                if (CollectionUtil.isNotEmpty(pmphUsers)) {
                    for (PmphUser user : pmphUsers) {
                        ids.add(user.getId());
                    }
                }
            }
        } else {
            ids.add(pmphUser.getId());
        }
        pageParameter.getParameter().setSenderIds(ids);
    }
    PageResult<UserMessageVO> pageResult = new PageResult<>();
    PageParameterUitl.CopyPageParameter(pageParameter, pageResult);
    Integer total = userMessageDao.getMessageTotal(pageParameter);
    if (total > 0) {
        List<UserMessageVO> list = userMessageDao.listMessage(pageParameter);
        Message message;
        for (UserMessageVO userMessageVO : list) {
            message = messageService.get(userMessageVO.getMsgId());
            if (ObjectUtil.notNull(message)) {
                userMessageVO.setContent(message.getContent());
            }
        }
        pageResult.setRows(list);
        pageResult.setTotal(total);
    }
    return pageResult;
}
Also used : UserMessage(com.bc.pmpheep.back.po.UserMessage) WebScocketMessage(com.bc.pmpheep.websocket.WebScocketMessage) Message(com.bc.pmpheep.general.po.Message) PmphUser(com.bc.pmpheep.back.po.PmphUser) ArrayList(java.util.ArrayList) CheckedServiceException(com.bc.pmpheep.service.exception.CheckedServiceException) PageParameter(com.bc.pmpheep.back.plugin.PageParameter) PageResult(com.bc.pmpheep.back.plugin.PageResult) UserMessageVO(com.bc.pmpheep.back.vo.UserMessageVO) PmphUserManagerVO(com.bc.pmpheep.back.vo.PmphUserManagerVO) PmphDepartment(com.bc.pmpheep.back.po.PmphDepartment)

Example 24 with Message

use of com.bc.pmpheep.general.po.Message in project pmph by BCSquad.

the class MessageServiceTest method createMessages.

private List<Message> createMessages(int number) {
    List<Message> list = new ArrayList<>();
    for (int i = 0; i < number; i++) {
        Message message = new Message(str + " " + String.valueOf(i));
        list.add(message);
    }
    return list;
}
Also used : Message(com.bc.pmpheep.general.po.Message) ArrayList(java.util.ArrayList)

Example 25 with Message

use of com.bc.pmpheep.general.po.Message in project pmph by BCSquad.

the class MessageServiceTest method list.

@Test
@SuppressWarnings("deprecation")
public void list() {
    int number = 10;
    List<Message> list = createMessages(number);
    List<String> ids = new ArrayList<>();
    for (Message message : list) {
        Message added = messageService.add(message);
        ids.add(added.getId());
    }
    list = messageService.list(ids);
    messageService.removeAll();
    Assert.assertTrue("插入消息后返回的集合大小应为" + String.valueOf(number), list.size() == number);
    for (Message message : list) {
        logger.info("取得的List<Message>包含对象:id={}, content={}", message.getId(), message.getContent());
    }
}
Also used : Message(com.bc.pmpheep.general.po.Message) ArrayList(java.util.ArrayList) Test(org.junit.Test) BaseTest(com.bc.pmpheep.test.BaseTest)

Aggregations

Message (com.bc.pmpheep.general.po.Message)27 UserMessage (com.bc.pmpheep.back.po.UserMessage)21 CheckedServiceException (com.bc.pmpheep.service.exception.CheckedServiceException)20 WebScocketMessage (com.bc.pmpheep.websocket.WebScocketMessage)20 ArrayList (java.util.ArrayList)19 Declaration (com.bc.pmpheep.back.po.Declaration)7 Material (com.bc.pmpheep.back.po.Material)7 OrgUser (com.bc.pmpheep.back.po.OrgUser)7 PmphUser (com.bc.pmpheep.back.po.PmphUser)6 WriterUser (com.bc.pmpheep.back.po.WriterUser)5 BaseTest (com.bc.pmpheep.test.BaseTest)4 Test (org.junit.Test)4 MessageAttachment (com.bc.pmpheep.back.po.MessageAttachment)3 PmphGroup (com.bc.pmpheep.back.po.PmphGroup)3 Textbook (com.bc.pmpheep.back.po.Textbook)3 PageResult (com.bc.pmpheep.back.plugin.PageResult)2 CmsContent (com.bc.pmpheep.back.po.CmsContent)2 DecPosition (com.bc.pmpheep.back.po.DecPosition)2 DecPositionPublished (com.bc.pmpheep.back.po.DecPositionPublished)2 MyMessageVO (com.bc.pmpheep.back.vo.MyMessageVO)2