/// <summary> /// 将消息推送给推送平台 /// </summary> /// <param name="list"></param> /// <param name="channel"></param> /// <param name="requestTime"></param> /// <returns></returns> public SenderRet SendPushMsgListToProvider(List <SendProcessDto> processList, SystemTypeEnum systemType, ChannelDto channelDto, out int requestTime) { string retMsg = string.Empty; SenderRet senderRet = new SenderRet { IsSuccess = true }; requestTime = 0; if (processList == null || processList.Count == 0) { senderRet.IsSuccess = false; senderRet.Msg = "SendProcessDtoList为空"; return(senderRet); } int appId = processList.First().AppId; AppChannelDto appChannelDto; if (!_channelLogic.CheckAppChannel(appId, (int)systemType, channelDto.Id, out appChannelDto, out retMsg)) { senderRet.IsSuccess = false; senderRet.Msg = retMsg; return(senderRet); } //推送第三方平台 友盟只能单推,小米可以批量推,个推也能批量推送 ISender sender = PushSenderManager.GetSender(channelDto.Id); if (sender == null) { senderRet.IsSuccess = false; senderRet.Msg = string.Format("ChannelId:{0},推送信息供应商不存在", channelDto.Id); return(senderRet); } PushChannelModel pushChannelModel = new PushChannelModel { ChannelName = channelDto.ChannelName, Url = channelDto.MultiUrl, AppKey = appChannelDto.AppKey, AppSecret = appChannelDto.AppSecret, ProductionMode = Convert.ToBoolean(_configLogic.GetConfigValue(ConfigKey.ProductionMode)), SystemType = systemType, PushNum = channelDto.PushNum ?? 50, TimeOut = channelDto.PushTimeOut }; List <PushMsgModel> pushMsgModelList = processList.Select(e => { return(new PushMsgModel { Id = e.Id, Ticker = e.Title, Title = e.Title, Msg = e.Msg, AttachInfo = e.AttachInfo, DeviceToken = e.DeviceToken, SystemType = systemType }); }).ToList(); var isRealPushMsg = _configLogic.GetConfigValue(ConfigKey.IsRealPushMsg); Stopwatch sw = new Stopwatch(); sw.Start(); if (isRealPushMsg != null && Convert.ToBoolean(isRealPushMsg)) { senderRet = sender.SendList(pushChannelModel, pushMsgModelList); } else { Thread.Sleep(2000); senderRet = new SenderRet { IsSuccess = true, Sign = Guid.NewGuid().ToString() }; } sw.Stop(); requestTime = (int)sw.ElapsedMilliseconds; return(senderRet); }