/// <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 <ProcessHistory> GetAsync(Guid id, bool includeDetails = false) { ProcessHistoryDto item = default; // var sql = $"SELECT " + // $"{string.Join(", ", item.GetColumns().Select(c => c.Key))} " + // $"FROM {item.GetTableName()} " + // $"WHERE {nameof(ProcessHistoryDto.Id)} = @ProcessHistoryId"; var query = tableQuery.GetSingleQuery <ProcessHistoryDto>(); item = await DbConnection.QueryFirstAsync <ProcessHistoryDto>(query, new ProcessHistoryDto { Id = id }, DbTransaction); item.Interruption = await GetInterruptionHistoryDtoAsync(item.Id); if (!string.IsNullOrEmpty(item.ProductSpecificationCode)) { item.ProductSpecification = await GetProductSpecificationDtoAsync(item.ProductSpecificationCode); } return(mapper.Map <ProcessHistory>(item)); }