Beispiel #1
0
 /// <summary>
 /// 处理方法
 /// </summary>
 /// <param name="process"></param>
 public  bool Handle(SendProcessDto process, out string retMsg)
 {
     ProcessHistoryDto processHistoryDto = _mapper.Map<ProcessHistoryDto>(process);
     processHistoryDto.Id = 0;
     processHistoryDto.SendStatus = (int)SendStatusEnum.Failure;
     processHistoryDto.ErrorType = (int)ErrorTypeEnum.TimeOut;
     AddProcessHistoryDomainModel model = _mapper.Map<AddProcessHistoryDomainModel>(processHistoryDto);
     int row = _pushProcessHistoryService.InsertProcessHistoryAsync(model).Result;
     row = _pushSendProcessService.DeleteProcessByIdAsync(process.Id).Result;
     retMsg = "";
     return true;
 }
Beispiel #2
0
        /// <summary>
        /// 推送消息之后执行DB操作
        /// </summary>
        /// <param name="senderRet">发送记录</param>
        /// <param name="sendProcessDto">推送消息</param>
        /// <param name="rzTokenBrandDto">注册信息</param>
        /// <param name="rzTokenBrandDetailDto">注册明细</param>
        /// <param name="channelDto">通道</param>
        /// <param name="requestTime">执行时间</param>
        public void SendMsgToDB(SenderRet senderRet, SendProcessDto sendProcessDto, DeviceChannelDto deviceChannelDto, int requestTime)
        {
            if (!senderRet.IsSuccess)
            {
                //发送失败的逻辑
                DateTime sendTime = DateTime.Now.AddSeconds((sendProcessDto.EndTime - DateTimeHelper.GetNow()).TotalSeconds / 2);
                if (sendProcessDto.TokenBrandId.HasValue)
                {
                    int row = _pushSendProcessService.WriteBackProcessByIdAsync(sendProcessDto.Id, sendTime).Result;
                }
                else
                {
                    //重新制造RzTokenBrandId有值的推送信息
                    SendProcessDto newSendProcess = sendProcessDto;
                    newSendProcess.Id           = 0;
                    newSendProcess.TokenBrandId = deviceChannelDto.Id;
                    newSendProcess.SendTime     = sendTime;
                    newSendProcess.IsUsed       = false;
                    newSendProcess.DelayTimes   = newSendProcess.DelayTimes + 1;
                    PushSendProcessDomainModel pushSendProcessDomainModel = _mapper.Map <PushSendProcessDomainModel>(newSendProcess);
                    int row = _pushSendProcessService.InsertProcessAsync(pushSendProcessDomainModel).Result;
                }
            }
            else if (sendProcessDto.TokenBrandId.HasValue)
            {
                //发送成功并且RzTokenBrandId不为空,直接删掉待发送的数据
                int row = _pushSendProcessService.DeleteProcessByIdAsync(sendProcessDto.Id).Result;
            }
            //无论发送成功与否,都要插入历史记录
            ProcessHistoryDto processHistoryDto = _mapper.Map <ProcessHistoryDto>(sendProcessDto);

            processHistoryDto.Id       = 0;
            processHistoryDto.SendTime = DateTimeHelper.GetNow();
            if (senderRet.IsSuccess)
            {
                processHistoryDto.SendStatus = (int)SendStatusEnum.Success;
            }
            else
            {
                processHistoryDto.SendStatus = (int)SendStatusEnum.Failure;
                processHistoryDto.ErrorType  = (int)ErrorTypeEnum.PushPlatform;
            }
            processHistoryDto.ChannelId   = deviceChannelDto.ChannelId;
            processHistoryDto.BrandId     = deviceChannelDto.BrandId;
            processHistoryDto.RequestTime = requestTime;
            processHistoryDto.ReturnSign  = senderRet.Sign;
            processHistoryDto.Remark      = senderRet.Code;
            AddProcessHistoryDomainModel model = _mapper.Map <AddProcessHistoryDomainModel>(processHistoryDto);
            int res = _pushProcessHistoryService.InsertProcessHistoryAsync(model).Result;
        }
Beispiel #3
0
        public bool Handle(SendProcessDto process, out string retMsg)
        {
            retMsg = string.Empty;
            //判断RzTokenBrandId是否为空
            if (process.TokenBrandId.HasValue)
            {
                DeviceChannelDomainModel deviceChannelDomainModel = _pushTokenBrandService.GetDeviceChannelListByTokenBrandIdAsync(process.TokenBrandId.Value).Result;
                DeviceChannelDto         deviceChannelDto         = _mapper.Map <DeviceChannelDto>(deviceChannelDomainModel);
                if (deviceChannelDomainModel != null)
                {
                    //如果存在RzTokenBrandId
                    _sendProcessLogic.SendNewProcess(process, deviceChannelDto, out retMsg);
                    return(true);
                }
                //如果不存在RzTokenBrandId,执行下面操作
            }

            List <DeviceChannelDomainModel> deviceChannelList = _pushTokenBrandService.GetDeviceChannelListAsync(process.Token, process.AppId).Result;

            if (deviceChannelList == null || deviceChannelList.Count == 0)
            {
                _sendProcessLogic.RecordErrorProcess(process, ErrorTypeEnum.Logout, retMsg);
            }
            else
            {
                foreach (var item in deviceChannelList)
                {
                    DeviceChannelDto deviceChannelDto = _mapper.Map <DeviceChannelDto>(item);
                    _sendProcessLogic.SendNewProcess(process, deviceChannelDto, out retMsg);
                }
            }
            //发送成功删除数据
            var i = _pushSendProcessService.DeleteProcessByIdAsync(process.Id).Result;

            return(true);
        }