/// <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; }
/// <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; }
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); }