Exemple #1
0
        public static void WriteAudit(DataAudit.DataAudit auditLogToProcess, string title)
        {
            DataAudit.DataAudit auditLog = auditLogToProcess;
            auditLog.TimeStamp = DateTime.UtcNow;

            QueueMessage newMessage = null;

            //where should I get this?
            string dbName      = ConfigurationManager.AppSettings.Get("PhytelServicesConnName");
            string configqueue = "DATA_AUDIT_QUEUE";

            DataSet ds = Phytel.Services.SQLDataService.Instance.ExecuteSQL(dbName, false, string.Format("Select [Value] From ApplicationSetting Where [Key] = '{0}'", configqueue));

            if (ds.Tables[0].Rows.Count > 0)
            {
                string messageQueue = ds.Tables[0].Rows[0]["Value"].ToString();
                //string messageQueue = "fake";

                string xmlBody = ToXML(auditLog);

                newMessage      = new QueueMessage(ASEMessageType.Process, messageQueue);
                newMessage.Body = xmlBody;

                MessageQueueHelper.SendMessage(@messageQueue, newMessage, title);
            }
        }
Exemple #2
0
        private static void TestAuditFailure(int numberOfMessagesToCreate)
        {
            while (numberOfMessagesToCreate > 0)
            {
                QueueMessage msg = new QueueMessage();

                DataAudit da = new DataAudit();
                da.Contract   = "inhealth001";
                da.EntityID   = "531f2dcc072ef727c4d29e22";
                da.EntityType = "testentitytype";
                da.UserId     = "531f2dcc072ef727c4d29yyy";
                da.TimeStamp  = DateTime.Now;

                string xmlBody      = AuditDispatcher.ToXML(da);
                string messageQueue = @".\private$\failure";


                QueueMessage newMessage = new QueueMessage(ASEMessageType.Process, messageQueue);
                newMessage.Body = xmlBody;

                MessageQueueHelper.SendMessage(@messageQueue, newMessage, "TestFailureType");

                --numberOfMessagesToCreate;
            }
        }
Exemple #3
0
        public AuditData LogEvent(AuditData auditLogToProcess)
        {
            AuditData auditLog = auditLogToProcess;

            auditLog.EventDateTime = DateTime.Now;

            QueueMessage newMessage = null;

            string messageQueue = ApplicationSettingService.Instance.GetSetting("AUDIT_QUEUE").Value;

            string xmlBody = ToXML(auditLog);

            newMessage      = new QueueMessage(ASEMessageType.Process, messageQueue);
            newMessage.Body = xmlBody;

            string title = string.Empty;

            if (auditLog.Type.ToString() == "PageView")
            {
                title = auditLog.Type.ToString() + " - " + auditLog.SourcePage;
            }
            else
            {
                title = auditLog.Type.ToString();
            }

            MessageQueueHelper.SendMessage(@messageQueue, newMessage, title);

            return(auditLog);
        }
Exemple #4
0
        public MessageQueueListener(string queuePath, Type[] types)
        {
            _queue = MessageQueueHelper.GetOrCreateQueue(queuePath);

            if (types != null && types.Length > 0)
            {
                _queue.Formatter = new XmlMessageFormatter(types);
            }
        }
 static PayOrderMqHelper()
 {
     try
     {
         var messageQueue = MessageQueueHelper.GetMessageQueueFromPool();
         m_publisher = messageQueue.GetMessagePublisher(QueueName.AutoPayQueue.ToString());
     }
     catch (Exception ex)
     {
         throw new Exception("Lx.Service.WcfHelper.SendPayOrderMessageToMq 初始化MQ失败。Ex:=" + ex.Source + ex.Message + ex.StackTrace);
     }
 }
Exemple #6
0
        private void InitializeCentralQueueSender(string currentQueuePath)
        {
            var centralQueueName    = _settingsProvider.GetCentralMessageQueueName();
            var centralQueueMachine = _settingsProvider.GetCentralMessageQueueMachine();
            var centralQueuePath    = MessageQueueHelper.GetQueuePath(centralQueueName, centralQueueMachine);

            _msmqSender = _msmqFactory.GetSender(centralQueuePath);
            _msmqSender.Send(new AddSubscriberMessage
            {
                SubscriberQueue = currentQueuePath
            });
        }
        public void ReturnTrueIfMessagePulledFromQueue()
        {
            //Arrange

            var customerService = new MessageQueueHelper(loggerMoq.Object, customerServiceMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PullMessageFromServiceBus(null);

            //Assert
            Assert.True(result);
        }
        public void ReturnFalseIfMessageNotPulledFromQueue()
        {
            //Arrange
            messaginQueueHandlerMoq.Setup(mq => mq.PullMessage <PingVehicleModel>(It.IsAny <IModel>())).Returns(new ResponseDetails <PingVehicleModel, ulong>(ResponseStatusCode.NotFound));

            var customerService = new MessageQueueHelper(loggerMoq.Object, customerServiceMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PullMessageFromServiceBus(null);

            //Assert
            Assert.False(result);
        }
        public void ReturnFalseIfMessagePulledFromQueueButNotUpdateInDb()
        {
            //Arrange
            customerServiceMoq.Setup(cs => cs.UpdateVehicleStatus(It.IsAny <PingVehicleModel>())).Returns(new ResponseDetailsBase(ResponseStatusCode.NotFound));

            var customerService = new MessageQueueHelper(loggerMoq.Object, customerServiceMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PullMessageFromServiceBus(null);

            //Assert
            Assert.False(result);
        }
 /// <summary>
 /// 功能:初始化
 /// </summary>
 public static void Initalize()
 {
     try
     {
         m_messageReceiver           = MessageQueueHelper.GetMessageQueueFromPool().GetMessageReceiver(QueueName.LxLogQueue.ToString(), "");
         m_messageReceiver.Received += m_messageReceiver_Received;
         m_messageReceiver.Start();
         Console.WriteLine("日志消息队列消费者已启动!");
     }
     catch (Exception ex)
     {
         string strErrorMessage = SysLogHelper.GetErrorLogInfo(ex, true);
         SysLogHelper.LogMessage("LogMQConsumerHelper.Static", strErrorMessage);
     }
 }
Exemple #11
0
 /// <summary>
 /// 功能:初始化
 /// </summary>
 public static void Initalize()
 {
     try
     {
         m_messageReceiver           = MessageQueueHelper.GetMessageQueueFromPool().GetMessageReceiver(QueueName.AutoPayQueue.ToString(), "");
         m_messageReceiver.Received += m_messageReceiver_Received;
         m_messageReceiver.Start();
         Console.WriteLine("订单服务已启动!");
     }
     catch (Exception ex)
     {
         string strMessage = $"初始化,原因:{SysLogHelper.GetErrorLogInfo(ex, true)}";
         SysLogHelper.LogMessage("Lx.Service.Initalize", strMessage);
     }
 }
        public void ReturnSuccessIfMessagePushgedToQueue()
        {
            //Arrange

            var customerService = new MessageQueueHelper(loggerMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PushMessageToQueue(new VehicleDto()
            {
                VehicleId = "Test123"
            });

            //Assert
            Assert.Equal(ResponseStatusCode.Success, result.StatusCode);
        }
Exemple #13
0
        public bool Start(HostControl hostControl)
        {
            _logger.Info("The file control service is starting.");

            var queueName = _settingsProvider.GetMessageQueueName();
            var queuePath = MessageQueueHelper.GetQueuePath(queueName);

            _msmqListener = _msmqFactory.GetListener(queuePath, _messageTypes);
            _msmqListener.MessageReceived += OnMessageReceived;
            _msmqListener.Start();
            _commandSender.Start();

            _logger.Info("The file control service has started.");

            return(true);
        }
        public void ReturnFailedIfMessageNotPushedToMessageQueue(ResponseStatusCode responseStatusCode)
        {
            //Arrange
            messaginQueueHandlerMoq.Setup(mq => mq.PushMessage <PingVehicleModel>(It.IsAny <PingVehicleModel>(), It.IsAny <IModel>())).Returns(new ResponseDetailsBase(responseStatusCode));

            var customerService = new MessageQueueHelper(loggerMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var result = customerService.PushMessageToQueue(new VehicleDto()
            {
                VehicleId = "Test123"
            });

            //Assert
            Assert.Equal(responseStatusCode, result.StatusCode);
        }
        public void ReturnInvalidInpust()
        {
            //Arrange

            var customerService = new MessageQueueHelper(loggerMoq.Object, messaginQueueHandlerMoq.Object);

            //Act

            var nullResult = customerService.PushMessageToQueue(new VehicleDto()
            {
            });
            var emptyResult = customerService.PushMessageToQueue(new VehicleDto()
            {
                VehicleId = ""
            });

            //Assert
            Assert.Equal(ResponseStatusCode.InvalidInputs, nullResult.StatusCode);
            Assert.Equal(ResponseStatusCode.InvalidInputs, emptyResult.StatusCode);
        }
Exemple #16
0
        public override void Execute(QueueMessage queueMessage)
        {
            try
            {
                _DBConnName = base.Configuration.SelectSingleNode("//Phytel.ASE.Process/ProcessConfiguration/PhytelServicesConnName").InnerText;

                DataAudit.DataAudit da = MessageQueueHelper.DeserializeXmlObject(queueMessage.Body, typeof(DataAudit.DataAudit)) as DataAudit.DataAudit;

                MongoDatabase db = Phytel.Services.MongoService.Instance.GetDatabase(_DBConnName, da.Contract, true, "Audit");
                db.GetCollection(da.EntityType).Insert(da);

                XmlNodeList queues = Configuration.SelectNodes(ConfigXPathPrefix + "AdditionalQueues/Queue");
                if (queues != null)
                {
                    queueMessage.Routes.ForEach(t =>
                    {
                        t.RetryProcessInterval = GetRetryInterval();
                        t.MaxProcessRetryCount = 4;
                    });

                    foreach (XmlNode queue in queues)
                    {
                        try
                        {
                            string queueName = queue.InnerText;
                            RouteMessage(queueMessage, queueName);
                        }
                        catch (Exception ex)
                        {
                            LogError(ex, LogErrorCode.Error, LogErrorSeverity.Critical);
                            RetryMessage = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                base.LogError(ex, LogErrorCode.Error, LogErrorSeverity.Critical);
                throw;
            }
        }
Exemple #17
0
        public static void WriteAudit(AuditData auditLogToProcess)
        {
            AuditData auditLog = auditLogToProcess;

            auditLog.EventDateTime = DateTime.UtcNow;

            QueueMessage newMessage = null;

            //where should I get this?
            string dbName      = ConfigurationManager.AppSettings.Get("PhytelServicesConnName");
            string configqueue = "AUDIT_QUEUE";

            DataSet ds = Phytel.Services.SQLDataService.Instance.ExecuteSQL(dbName, false, string.Format("Select [Value] From ApplicationSetting Where [Key] = '{0}'", configqueue));

            if (ds.Tables[0].Rows.Count > 0)
            {
                string messageQueue = ds.Tables[0].Rows[0]["Value"].ToString();
                //string messageQueue = "fake";

                string xmlBody = ToXML(auditLog);

                newMessage      = new QueueMessage(ASEMessageType.Process, messageQueue);
                newMessage.Body = xmlBody;

#if DEBUG
                Debug.WriteLine(string.Format("***** Message Body ***** {0}", newMessage.Body));
#endif

                string title = string.Empty;
                if (auditLog.Type.ToString() == "PageView")
                {
                    title = auditLog.Type.ToString() + " - " + auditLog.SourcePage;
                }
                else
                {
                    title = auditLog.Type.ToString();
                }

                MessageQueueHelper.SendMessage(@messageQueue, newMessage, title);
            }
        }
Exemple #18
0
        public bool Start(HostControl hostControl)
        {
            _logger.Info("The file handler service is starting.");

            var queueName = _settingsProvider.GetMessageQueueName();
            var queuePath = MessageQueueHelper.GetQueuePath(queueName);

            InitializeCentralQueueSender(queuePath);
            InitializeQueueListener(queuePath);

            var sourceFolderPaths = _settingsProvider.GetSourceFolderPaths();

            _pageTimeout = _settingsProvider.GetPageTimeout();

            try
            {
                _fileHandlers = sourceFolderPaths.Select(sourceFolderPath =>
                {
                    var handler            = _fileHandlerFactory.GetHandler();
                    handler.DocumentSaved += OnDocumentSaved;
                    handler.Start(sourceFolderPath, _pageTimeout);
                    return(handler);
                }).ToList();
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);
                throw;
            }

            var reportingTimeout = _settingsProvider.GetReportingTimeout() * 1000;

            _reportingTimer.Change(reportingTimeout, reportingTimeout);

            _logger.Info("The file handler service has started.");

            return(true);
        }
        public async Task <IActionResult> Post()
        {
            // non-forced-to-disposal
            UserRegistrationResponse response = new UserRegistrationResponse
            {
                IsSucceded = true,
                ResultId   = (int)UserRegistrationResponseEnum.Success
            };

            // forced-to-disposal
            UserRegistrationRequest userRegistrationRequest = null;
            MongoDBConnectionInfo   mongoDBConnectionInfo   = null;
            KeyVaultConnectionInfo  keyVaultConnectionInfo  = null;
            User user = null;

            try
            {
                userRegistrationRequest          = new UserRegistrationRequest();
                userRegistrationRequest.Email    = HttpContext.User.FindFirst("preferred_username").Value;
                userRegistrationRequest.Fullname = ((HttpContext.User.FindFirst("name") != null) ? HttpContext.User.FindFirst("name").Value : string.Empty);

                if (string.IsNullOrEmpty(userRegistrationRequest.Fullname))
                {
                    throw new BusinessException((int)UserRegistrationResponseEnum.FailedEmptyFullname);
                }

                mongoDBConnectionInfo = new MongoDBConnectionInfo()
                {
                    ConnectionString = ApplicationSettings.ConnectionString,
                    DatabaseId       = ApplicationSettings.DatabaseId,
                    UserCollection   = ApplicationSettings.UserCollection
                };

                using (UserRegistrationDataHelper userRegistrationDataHelper = new UserRegistrationDataHelper(mongoDBConnectionInfo))
                {
                    user = userRegistrationDataHelper.GetUser(userRegistrationRequest.Email);
                }

                if (user == null)
                {
                    keyVaultConnectionInfo = new KeyVaultConnectionInfo()
                    {
                        CertificateName    = ApplicationSettings.KeyVaultCertificateName,
                        ClientId           = ApplicationSettings.KeyVaultClientId,
                        ClientSecret       = ApplicationSettings.KeyVaultClientSecret,
                        KeyVaultIdentifier = ApplicationSettings.KeyVaultIdentifier
                    };

                    using (MessageQueueHelper messageQueueHelper = new MessageQueueHelper())
                    {
                        UserRegistrationMessage userRegistrationMessage = new UserRegistrationMessage()
                        {
                            fullname = userRegistrationRequest.Fullname,
                            email    = userRegistrationRequest.Email
                        };

                        await messageQueueHelper.QueueMessageAsync(userRegistrationMessage, ApplicationSettings.UserRegistrationQueueName, keyVaultConnectionInfo);
                    }
                }
                else
                {
                    response.ResultId = (int)UserRegistrationResponseEnum.SuccessAlreadyExists;
                }
            }
            catch (Exception ex)
            {
                response.IsSucceded = false;

                if (ex is BusinessException)
                {
                    response.ResultId = ((BusinessException)ex).ResultId;
                }
                else
                {
                    response.ResultId = (int)UserRegistrationResponseEnum.Failed;

                    this.logger.LogError($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                    if (ex.InnerException != null)
                    {
                        this.logger.LogError($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                    }
                }
            }
            finally
            {
                userRegistrationRequest = null;
                mongoDBConnectionInfo   = null;
                keyVaultConnectionInfo  = null;
                user = null;

                GC.Collect();
            }

            string message = EnumDescription.GetEnumDescription((UserRegistrationResponseEnum)response.ResultId);

            this.logger.LogInformation($">> Message information: {message}");

            return((response.IsSucceded) ? (ActionResult) new OkObjectResult(new { message = message }) : (ActionResult) new BadRequestObjectResult(new { message = message }));
        }
 /// <summary>
 /// 发送快照
 /// </summary>
 /// <param name="data">data为SnapshotMessage实体</param>
 public static void SendSnapshot(object data)
 {
     MessageQueueHelper<object> helper = new MessageQueueHelper<object>(AppSettings.SnapShot, 1);
     helper.Send(data);
 }
Exemple #21
0
        //public List<Policies> ListenQueuePolicy(string queueHost, string queueName)
        //{
        //    MessageQueue x = new MessageQueue( ".\\" + queueHost + "\\" + queueName);
        //    System.Messaging.Message myMessage = null;
        //    try
        //    {
        //        myMessage = x.Receive(MessageQueueTransactionType.Single);
        //        myMessage.Formatter = new BinaryMessageFormatter();
        //        List<Policies> lstPolicies = myMessage.Body as List<Policies>;
        //        return lstPolicies;

        //    }
        //    catch (Exception ex)
        //    {

        //        return new List<Policies>();
        //    }
        //}

        public override RunTaskResult RunTask()
        {
            RunTaskResult taskResult = new RunTaskResult()
            {
                Success = true, Result = "执行完毕"
            };
            List <Policies> lstPolicies      = new List <Policies>();
            string          queueName        = CustomConfig["policyUpdateQueueName"];
            string          warningQueueName = CustomConfig["warningPolicyUpdateQueueName"]; //预警队列名称
            string          warningQueueHost = CustomConfig["warningPolicyUpdateQueueHost"]; //预警队列主机
            string          queueHost        = CustomConfig["policyUpdateQueueHost"];

            while (true)
            {
                try
                {
                    #region 监听队列
                    try
                    {
                        ShowRunningLog(DateTime.Now + ":队列监听中...");
                        MessageQueue             x         = new MessageQueue(".\\" + queueHost + "\\" + queueName);
                        System.Messaging.Message myMessage = x.Receive(MessageQueueTransactionType.Single);
                        myMessage.Formatter = new BinaryMessageFormatter();
                        lstPolicies         = myMessage.Body as List <Policies>;
                        if (lstPolicies == null || lstPolicies.Count <= 0)
                        {
                            ShowRunningLog(DateTime.Now + ":未从队列中收到任何政策更新包!");
                            continue;
                            //  return taskResult;
                        }
                    }
                    catch (Exception ex)
                    {
                        ShowRunningLog(DateTime.Now + ":监听队列异常:" + JsonConvert.SerializeObject(ex));
                        taskResult = new RunTaskResult()
                        {
                            Success = false, Result = ex.Message
                        };
                        // return taskResult;
                    }
                    #endregion

                    #region 过滤掉失败次数大于2次的
                    ShowRunningLog(DateTime.Now + ":从队列中收到政策:" + lstPolicies.Count + "条!");
                    List <Policies> lstFailedPolicies = lstPolicies.Where(x => x.Id >= 2).ToList();//找出失败大于等于俩次的条数
                    if (lstFailedPolicies.Count > 0)
                    {
                        ShowRunningLog(DateTime.Now + ":收到更新政策失败次数超过2次的政策条数:" + lstFailedPolicies.Count + "条,开始发送到预警队列");
                        bool r = new MessageQueueHelper().SendMsgToQueue(warningQueueName, lstPolicies, MessagePriority.Normal, warningQueueHost);
                        if (r)
                        {
                            ShowRunningLog(DateTime.Now + ":发送到预警队列成功");
                            continue;
                        }

                        new MessageQueueHelper().SendMsgToQueue(queueName, lstPolicies, MessagePriority.Normal, queueHost);
                        ShowRunningLog(DateTime.Now + ":发送到预警队列失败!重新发送回队列成功!");
                    }
                    lstPolicies = lstPolicies.Where(x => x.Id < 2).ToList();
                    if (lstPolicies.Count <= 0)
                    {
                        ShowRunningLog(DateTime.Now + ":失败次数小于2次的政策数为0,不用更新");
                        continue;
                        //return taskResult;
                    }

                    UploadPolicy(lstPolicies, queueName, queueHost);
                    #endregion
                }
                catch (Exception ex)
                {
                    lstPolicies.ForEach(x =>
                    {
                        x.Id += 1;
                    });
                    ShowRunningLog(DateTime.Now + ":抛出异常:" + JsonConvert.SerializeObject(ex));
                    new MessageQueueHelper().SendMsgToQueue(queueName, lstPolicies, MessagePriority.Normal, queueHost);

                    //taskResult = new RunTaskResult { Success = false, Result = ex.Message };
                }
                // Thread.Sleep(10 * 1000);
            }
            return(taskResult);
        }
        public async Task <IActionResult> Post([FromBody] ContractDeploymentRequest model)
        {
            // non-forced-to-disposal
            ContractDeploymentResponse result = new ContractDeploymentResponse
            {
                IsSucceded = true,
                ResultId   = (int)ContractDeploymentResponseEnum.Success
            };

            // forced-to-disposal
            KeyVaultConnectionInfo keyVaultConnectionInfo = null;

            try
            {
                if (string.IsNullOrEmpty(model.Name))
                {
                    throw new BusinessException((int)ContractDeploymentResponseEnum.FailedEmptyName);
                }

                if (string.IsNullOrEmpty(model.Description))
                {
                    throw new BusinessException((int)ContractDeploymentResponseEnum.FailedEmptyDescription);
                }

                keyVaultConnectionInfo = new KeyVaultConnectionInfo()
                {
                    CertificateName    = ApplicationSettings.KeyVaultCertificateName,
                    ClientId           = ApplicationSettings.KeyVaultClientId,
                    ClientSecret       = ApplicationSettings.KeyVaultClientSecret,
                    KeyVaultIdentifier = ApplicationSettings.KeyVaultIdentifier
                };

                using (MessageQueueHelper messageQueueHelper = new MessageQueueHelper())
                {
                    ContractDeploymentMessage contractDeploymentMessage = new ContractDeploymentMessage()
                    {
                        name        = model.Name,
                        description = model.Description
                    };

                    await messageQueueHelper.QueueMessageAsync(contractDeploymentMessage, ApplicationSettings.ContractDeploymentQueueName, keyVaultConnectionInfo);
                }
            }
            catch (Exception ex)
            {
                result.IsSucceded = false;

                if (ex is BusinessException)
                {
                    result.ResultId = ((BusinessException)ex).ResultId;
                }
                else
                {
                    result.ResultId = (int)ContractDeploymentResponseEnum.Failed;

                    this.logger.LogError($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                    if (ex.InnerException != null)
                    {
                        this.logger.LogError($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                    }
                }
            }
            finally
            {
                keyVaultConnectionInfo = null;

                GC.Collect();
            }

            string message = EnumDescription.GetEnumDescription((ContractDeploymentResponseEnum)result.ResultId);

            this.logger.LogInformation($">> Message information: {message}");

            return((result.IsSucceded) ? (ActionResult) new OkObjectResult(new { message = message }) : (ActionResult) new BadRequestObjectResult(new { message = message }));
        }
        public void SyncForAdd()
        {
            try
            {
                PolicyServiceBy19e.syncRateRequest req            = new PolicyServiceBy19e.syncRateRequest();
                PolicyServiceBy19e.SyncRateServiceGHImplService c = new PolicyServiceBy19e.SyncRateServiceGHImplService();

                //while (true)
                //{
                string[] arryTimeAndId = GetLastUpTimeAndId("ND.ReceivePolicyService\\19e\\PolicyAddLog19e").Split('|');

                req.aircomp2c   = "";  //航空公司, 如:MU, 为空取所有
                req.rateType    = "3"; //政策类型[1:普通/2:特殊3:全部]
                req.psgType     = "1"; //乘客类型[1:成人/2:儿童/3:全部]
                req.strategyId  = arryTimeAndId[1];
                req.updateTime  = arryTimeAndId[0];
                req.minDiscount = "0";

                req.pageSize = Config.PerPageSize;
                req.username = Config.Username19e; //"18618001265";
                req.appcode  = Config.AppCode19e;  // "19";
                req.sign     = GetSignSync(req);
                PolicyServiceBy19e.syncRateResponse res = new syncRateResponse();
                try
                {
                    // ShowMsgToForm("接收19e政策请求参数:" + JsonConvert.SerializeObject(req));
                    res = c.GetSyncRate(req);
                }
                catch (Exception ex)
                {
                    ShowMsgToForm("接收19e政策异常:" + JsonConvert.SerializeObject(ex));
                    return;
                }


                if (res.code.Trim() == "F")
                {
                    ShowMsgToForm("19e政策接收失败,错误信息:" + res.message);
                    return;
                }
                else if (res.code.Trim() == "S")
                {
                    ShowMsgToForm("19e政策接口连接成功,接收政策...", "19e", false, false);

                    PolicyServiceBy19e.rate[] arry = res.rateList;

                    if (arry == null || arry.Length == 0)
                    {
                        ShowMsgToForm("19e政策 - 尚无新政策", "19e", false, false);
                        return;
                    }
                    List <Policies> list = new List <Policies>();

                    Regex regV = new Regex(@"[^\d\/]");

                    foreach (var item in arry)
                    {
                        #region 新代码


                        Policies policyInfo = new Policies();
                        // policyInfo.PolicyId = System.Guid.NewGuid().ToString();
                        policyInfo.AirlineCode      = item.aircomp2c;                                                                                                      //航空公司
                        policyInfo.DptCity          = item.fromport3c;                                                                                                     //出发城市
                        policyInfo.ArrCity          = item.toport3c;                                                                                                       //抵达城市
                        policyInfo.FlightIn         = item.flightnoFit == null ? "" : item.flightnoFit == "***" ? "" : regV.Replace(item.flightnoFit, "").Trim();          //适用航班
                        policyInfo.FlightOut        = item.flightnoNotFit == null ? "" : item.flightnoNotFit == "***" ? "" : regV.Replace(item.flightnoNotFit, "").Trim(); //不适用航班
                        policyInfo.Seat             = item.flightclass != "" ? item.flightclass : "";                                                                      //舱位
                        policyInfo.SrcType          = (int)item.routetype;                                                                                                 //航程类型航程类型[1:单程/2:往返/3:单程及往返]
                        policyInfo.SaleEffectDate   = item.sdate;                                                                                                          //政策有效期(开始时间)
                        policyInfo.SaleExpireDate   = item.edate;                                                                                                          //政策有效期(截止时间)
                        policyInfo.FlightEffectDate = item.sdate;
                        policyInfo.FlightExpireDate = item.edate;
                        policyInfo.CommisionPoint   = item.backrate;                              //返点
                        policyInfo.CommisionMoney   = 0;                                          //返现
                        policyInfo.NeedSwitchPNR    = 0;                                          //是否需要换pnr
                        policyInfo.TicketSpeed      = item.thespeed;                              //出票速度
                        policyInfo.IssueWorkTime    = item.worktime == null ? "" : item.worktime; //出票时间段
                        policyInfo.VtWorkTime       = item.voidtime == null ? "" : item.voidtime; //废票时间段
                        policyInfo.PartnerId        = (int)SupplierType._19E;
                        policyInfo.PartnerName      = SupplierType._19E.ToString();
                        policyInfo.Comment          = item.chngretmemo ?? "";     //政策备注
                        policyInfo.FlightCycle      = item.daysFit;               //适用班期
                        policyInfo.DelDegree        = 1;
                        policyInfo.CommisionType    = int.Parse(item.ratetype);   //政策类型 1-普通
                        policyInfo.PartnerPolicyId  = item.strategyId.ToString(); //政策代号
                        policyInfo.PolicyStatus     = 1;
                        policyInfo.CreateTime       = DateTime.Now;
                        policyInfo.PolicyType       = ((PolicyType)item.strategyType).ToString();
                        policyInfo.PsgType          = item.psgtype;//乘客类型[1:成人]
                        //policyInfo.UserType = item.usertype;//客户类型[1:散客]
                        policyInfo.Param1 = "";
                        policyInfo.Param2 = "";
                        policyInfo.Param3 = "";
                        policyInfo.Param4 = "";
                        list.Add(policyInfo);
                        #endregion
                    }

                    ShowMsgToForm("19e政策接收成功,共接收 " + list.Count + " 条政策,更新数据库...", "19e", false);
                    if (Config.IsSendPolicyQueue)
                    {
                        MessageQueueHelper helper = new MessageQueueHelper();
                        bool r = helper.SendMsgToQueue(Config.QueueName, list, MessagePriority.Normal, Config.QueueHost);
                        if (r)
                        {
                            ShowMsgToForm("发送去哪儿更新队列成功", "19e", false);
                        }
                    }
                    List <PolicySyncRec> errList = PolicyManage19e.SynchronizePolicy(list);
                    if (errList.Count <= 0)
                    {
                        SaveLastUpTimeAndId(res.updateTime + "|" + arry[arry.Length - 1].strategyId, "ND.ReceivePolicyService\\19e\\PolicyAddLog19e");
                        ShowMsgToForm("19e政策更新数据库成功!", "19e", false);
                    }
                    //else
                    // ShowMsgToForm("19e政策更新数据库失败!更新不成功的数据:" + JsonConvert.SerializeObject(errList),"19eErrAddRec");

                    if (res.pageCount < 1)
                    {
                        return;
                    }
                    else
                    {
                        ShowMsgToForm("19e政策 PageCount(" + res.pageCount + ") 大于 1 继续调用同步接口...", "19e", false);
                    }
                }
            }
            catch (Exception ex)
            {
                var str = ex.Message;
                while (ex.InnerException != null)
                {
                    ex   = ex.InnerException;
                    str += ex.ToString();   // ex.Message;
                }
                ShowMsgToForm("添加19e政策异常:" + str);
            }
        }
        public void SyncForDel()
        {
            try
            {
                PolicyServiceBy19e.syncRateDelRequest           reqDel = new PolicyServiceBy19e.syncRateDelRequest();
                PolicyServiceBy19e.SyncRateServiceGHImplService c      = new PolicyServiceBy19e.SyncRateServiceGHImplService();


                string[] arryTimeAndId = GetLastUpTimeAndId("ND.ReceivePolicyService\\19e\\PolicyDelLog19e").Split('|');
                reqDel.updateTime       = arryTimeAndId[0];
                reqDel.deleteStrategyId = arryTimeAndId[1];
                reqDel.pageSize         = Config.PerPageSize;
                reqDel.username         = Config.Username19e; //"18618001265";
                reqDel.appcode          = Config.AppCode19e;  // "19";
                reqDel.sign             = GetSignSyncDel(reqDel);

                PolicyServiceBy19e.syncRateDelResponse res = c.GetSyncRateDel(reqDel);
                //SaveLog("19e政策(删除)响应数据:" + JsonConvert.SerializeObject(res), "19eDelResponse");
                if (res.code.Trim() == "F")
                {
                    ShowMsgToForm("19e政策(删除)接收失败,错误信息" + res.message);
                }
                else if (res.code.Trim() == "S")
                {
                    ShowMsgToForm("19e政策(删除)接口连接成功,接收政策...", "19e", false, false);

                    PolicyServiceBy19e.rateDel[] arry = res.rateList;
                    if (arry == null || arry.Length == 0)
                    {
                        ShowMsgToForm("19e政策 - 尚无删除的政策", "19e", false, false);
                        return;
                    }
                    List <Policies> listDelPolicy = new List <Policies>();
                    List <string>   list          = new List <string>();
                    foreach (var item in arry)
                    {
                        Policies pl = new Policies();
                        pl.DelDegree       = 0;
                        pl.PartnerPolicyId = item.strategyId.ToString();
                        list.Add(item.strategyId.ToString());
                        listDelPolicy.Add(pl);
                    }
                    if (Config.IsSendPolicyQueue)
                    {
                        MessageQueueHelper helper = new MessageQueueHelper();
                        bool r = helper.SendMsgToQueue(Config.QueueName, listDelPolicy, MessagePriority.Normal, Config.QueueHost);
                        if (r)
                        {
                            ShowMsgToForm("发送去哪儿删除更新队列成功,共发送" + listDelPolicy.Count + "条", "19e", false);
                        }
                    }
                    ShowMsgToForm("19e政策(删除)接收成功,共接收 " + list.Count + " 条政策,更新数据库...", "19e", false);

                    List <string> errSql = PolicyManage19e.SynchronizePolicyDel(list);
                    SaveLastUpTimeAndId(res.updateTime + "|" + res.deleteStrategyId, "ND.ReceivePolicyService\\19e\\PolicyDelLog19e");
                    if (errSql.Count <= 0)
                    {
                        //SaveLastUpTimeAndId(res.updateTime + "|" + arry[arry.Length - 1].strategyId, "PolicyDelLog");
                        ShowMsgToForm("19e政策(删除)更新数据库成功!", "19e", false);
                    }
                    else
                    {
                        ShowMsgToForm("19e政策(删除)更新数据库失败!", "19e", false);//执行的sql为:"+JsonConvert.SerializeObject(errSql)\
                        //SaveLog("19e政策(删除)更新数据库失败!执行的sql为:" + JsonConvert.SerializeObject(errSql), "19eErrDelRec");
                    }

                    if (res.rateList.Length < 1)
                    {
                        return;
                    }
                    else
                    {
                        ShowMsgToForm("19e政策(删除) rateList(" + res.rateList.Length + ") 大于 1 继续调用同步(删除)接口...", "19e", false);
                    }
                }
            }
            catch (Exception ex)
            {
                var str = ex.Message;
                while (ex.InnerException != null)
                {
                    ex   = ex.InnerException;
                    str += ex.ToString();   // ex.Message;
                }
                ShowMsgToForm("删除19e政策异常:" + str);
            }
        }
        public async Task <IActionResult> Post([FromBody] UserRegistrationRequest model)
        {
            // non-forced-to-disposal
            UserRegistrationResult result = new UserRegistrationResult
            {
                IsSucceded = true,
                ResultId   = (int)UserRegistrationResultEnum.Success
            };

            // forced-to-disposal
            MongoDBConnectionInfo  mongoDBConnectionInfo  = null;
            KeyVaultConnectionInfo keyVaultConnectionInfo = null;
            User user = null;

            try
            {
                if (string.IsNullOrEmpty(model.Fullname))
                {
                    throw new BusinessException((int)UserRegistrationResultEnum.FailedEmptyFullname);
                }

                if (string.IsNullOrEmpty(model.Email))
                {
                    throw new BusinessException((int)UserRegistrationResultEnum.FailedEmptyEmail);
                }

                if (string.IsNullOrEmpty(model.Password))
                {
                    throw new BusinessException((int)UserRegistrationResultEnum.FailedEmptyPassword);
                }

                using (ValidationHelper validationHelper = new ValidationHelper())
                {
                    bool validationEmail = validationHelper.IsValidEmail(model.Email);

                    if (!validationEmail)
                    {
                        throw new BusinessException((int)UserRegistrationResultEnum.FailedNotValidEmail);
                    }
                }

                mongoDBConnectionInfo = new MongoDBConnectionInfo()
                {
                    ConnectionString = Settings.ConnectionString,
                    DatabaseId       = Settings.DatabaseId,
                    UserCollection   = Settings.UserCollection
                };

                using (UserRegistrationDataHelper userRegistrationDataHelper = new UserRegistrationDataHelper(mongoDBConnectionInfo))
                {
                    user = userRegistrationDataHelper.GetUser(model.Email);
                }

                if (user != null)
                {
                    throw new BusinessException((int)UserRegistrationResultEnum.FailedEmailAlreadyExists);
                }

                string password = string.Empty;
                using (HashHelper hashHelper = new HashHelper())
                {
                    password = hashHelper.GetSha256Hash(model.Password);
                }

                keyVaultConnectionInfo = new KeyVaultConnectionInfo()
                {
                    CertificateName    = Settings.KeyVaultCertificateName,
                    ClientId           = Settings.KeyVaultClientId,
                    ClientSecret       = Settings.KeyVaultClientSecret,
                    KeyVaultIdentifier = Settings.KeyVaultIdentifier
                };

                using (MessageQueueHelper messageQueueHelper = new MessageQueueHelper())
                {
                    UserRegistrationMessage userRegistrationMessage = new UserRegistrationMessage()
                    {
                        fullname = model.Fullname,
                        email    = model.Email,
                        password = password
                    };

                    await messageQueueHelper.QueueMessageAsync(userRegistrationMessage, Settings.UserRegistrationQueueName, keyVaultConnectionInfo);
                }
            }
            catch (Exception ex)
            {
                result.IsSucceded = false;

                if (ex is BusinessException)
                {
                    result.ResultId = ((BusinessException)ex).ResultId;
                }
                else
                {
                    result.ResultId = (int)UserRegistrationResultEnum.Failed;

                    this.logger.LogError($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                    if (ex.InnerException != null)
                    {
                        this.logger.LogError($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                    }
                }
            }
            finally
            {
                mongoDBConnectionInfo  = null;
                keyVaultConnectionInfo = null;
                user = null;

                GC.Collect();
            }

            string message = EnumDescription.GetEnumDescription((UserRegistrationResultEnum)result.ResultId);

            this.logger.LogInformation($">> Message information: {message}");

            return((result.IsSucceded) ? (ActionResult) new OkObjectResult(new { message = message }) : (ActionResult) new BadRequestObjectResult(new { message = message }));
        }
Exemple #26
0
 public MessageQueueInterface()
 {
     queues = MessageQueueHelper.GetTridentMessageQueue();
 }
Exemple #27
0
 public MessageQueueSender(string queuePath)
 {
     _queue = MessageQueueHelper.GetOrCreateQueue(queuePath);
 }