예제 #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;
 }
예제 #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;
        }
예제 #3
0
        /// <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;
        }
예제 #4
0
        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));
        }