package cn.com.ty.lift.common.utils;

import cn.com.ty.lift.common.constants.WebSocketConstants;
import cn.com.ty.lift.common.model.TimeMessage;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.support.GenericMessage;

import java.util.ArrayList;
import java.util.List;

/**
 * @author huangyuan
 * @date 2020/5/2
 * @description 消息推送类
 */
public class SendMessageUtil {


    /**
     * @param jmsMessagingTemplate 推送消息模板
     * @param sendToUserIdList     要推送的用户id
     * @param content              推送的消息内容
     * @param msgType              消息类型 : 1 团队消息
     *                                       2 公司消息
     *                                       3 保养消息
     *                                       4 急修消息
     *                                       5 年检消息
     *                                       6 提醒(消息简报)
     * @return 是否推送成功 false 失败 true 成功
     * @description
     * @date 2020/5/2 4:11 下午
     */
    public static boolean sendMessageToPC(JmsMessagingTemplate jmsMessagingTemplate, List<Long> sendToUserIdList,
                                          String content, int msgType) {
        if (sendToUserIdList != null && sendToUserIdList.size() > 0) {
            //组合消息
            List<TimeMessage> TimeMessageList = new ArrayList<>();
            sendToUserIdList.forEach(sendToUserId -> {
                TimeMessageList.add(TimeMessage.create(sendToUserId, msgType, content));
            });
            //推送消息
            return SendMessageUtil.sendMessageToPC(jmsMessagingTemplate, TimeMessageList);
        }
        return false;
    }

    /**
     * @param jmsMessagingTemplate 推动模板类
     * @param TimeMessageList      要推送的消息列表
     * @return 是否成功 false 失败 true 成功
     * @description 将消息推送到PC端
     * @date 2020/5/2 3:38 下午
     */
    private static boolean sendMessageToPC(JmsMessagingTemplate jmsMessagingTemplate, List<TimeMessage> TimeMessageList) {
        if (TimeMessageList != null && TimeMessageList.size() > 0) {
            jmsMessagingTemplate.send(WebSocketConstants.PUSH_MESSAGE_TO_PC, new GenericMessage<>(TimeMessageList));
            return true;
        }
        return false;
    }
}
