/// <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; }
/// <summary> /// 备案错误推送消息 /// </summary> /// <param name="sendProcessDto">推送消息</param> /// <param name="errorStatus">错误类型</param> /// <param name="errorRemark">错误信息</param> /// <returns></returns> public void RecordErrorProcess(SendProcessDto sendProcessDto, ErrorTypeEnum errorType, string errorRemark) { if (sendProcessDto == null) { //LogHelper.Error.Write("RecordErrorProcess", "参数错误"); return; } ProcessHistoryDto processHistoryDto = _mapper.Map <ProcessHistoryDto>(sendProcessDto); processHistoryDto.Id = 0; processHistoryDto.SendStatus = (int)SendStatusEnum.Failure; processHistoryDto.ErrorType = (int)errorType; processHistoryDto.Remark = errorRemark; AddProcessHistoryDomainModel model = _mapper.Map <AddProcessHistoryDomainModel>(processHistoryDto); int row = _pushProcessHistoryService.InsertProcessHistoryAsync(model).Result; }
public async Task <int> InsertProcessHistoryAsync(AddProcessHistoryDomainModel dto) { if (dto == null) { return(0); } dto.Id = _idGenerator.GenerateId(); PushProcessHistory entity = _mapper.Map <PushProcessHistory>(dto); entity.CreateAt = entity.UpdateAt = DateTimeHelper.GetNow(); if (entity.DeviceToken.IsNullOrEmpty()) { entity.DeviceToken = ""; } int row = await _repository.InsertAsync(entity); return(row); }