Ejemplo n.º 1
0
        public ApplicationManageImpl(IMapper mapper, IApplicationInfoRepository applicationInfoRepository)
        {
            _applicationHandlerContext = new DotNetCoreApplicationHandlerContext();
            var pm2ApplicationHandlerContext = new PM2ApplicationHandlerContext();

            _applicationHandlerContext.SetNext(pm2ApplicationHandlerContext);
            var exeApplicationHandlerContext = new ExeApplicationHandlerContext();

            pm2ApplicationHandlerContext.SetNext(exeApplicationHandlerContext);
            var staticDocumentApplicationHandlerContext = new StaticDocumentApplicationHandlerContext();

            exeApplicationHandlerContext.SetNext(staticDocumentApplicationHandlerContext);
            Task initTask = Task.Run(async() =>
            {
                List <ApplicationInfo> applicationInfos = await applicationInfoRepository.FindAsync(m => true);
                var applicationInfoModels = mapper.Map <List <ApplicationInfoModel> >(applicationInfos);
                foreach (ApplicationInfoModel applicationInfoModel in applicationInfoModels)
                {
                    applicationInfoModel.ApplicationStatus = ApplicationStatusEnum.Stop;
                    Add(applicationInfoModel);
                }
                foreach (KeyValuePair <Guid, ApplicationRuntimeModel> item in _allApplicationInfos)
                {
                    _applicationHandlerContext.KillProcess(item.Value);
                }
            });

            Task.WaitAll(initTask);
        }
Ejemplo n.º 2
0
 public XmlDataProcessor(
     XmlSettingsModel settings,
     IXmlDbUpdateLogService xmlDbUpdateLogService,
     IApplicationInfoRepository appInfoRepository,
     IXmlDbUpdateActionCorrecterService actionCorrecterService,
     IXmlDbUpdateHttpContextProcessor httpContextProcessor,
     HttpClient client,
     IServiceProvider provider
     )
     : base(settings)
 {
     _settings = settings;
     _xmlDbUpdateReplayService = new XmlDbUpdateNonMvcReplayService(
         QPContext.CurrentDbConnectionString,
         QPContext.DatabaseType,
         CommonHelpers.GetDbIdentityInsertOptions(settings.GenerateNewFieldIds, settings.GenerateNewContentIds),
         settings.UserId,
         settings.UseGuidSubstitution,
         xmlDbUpdateLogService,
         appInfoRepository,
         actionCorrecterService,
         httpContextProcessor,
         provider
         );
 }
 public ApplicationInfoServiceImpl(IMapper mapper, IApplicationManage applicationManage, IDeploySqliteEFUnitOfWork deploySqliteEFUnitOfWork, IApplicationInfoRepository applicationInfoRepository)
 {
     _mapper                    = mapper;
     _applicationManage         = applicationManage;
     _deploySqliteEFUnitOfWork  = deploySqliteEFUnitOfWork;
     _applicationInfoRepository = applicationInfoRepository;
 }
Ejemplo n.º 4
0
 public CourseCampusesForApplicationController(IApplicationInfoRepository applicationInfoRepository,
                                               ILogger <CourseCampusesForApplicationController> logger,
                                               IUrlHelper urlHelper)
 {
     _applicationInfoRepository = applicationInfoRepository;
     _logger    = logger;
     _urlHelper = urlHelper;
 }
 public QualificationForApplicationController(IApplicationInfoRepository applicationInfoRepository,
                                              ILogger <QualificationForApplicationController> logger,
                                              IMailService mailService
                                              )
 {
     _applicationInfoRepository = applicationInfoRepository;
     _logger      = logger;
     _mailService = mailService;
 }
 public ApplicationsController(IApplicationInfoRepository applicationInfoRepository,
                               ILogger <ApplicationsController> logger,
                               IUrlHelper urlHelper,
                               IPropertyMappingService propertyMappingService,
                               ITypeHelperService typeHelperService)
 {
     _applicationInfoRepository = applicationInfoRepository;
     _logger    = logger;
     _urlHelper = urlHelper;
     _propertyMappingService = propertyMappingService;
     _typeHelperService      = typeHelperService;
 }
Ejemplo n.º 7
0
 public DbController(
     IXmlDbUpdateLogService xmlDbUpdateServce,
     IApplicationInfoRepository appInfoRepository,
     IXmlDbUpdateHttpContextProcessor httpContextProcessor,
     IXmlDbUpdateActionCorrecterService actionsCorrecterService,
     IUserService userService)
 {
     _xmlDbUpdateLogService   = xmlDbUpdateServce;
     _appInfoRepository       = appInfoRepository;
     _actionsCorrecterService = actionsCorrecterService;
     _httpContextProcessor    = httpContextProcessor;
     _userService             = userService;
 }
 public XmlDbUpdateNonMvcReplayService(
     string connectionString,
     int userId,
     bool useGuidSubstitution,
     IXmlDbUpdateLogService dbLogService,
     IApplicationInfoRepository appInfoRepository,
     IXmlDbUpdateActionCorrecterService actionsCorrecterService,
     IXmlDbUpdateHttpContextProcessor httpContextProcessor,
     bool isQpInstalled = true)
     : base(connectionString, userId, useGuidSubstitution, dbLogService, appInfoRepository, actionsCorrecterService, httpContextProcessor)
 {
     _isQpInstalled = isQpInstalled;
 }
 public ApplicationCollectionsController(IApplicationInfoRepository applicationInfoRepository,
                                         ILogger <ApplicationCollectionsController> logger,
                                         IUrlHelper urlHelper,
                                         IPropertyMappingService propertyMappingService,
                                         ITypeHelperService typeHelperService,
                                         UserManager <CampUser> userMgr)
 {
     _applicationInfoRepository = applicationInfoRepository;
     _logger    = logger;
     _urlHelper = urlHelper;
     _propertyMappingService = propertyMappingService;
     _typeHelperService      = typeHelperService;
     _userMgr = userMgr;
 }
Ejemplo n.º 10
0
        public XmlDbUpdateReplayService(string connectionString, HashSet <string> identityInsertOptions, int userId, bool useGuidSubstitution, IXmlDbUpdateLogService dbLogService, IApplicationInfoRepository appInfoRepository, IXmlDbUpdateActionCorrecterService actionsCorrecterService, IXmlDbUpdateHttpContextProcessor httpContextProcessor)
        {
            Ensure.NotNullOrWhiteSpace(connectionString, "Connection string should be initialized");

            _userId = userId;
            _useGuidSubstitution   = useGuidSubstitution;
            _identityInsertOptions = identityInsertOptions ?? new HashSet <string>();

            ConnectionString = connectionString;

            _dbLogService            = dbLogService;
            _appInfoRepository       = appInfoRepository;
            _actionsCorrecterService = actionsCorrecterService;
            _httpContextProcessor    = httpContextProcessor;
        }
Ejemplo n.º 11
0
 public XmlDbUpdateNonMvcReplayService(
     string connectionString,
     DatabaseType dbType,
     HashSet <string> identityInsertOptions,
     int userId,
     bool useGuidSubstitution,
     IXmlDbUpdateLogService dbLogService,
     IApplicationInfoRepository appInfoRepository,
     IXmlDbUpdateActionCorrecterService actionsCorrecterService,
     IXmlDbUpdateHttpContextProcessor httpContextProcessor,
     IServiceProvider provider,
     bool isQpInstalled = true)
     : base(connectionString, dbType, identityInsertOptions, userId, useGuidSubstitution, dbLogService, appInfoRepository, actionsCorrecterService, httpContextProcessor, provider)
 {
     _isQpInstalled = isQpInstalled;
 }
Ejemplo n.º 12
0
 public SupportCommandHandlerShould() : base()
 {
     _emailConfiguration = new EmailConfiguration
     {
         Addressee   = "",
         FromName    = "Contact",
         SmtpServer  = "",
         Port        = 587,
         UserName    = "******",
         Password    = "",
         FromAddress = "",
     };
     _applicationInfoRepository = new ApplicationInfoRepository(ExampleContext);
     _emailSenderService        = new EmailSenderService(_emailConfiguration);
     _sendMaiLCommandHandler    = new MailCommandHandler(_emailSenderService, _emailConfiguration, _applicationInfoRepository);
 }
Ejemplo n.º 13
0
 public XmlDataProcessor(
     XmlSettingsModel settings,
     IXmlDbUpdateLogService xmlDbUpdateLogService,
     IApplicationInfoRepository appInfoRepository,
     IXmlDbUpdateActionCorrecterService actionCorrecterService,
     IXmlDbUpdateHttpContextProcessor httpContextProcessor)
     : base(settings)
 {
     _settings = settings;
     _xmlDbUpdateReplayService = new XmlDbUpdateNonMvcReplayService(
         QPContext.CurrentDbConnectionString,
         CommonHelpers.GetDbIdentityInsertOptions(settings.DisableFieldIdentity, settings.DisableContentIdentity),
         settings.UserId,
         settings.UseGuidSubstitution,
         xmlDbUpdateLogService,
         appInfoRepository,
         actionCorrecterService,
         httpContextProcessor);
 }
Ejemplo n.º 14
0
        public XmlDbUpdateReplayService(string connectionString, DatabaseType dbType, HashSet <string> identityInsertOptions, int userId, bool useGuidSubstitution, IXmlDbUpdateLogService dbLogService, IApplicationInfoRepository appInfoRepository, IXmlDbUpdateActionCorrecterService actionsCorrecterService, IXmlDbUpdateHttpContextProcessor httpContextProcessor,
                                        IServiceProvider serviceProvider = null, bool throwActionReplayed = false)
        {
            Ensure.NotNullOrWhiteSpace(connectionString, "Connection string should be initialized");

            _userId = userId;
            _useGuidSubstitution   = useGuidSubstitution;
            _identityInsertOptions = identityInsertOptions ?? new HashSet <string>();
            _throwActionReplayed   = throwActionReplayed;

            ConnectionString = connectionString;
            DbType           = dbType;

            _dbLogService            = dbLogService;
            _appInfoRepository       = appInfoRepository;
            _actionsCorrecterService = actionsCorrecterService;
            _httpContextProcessor    = httpContextProcessor;
            _serviceProvider         = serviceProvider;
        }
 public _2ndVersionQualificationForApplicationController(IApplicationInfoRepository applicationInfoRepository,
                                                         ILogger <QualificationForApplicationController> logger,
                                                         IMailService mailService
                                                         ) : base(applicationInfoRepository, logger, mailService)
 {
 }
Ejemplo n.º 16
0
 public XmlDbUpdateReplayService(string connectionString, int userId, bool useGuidSubstitution, IXmlDbUpdateLogService dbLogService, IApplicationInfoRepository appInfoRepository, IXmlDbUpdateActionCorrecterService actionsCorrecterService, IXmlDbUpdateHttpContextProcessor httpContextProcessor,
                                 IServiceProvider provider = null, bool throwActionReplayed = false)
     : this(connectionString, DatabaseType.SqlServer, null, userId, useGuidSubstitution, dbLogService, appInfoRepository, actionsCorrecterService, httpContextProcessor, provider, throwActionReplayed)
 {
 }
Ejemplo n.º 17
0
 public XmlDbUpdateReplayService(string connectionString, int userId, bool useGuidSubstitution, IXmlDbUpdateLogService dbLogService, IApplicationInfoRepository appInfoRepository, IXmlDbUpdateActionCorrecterService actionsCorrecterService, IXmlDbUpdateHttpContextProcessor httpContextProcessor)
     : this(connectionString, null, userId, useGuidSubstitution, dbLogService, appInfoRepository, actionsCorrecterService, httpContextProcessor)
 {
 }
 public MailCommandHandler(IEmailSenderService repository, EmailConfiguration configuration, IApplicationInfoRepository applicationInfoRepository)
 {
     _repository  = repository;
     _emailConfig = configuration;
     _applicationInfoRepository = applicationInfoRepository;
 }
Ejemplo n.º 19
0
        /// <summary>
        /// 客户订单提交(批量)
        /// </summary>
        private void CustomerOrderSubmitBatch(List <OrderSubmitResult> listOrderSubmitResult)
        {
            _lmsDbContext = new LMS_DbContext();
            _customerOrderInfoRepository        = new CustomerOrderInfoRepository(_lmsDbContext);
            _wayBillInfoRepository              = new WayBillInfoRepository(_lmsDbContext);
            _trackingNumberInfoRepository       = new TrackingNumberInfoRepository(_lmsDbContext);
            _wayBillEventLogRepository          = new WayBillEventLogRepository(_lmsDbContext);
            _trackingNumberDetailInfoRepository = new TrackingNumberDetailInfoRepository(_lmsDbContext);
            _applicationInfoRepository          = new ApplicationInfoRepository(_lmsDbContext);
            _trackNumberService = new TrackNumberService();

            //重试次数加1
            listOrderSubmitResult.ForEach(p =>
            {
                p.RetryTimes++;
                p.Result.Success = true;
            });

            try
            {
                var customerOrderIds = listOrderSubmitResult.Select(p => p.CustomerOrderId).ToList();

                //获取要提交的订单信息
                var listCustomerOrderInfos = GetListByCustomerOrderId(customerOrderIds);

                listCustomerOrderInfos.ForEach(p =>
                {
                    //不是提交中的状态,视为已提交成功
                    if (p.Status != (int)CustomerOrder.StatusEnum.Submiting)
                    {
                        var orderSubmitResult =
                            listOrderSubmitResult.First(s => s.CustomerOrderId == p.CustomerOrderID);
                        orderSubmitResult.Result.Success = true;
                        orderSubmitResult.Result.Message = string.Format("{0}不是提交中的状态", p.CustomerOrderID);
                    }
                });

                listCustomerOrderInfos.RemoveAll(p => p.Status != (int)CustomerOrder.StatusEnum.Submiting);

                if (listCustomerOrderInfos.Count == 0)
                {
                    return;                                    //全部不是提交中的单,直接退出
                }
                List <int> failureShippingMethodId = new List <int>();

                //本次提交涉及到的运输方式
                List <int> shippingMethodIds = new List <int>();
                foreach (var info in listCustomerOrderInfos)
                {
                    var shippingMethodId = info.ShippingMethodId.HasValue ? info.ShippingMethodId.Value : 0;
                    if (shippingMethodIds.Contains(shippingMethodId) || shippingMethodId == 0)
                    {
                        continue;
                    }
                    shippingMethodIds.Add(shippingMethodId);
                }

                int getShippingMethodRetry = 3;

                var shippingMethodList = GetShippingMethodsByIds(shippingMethodIds);

                while (shippingMethodList == null && --getShippingMethodRetry > 0)
                {
                    Thread.Sleep(1000 * 2);
                    shippingMethodList = GetShippingMethodsByIds(shippingMethodIds);
                }

                if (shippingMethodList == null)
                {
                    throw new BusinessLogicException("获取订单运输方式信息失败,请稍后重试");
                }


                List <ApplicationInfo> applicationInfos = new List <ApplicationInfo>();
                applicationInfos =
                    _applicationInfoRepository.GetList(a => customerOrderIds.Contains(a.CustomerOrderID ?? 0));
                List <string> customerOrderNumbers = new List <string>();


                #region 遍历每一个订单

                //需要添加的运单
                List <WayBillInfo> listWayBillInfoAdd = new List <WayBillInfo>();

                //需要修改的订单
                List <CustomerOrderInfo> listCustomerOrderInfoModify = new List <CustomerOrderInfo>();

                foreach (var info in listCustomerOrderInfos)
                {
                    try
                    {
                        #region 生成运单基本信息

                        string wayBillNumber = SequenceNumberService.GetWayBillNumber(info.CustomerCode);
                        Log.Info(string.Format("订单:{0}所在线程:{1}申请到单号:{2}", info.CustomerOrderNumber,
                                               Thread.CurrentThread.Name, wayBillNumber));
                        var wayBillInfo = new WayBillInfo
                        {
                            //WayBillNumber = PrefixCode.OrderID + currentWayBillNumber++,
                            WayBillNumber        = wayBillNumber,
                            CustomerOrderID      = info.CustomerOrderID,
                            CustomerOrderNumber  = info.CustomerOrderNumber,
                            CustomerCode         = info.CustomerCode,
                            InShippingMethodID   = info.ShippingMethodId,
                            InShippingMethodName = info.ShippingMethodName,
                            ShippingInfoID       = info.ShippingInfoID,
                            SenderInfoID         = info.SenderInfoID,
                            GoodsTypeID          = info.GoodsTypeID,
                            TrackingNumber       = info.TrackingNumber,
                            IsReturn             = info.IsReturn,
                            IsHold             = false,
                            IsBattery          = info.IsBattery,
                            Status             = WayBill.StatusEnum.Submitted.GetStatusValue(),
                            CountryCode        = info.ShippingInfo.CountryCode.ToUpperInvariant(),
                            InsuredID          = info.InsuredID,
                            Weight             = info.Weight,
                            Length             = info.Length,
                            Width              = info.Width,
                            Height             = info.Height,
                            CreatedOn          = info.LastUpdatedOn,
                            CreatedBy          = info.LastUpdatedBy,
                            LastUpdatedBy      = info.LastUpdatedBy,
                            LastUpdatedOn      = info.LastUpdatedOn,
                            EnableTariffPrepay = info.EnableTariffPrepay,
                        };

                        #endregion

                        #region 插入内部操作信息


                        //Add By zxq
                        //Time:2014-09-15
                        var wayBillEventLog = new WayBillEventLog()
                        {
                            WayBillNumber = wayBillInfo.WayBillNumber,
                            EventCode     = (int)WayBillEvent.EventCodeEnum.Submit,
                            Description   =
                                WayBillEvent.GetEventCodeDescription((int)WayBillEvent.EventCodeEnum.Submit),
                            EventDate     = DateTime.Now,
                            LastUpdatedOn = DateTime.Now,
                            Operator      = info.LastUpdatedBy,
                        };

                        _wayBillEventLogRepository.Add(wayBillEventLog);


                        #endregion

                        #region 分配跟踪号

                        if (string.IsNullOrWhiteSpace(info.TrackingNumber))
                        {
                            var shippingMethodId = info.ShippingMethodId.HasValue ? info.ShippingMethodId.Value : 0;
                            var model            = shippingMethodList.Find(p => p.ShippingMethodId == shippingMethodId);
                            if (failureShippingMethodId.Contains(shippingMethodId))
                            {
                                throw new BusinessLogicException("分配跟踪号失败");
                            }
                            if (model != null && model.IsSysTrackNumber)
                            {
                                while (true)
                                {
                                    var trackingNumberList =
                                        _trackNumberService.TrackNumberAssignStandard(shippingMethodId, 1,
                                                                                      wayBillInfo.CountryCode);

                                    if (!trackingNumberList.Any())
                                    {
                                        if (!failureShippingMethodId.Contains(shippingMethodId))
                                        {
                                            failureShippingMethodId.Add(shippingMethodId);
                                        }
                                        throw new BusinessLogicException("分配跟踪号失败");
                                    }
                                    else
                                    {
                                        var trackNumber = trackingNumberList[0];
                                        if (!listCustomerOrderInfos.Any(t => t.TrackingNumber == trackNumber))
                                        {
                                            wayBillInfo.TrackingNumber = trackNumber;
                                            info.TrackingNumber        = wayBillInfo.TrackingNumber;

                                            //分配跟踪号成功 , 跳出循环
                                            break;
                                        }
                                        else
                                        {
                                            //[分配的跟踪号] 与 [上传的跟踪号] 有重复
                                            //进入下一次分配
                                        }
                                    }
                                }
                            }
                        }

                        #endregion

                        #region 修改运单状态

                        info.LastUpdatedBy = info.LastUpdatedBy;
                        info.LastUpdatedOn = DateTime.Now;
                        info.Status        = CustomerOrder.StatusEnum.Submitted.GetStatusValue();
                        info.CustomerOrderStatuses.Add(new CustomerOrderStatus
                        {
                            CreatedOn       = info.LastUpdatedOn,
                            CustomerOrderID = info.CustomerOrderID,
                            Status          = info.Status,
                            Remark          = "客户提交"
                        });

                        //更新ApplicationInfo表的WayBillNumber字段
                        foreach (var appInfo in applicationInfos)
                        {
                            if (info.CustomerOrderID == appInfo.CustomerOrderID)
                            {
                                appInfo.WayBillNumber = wayBillInfo.WayBillNumber;
                                appInfo.LastUpdatedBy = info.LastUpdatedBy;
                                appInfo.LastUpdatedOn = DateTime.Now;
                                _applicationInfoRepository.Modify(appInfo);
                            }
                        }
                        listWayBillInfoAdd.Add(wayBillInfo);
                        listCustomerOrderInfoModify.Add(info);
                        customerOrderNumbers.Add(info.CustomerOrderNumber);

                        #endregion
                    }
                    catch (Exception ex)
                    {
                        OrderSubmitResult orderSubmitResult =
                            listOrderSubmitResult.Find(p => p.CustomerOrderId == info.CustomerOrderID);
                        orderSubmitResult.Result.Success = false;
                        orderSubmitResult.Result.Message = ex.Message;
                        orderSubmitResult.ContinueRetry  = ex is System.Data.DataException;
                    }
                }

                #endregion

                try
                {
                    //能够提交的订单号
                    var listCanSubmitCustomerOrderNumber =
                        listCustomerOrderInfos.Where(
                            p =>
                            listOrderSubmitResult.Find(t => t.CustomerOrderId == p.CustomerOrderID && t.Result.Success) !=
                            null).Select(p => p.CustomerOrderNumber).ToList();

                    //获取已经存在运单的订单
                    var listWayBillInfoExist =
                        _wayBillInfoRepository.GetExistCustomerOrderNumber(listCanSubmitCustomerOrderNumber);

                    //过滤掉已经存在运单的订单
                    listWayBillInfoExist.ForEach(p =>
                    {
                        OrderSubmitResult orderSubmitResult = listOrderSubmitResult.Find(t => t.CustomerOrderId == p);
                        if (orderSubmitResult != null)
                        {
                            orderSubmitResult.Result.Success = false;
                            orderSubmitResult.Result.Message = "已存在该订单对应的运单";
                        }
                    });

                    //最终需要修改的订单
                    listCustomerOrderInfoModify.ForEach(p =>
                    {
                        if (
                            listOrderSubmitResult.Find(
                                t => t.CustomerOrderId == p.CustomerOrderID && t.Result.Success) != null)
                        {
                            _customerOrderInfoRepository.Modify(p);
                        }
                    });

                    //最终需要提交的运单
                    listWayBillInfoAdd.ForEach(p =>
                    {
                        if (
                            listOrderSubmitResult.Find(
                                t => t.CustomerOrderId == p.CustomerOrderID && t.Result.Success) != null)
                        {
                            _wayBillInfoRepository.Add(p);

                            #region 操作日志

                            //yungchu
                            //敏感字-无
                            //BizLog bizlog = new BizLog()
                            //{
                            //    Summary = "订单批量提交",
                            //    KeywordType = KeywordType.WayBillNumber,
                            //    Keyword = p.WayBillNumber,
                            //    UserCode = _workContext.User.UserUame??"admin",
                            //    UserRealName = _workContext.User.UserUame??"admin",
                            //    UserType = UserType.LMS_User,
                            //    SystemCode = SystemType.LMS,
                            //    ModuleName = "订单批量提交"
                            //};

                            //_operateLogServices.WriteLog(bizlog, p);

                            #endregion
                        }
                    });

                    using (var transaction = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.MaxValue)
                           )
                    {
                        _wayBillInfoRepository.UnitOfWork.Commit();
                        _customerOrderInfoRepository.UnitOfWork.Commit();
                        _applicationInfoRepository.UnitOfWork.Commit();
                        _wayBillEventLogRepository.UnitOfWork.Commit();
                        _trackingNumberDetailInfoRepository.UnitOfWork.Commit();

                        transaction.Complete();
                    }
                }
                catch (Exception ex)
                {
                    Log.Exception(ex);

                    listOrderSubmitResult.ForEach(p =>
                    {
                        if (p.Result.Success)
                        {
                            p.Result.Success = false;
                            p.ContinueRetry  = ex is System.Data.DataException;
                            p.Result.Message = p.ContinueRetry ? "系统错误,请稍后再试" : ex.Message;
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);

                listOrderSubmitResult.ForEach(p =>
                {
                    if (p.Result.Success)
                    {
                        p.Result.Success = false;
                        p.ContinueRetry  = ex is System.Data.DataException;
                        p.Result.Message = p.ContinueRetry ? "系统错误,请稍后再试" : ex.Message;
                    }
                });
            }
        }