Exemplo n.º 1
0
        /// <summary>
        /// 接收外部推送消息,如果时效时间为空。默认24小时
        /// </summary>
        /// <param name="model"></param>
        /// <param name="retMsg"></param>
        /// <returns></returns>
        public ErrCode AcceptMsgList(SendMsgListRequest model, out string retMsg)
        {
            retMsg = string.Empty;
            ErrCode errorCode = CheckAcceptMsg(model, out retMsg);

            if (errorCode != ErrCode.Sucess)
            {
                return(errorCode);
            }
            int length = model.TokenList.Count;
            //判断接收人的个数是否超出上限
            var tokenMaxNum = Convert.ToInt32(_configLogic.GetConfigValue(ConfigKey.TokenMaxNum));

            if (length > tokenMaxNum)
            {
                retMsg = string.Format("Token的个数太多,网关限制上限:{0}", tokenMaxNum);
                return(ErrCode.Failure);
            }
            List <SendMsgRequest> sendMsgRequestList = new List <SendMsgRequest>();

            foreach (var item in model.TokenList)
            {
                SendMsgRequest sendMsgRequest = _mapper.Map <SendMsgRequest>(model);
                sendMsgRequest.Token = item;
                sendMsgRequestList.Add(sendMsgRequest);
            }
            AcceptMsgListToTheardPool(sendMsgRequestList, out retMsg);
            return(ErrCode.Sucess);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 推送消息给推送平台
        /// </summary>
        /// <param name="sendProcessDto">推送消息</param>
        /// <param name="rzTokenBrandDto">注册信息</param>
        /// <param name="rzTokenBrandDetailDto">注册明细</param>
        /// <param name="channelDto">通道</param>
        /// <param name="appChannelDto">App和通道的关系</param>
        /// <param name="requestTime">请求时间</param>
        /// <returns></returns>
        public SenderRet SendPushMsgToProvider(SendProcessDto sendProcessDto, DeviceChannelDto deviceChannelDto, out int requestTime)
        {
            SenderRet senderRet = new SenderRet {
                IsSuccess = true
            };

            //底层发送消息
            requestTime = 0;
            //获取ProductionMode
            object ProducttMode = _configLogic.GetConfigValue(ConfigKey.ProductionMode);
            //构造底层推送消息的参数
            PushChannelModel pushChannelModel = new PushChannelModel
            {
                ChannelName    = deviceChannelDto.ChannelName,
                Url            = deviceChannelDto.Url,
                AppKey         = deviceChannelDto.AppKey,
                AppSecret      = deviceChannelDto.AppSecret,
                ProductionMode = Convert.ToBoolean(ProducttMode)      //获取调试模式
            };
            PushMsgModel pushMsgModel = new PushMsgModel
            {
                Ticker      = sendProcessDto.Title,
                Title       = sendProcessDto.Title,
                Msg         = sendProcessDto.Msg,
                AttachInfo  = sendProcessDto.AttachInfo,
                DeviceToken = deviceChannelDto.DeviceToken,
                SystemType  = (SystemTypeEnum)deviceChannelDto.SystemType
            };
            ISender sender = PushSenderManager.GetSender(deviceChannelDto.ChannelId);

            if (sender == null)
            {
                senderRet.IsSuccess = false;
                senderRet.Msg       = string.Format("ChannelId:{0},推送信息供应商不存在", deviceChannelDto.ChannelId);
                //LogHelper.Error.Write("SendPushMsgToProvider", senderRet.Msg);
                return(senderRet);
            }
            Stopwatch sw            = new Stopwatch();
            var       isRealPushMsg = _configLogic.GetConfigValue(ConfigKey.IsRealPushMsg);

            sw.Start();
            if (isRealPushMsg != null && Convert.ToBoolean(isRealPushMsg))
            {
                senderRet = PushSender.Send(sender, pushChannelModel, pushMsgModel);
            }
            else
            {
                Thread.Sleep(200);
                senderRet = new SenderRet {
                    IsSuccess = true, Sign = Guid.NewGuid().ToString()
                };
            }
            sw.Stop();
            requestTime = (int)sw.ElapsedMilliseconds;
            return(senderRet);
        }