コード例 #1
0
 public FuncResult Handler(string userCode, string userPwd, string mobileno, string smsContent)
 {
     try
     {
         Tsms_Thirdparty daThirdparty = null;
         string          error;
         if (!SmsUtils.CheckUserCode(userCode, userPwd, mobileno, out daThirdparty, out error))
         {
             return(FuncResult.FailResult(error));
         }
         ISmsProvider sms = SmsServiceFactory.GetSmsServiceByChannel(daThirdparty.Channel_Id, out error);
         if (sms == null)
         {
             return(FuncResult.FailResult(error));
         }
         SmsServiceProvider provider = new SmsServiceProvider(sms, daThirdparty.Appid, mobileno, smsContent);
         if (!provider.Send())
         {
             return(FuncResult.FailResult(provider.PromptInfo.CustomMessage));
         }
         return(FuncResult.SuccessResult());
     }
     catch (Exception ex)
     {
         Log.Error("handler异常", ex);
         return(FuncResult.FailResult(ex.Message));
     }
 }
コード例 #2
0
 public MessageService()
 {
     _configurationProvider = new ConfigurationProvider();
     _resourceProvider      = new ResourceProvider(Fit2WorkDb);
     _smsProvider           = new SmsProvider(_configurationProvider);
     _emailProvider         = new EmailProvider();
 }
コード例 #3
0
 public SmsServiceProvider(ISmsProvider sms, int appid, string mobileno, string smsContent)
 {
     this._sms        = sms;
     this._mobileno   = mobileno;
     this._smsContent = smsContent;
     this._appid      = appid;
 }
コード例 #4
0
ファイル: SMSJob.cs プロジェクト: sumpacle/AlarmWorkflow
        bool IJob.Initialize(IServiceProvider serviceProvider)
        {
            _settings   = serviceProvider.GetService <ISettingsServiceInternal>();
            _addressing = serviceProvider.GetService <IAddressingServiceInternal>();

            _provider = ExportedTypeLibrary.Import <ISmsProvider>(_settings.GetSetting(SettingKeys.Provider).GetValue <string>());

            return(true);
        }
コード例 #5
0
 public ReportEngineProvider()
 {
     _clientTypeManager = GetContainer().Resolve <ICustomerTypeProvider>();
     _smsProvider       = GetContainer().Resolve <ISmsProvider>();
     _callProvider      = GetContainer().Resolve <ICallProvider>();
     _customerProvider  = GetContainer().Resolve <ICustomerProvider>();
     _packageProvider   = GetContainer().Resolve <IPackageProvider>();
     _lineProvider      = GetContainer().Resolve <ILineProvider>();
 }
コード例 #6
0
        /// <summary>
        /// 静态构造函数
        /// </summary>
        /// <remarks>2013-6-26 杨浩 添加</remarks>
        static SmsProviderFactory()
        {
            // provider = new SMS.Mandao.SmsProvider();
#if !DEBUG
            provider = new SMS.Mandao.SmsProvider();
#else
            //provider = new SMS.Strategy.SmsNullProvider();
#endif
            provider = new Extra.SMS.CBlue.SmsProvider();
        }
コード例 #7
0
 public MessageService(IFit2WorkDb fit2WorkDb,
                       IConfigurationProvider configurationProvider,
                       IResourceProvider resourceProvider,
                       ISmsProvider smsProvider,
                       IEmailProvider emailProvider) : base(fit2WorkDb)
 {
     _configurationProvider = configurationProvider;
     _resourceProvider      = resourceProvider;
     _smsProvider           = smsProvider;
     _emailProvider         = emailProvider;
 }
コード例 #8
0
        bool IJob.Initialize(IServiceProvider serviceProvider)
        {
            _settings   = serviceProvider.GetService <ISettingsServiceInternal>();
            _addressing = serviceProvider.GetService <IAddressingServiceInternal>();

            _userName = _settings.GetSetting("SMSJob", "UserName").GetValue <string>();
            _password = _settings.GetSetting("SMSJob", "Password").GetValue <string>();
            _provider = ExportedTypeLibrary.Import <ISmsProvider>(_settings.GetSetting("SMSJob", "Provider").GetValue <string>());

            return(true);
        }
コード例 #9
0
 public SbUserManager(IUserStore <User> store, IOptions <IdentityOptions> optionsAccessor,
                      IPasswordHasher <User> passwordHasher, IEnumerable <IUserValidator <User> > userValidators,
                      IEnumerable <IPasswordValidator <User> > passwordValidators, ILookupNormalizer keyNormalizer,
                      IdentityErrorDescriber errors, IServiceProvider services, ILogger <UserManager <User> > logger,
                      ISmsProvider smsProvider, IQueryBus queryBus) :
     base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators,
          keyNormalizer, errors, services, logger)
 {
     _smsProvider = smsProvider;
     _queryBus    = queryBus;
 }
コード例 #10
0
 public CRMProvider()
 {
     _obj = new Object();
     _customerProvider       = ModulesRegistrations.RegisterCRMModule().Resolve <ICustomerProvider>();
     _packageProvider        = ModulesRegistrations.RegisterCRMModule().Resolve <IPackageProvider>();
     _customerTypeProvider   = ModulesRegistrations.RegisterCRMModule().Resolve <ICustomerTypeProvider>();
     _lineProvider           = ModulesRegistrations.RegisterCRMModule().Resolve <ILineProvider>();
     _packageIncludeProvider = ModulesRegistrations.RegisterCRMModule().Resolve <IPackageIncludeProvider>();
     _selectedNumberProvider = ModulesRegistrations.RegisterCRMModule().Resolve <ISelectedNumberProvider>();
     _smsProvider            = ModulesRegistrations.RegisterCRMModule().Resolve <ISmsProvider>();
     _callProvider           = ModulesRegistrations.RegisterCRMModule().Resolve <ICallProvider>();
 }
コード例 #11
0
        public static ISmsProvider GetSmsServiceByChannel(int channel_id, out string error)
        {
            Tsms_Channel daChannel = new Tsms_Channel();

            if (!daChannel.SelectByPk(channel_id))
            {
                error = "短信通道配置错误";
                return(null);
            }
            if (string.IsNullOrEmpty(daChannel.Provider))
            {
                error = "短信通道配置错误";
                return(null);
            }
            SmsChannel channel = MapProvider.Map <SmsChannel>(daChannel.DataRow);

            string[] array = null;
            if (daChannel.Provider.Contains(','))
            {
                array = daChannel.Provider.Split(',');
            }
            else
            {
                array = new string[] {
                    "SmsCenter.Facade",
                    daChannel.Provider
                };
            }
            try
            {
                Assembly ass = null;
                ass = Assembly.Load(array[0]);
                Type   t    = ass.GetType(array[1]);
                object inst = Activator.CreateInstance(t);
                error = null;
                ISmsProvider sms = inst as ISmsProvider;
                if (sms == null)
                {
                    error = "通道配置错误";
                    return(null);
                }
                sms.SetChannel(channel);
                return(sms);
            }
            catch (Exception ex)
            {
                error = "通道配置错误,无法激活提供程序";
                return(null);
            }
        }
コード例 #12
0
        public InternalSmsService(  ISmsProvider smsProvider, 
                            ISmsRepository smsRepository, 
                            IReferenceGenerator referenceGenerator,
                            ISmsServiceSettings smsServiceSettings)
        {
            Check.If(smsProvider).IsNotNull();
            Check.If(smsRepository).IsNotNull();
            Check.If(referenceGenerator).IsNotNull();
            Check.If(smsServiceSettings).IsNotNull();

            _smsProvider = smsProvider;
            _smsRepository = smsRepository;
            _referenceGenerator = referenceGenerator;
            _smsServiceSettings = smsServiceSettings;
        }
コード例 #13
0
        private ISmsProvider GetProvider(SmsProviderType currentProviderType, decimal requiredBalance)
        {
            ISmsProvider provider = null;

            var providerTypesInOrder = GetSmsProviderTypes(currentProviderType);

            List <string> errors = new List <string>();

            foreach (var providerType in providerTypesInOrder)
            {
                Type instanceType = ToInstanceType(providerType);

                var _provider = Activator.CreateInstance(instanceType, systemParameters, logService, unitOfWork, providerType) as ISmsProvider;
                if (_provider != null &&
                    _provider.IsAvailable)
                {
                    decimal balance           = _provider.Balance;
                    decimal toProviderBalance = _provider.ToProviderBalance(requiredBalance);

                    if (balance >= toProviderBalance)
                    {
                        provider = _provider;
                        break;
                    }
                    else
                    {
                        errors.Add(string.Format("簡訊供應商({0}):目前點數 {1},發送所需點數 {2}。", providerType, balance, toProviderBalance));
                    }

                    // 20160520 Norman, 測試發送大量簡訊,測試完後請移除
                    //provider = _provider;
                }
            }

            if (provider == null)
            {
                string   subject      = string.Format("點數不足,無法發送簡訊(所需點數 {0})", requiredBalance);
                string   body         = string.Join("\n", errors);
                string[] destinations = new string[] { systemParameters.InsufficientBalanceNotifiee };
                //string[] destinations = this.unitOfWork.Repository<ApplicationUser>().GetMany(p => p.Roles.Contains(Role.Administrator)).Select(p => p.Email).ToArray();
                BackgroundJob.Enqueue <CommonMailService>(x => x.Send(subject, body, destinations));
                this.logService.Error(subject);
                throw new Exception(subject);
            }

            return(provider);
        }
コード例 #14
0
        public void RetrySMS(int sendMessageHistoryId)
        {
            UniqueJob uniqueJob = null;

            try
            {
                uniqueJob = this.uniqueJobList.AddOrUpdate("RetrySMS", sendMessageHistoryId);
                if (uniqueJob == null)
                {
                    return;                    // Job 已經存在
                }
                using (var scope = this.unitOfWork.CreateTransactionScope())
                {
                    var sendMessageHistory = this.unitOfWork.Repository <SendMessageHistory>().GetById(sendMessageHistoryId);

                    decimal totalMessageCost = sendMessageHistory.MessageCost;

                    string currentProviderType = sendMessageHistory.ProviderName;

                    var providerTypesInOrder = GetSmsProviderTypes(currentProviderType);

                    // 由於使用預設的 Provider 無法發送成功,因此使用下一個 SmsProvider 發送
                    SmsProviderType userSmsProviderType = providerTypesInOrder[1];

                    ISmsProvider provider = GetProvider(userSmsProviderType, totalMessageCost); // 如果沒有找到,將會拋出例外

                    this.tradeService.RetrySMS(sendMessageHistory);

                    // 開始發送簡訊
                    provider.RetrySMS(sendMessageHistory.Id);

                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                this.logService.Error(ex);
                throw;
            }
            finally
            {
                if (uniqueJob != null)
                {
                    this.uniqueJobList.Remove(uniqueJob);
                }
            }
        }
コード例 #15
0
        public void GetDeliveryReport(string requestId)
        {
            UniqueJob uniqueJob = null;

            try
            {
                uniqueJob = this.uniqueJobList.AddOrUpdate("GetDeliveryReport", requestId);
                if (uniqueJob == null)
                {
                    return;                    // Job 已經存在
                }
                using (var scope = this.unitOfWork.CreateTransactionScope())
                {
                    var deliveryReportQueueRepository = this.unitOfWork.Repository <DeliveryReportQueue>();

                    var deliveryReportQueue = deliveryReportQueueRepository.Get(p => p.RequestId == requestId);
                    if (deliveryReportQueue == null)
                    {
                        return;
                    }

                    ISmsProvider provider = GetProvider(deliveryReportQueue.ProviderName);

                    if (provider != null) // 取得DeliveryReport並沒有急迫性,等到簡訊供應商可供連線再取即可。
                    {
                        provider.GetDeliveryReport(requestId);
                    }

                    scope.Complete();
                }

                ////////////////////////////////////////
            }
            catch (Exception ex)
            {
                this.logService.Error("GetDeliveryReport({0})", requestId);
                this.logService.Error(ex);
                throw;
            }
            finally
            {
                if (uniqueJob != null)
                {
                    this.uniqueJobList.Remove(uniqueJob);
                }
            }
        }
コード例 #16
0
ファイル: SMSJob.cs プロジェクト: Knatter33/AlarmWorkflow
        bool IJob.Initialize()
        {
            _userName = SettingsManager.Instance.GetSetting("SMSJob", "UserName").GetString();
            _password = SettingsManager.Instance.GetSetting("SMSJob", "Password").GetString();
            _provider = ExportedTypeLibrary.Import<ISmsProvider>(SettingsManager.Instance.GetSetting("SMSJob", "Provider").GetString());

            var recipients = AlarmWorkflowConfiguration.Instance.AddressBook.GetCustomObjects<MobilePhoneEntryObject>("MobilePhone");
            _recipients.AddRange(recipients.Select(ri => ri.Item2));

            if (_recipients.Count == 0)
            {
                Logger.Instance.LogFormat(LogType.Error, this, Properties.Resources.NoRecipientsErrorMessage);
                return false;
            }

            return true;
        }
コード例 #17
0
        public void GetSMSConfigForRecipient_WithNoCountryCode_GetsDefault()
        {
            // Arrange
            _mockConfig.Setup(m => m.SMSConfigs).Returns(new List <SMSConfig> {
                new SMSConfig {
                    CountryCode = 1, IsDefault = true
                },
                new SMSConfig {
                    CountryCode = 2
                },
            });
            // Act
            _smsProvider = new SmsProvider(_mockConfig.Object);
            var result = _smsProvider.GetSMSConfigForRecipient("4412345678");

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.IsDefault);
        }
コード例 #18
0
        public void GetSMSConfigForRecipient_WithUSCountryCode()
        {
            // Arrange
            _mockConfig.Setup(m => m.SMSConfigs).Returns(new List <SMSConfig> {
                new SMSConfig {
                    CountryCode = 44, IsDefault = true
                },
                new SMSConfig {
                    CountryCode = 1
                },
            });
            // Act
            _smsProvider = new SmsProvider(_mockConfig.Object);
            var result = _smsProvider.GetSMSConfigForRecipient("16466613630");

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.CountryCode);
        }
コード例 #19
0
        private ISmsProvider GetProvider(string providerTypeName, bool mustAvailable = true)
        {
            ISmsProvider provider = null;

            var  providerTypesInOrder = GetSmsProviderTypes(providerTypeName);
            var  providerType         = providerTypesInOrder.FirstOrDefault();
            Type instanceType         = ToInstanceType(providerType);

            if (instanceType != null)
            {
                var _provider = Activator.CreateInstance(instanceType, systemParameters, logService, unitOfWork, providerType) as ISmsProvider;

                if (mustAvailable)
                {
                    if (_provider != null && _provider.IsAvailable)
                    {
                        provider = _provider;
                    }
                }
                else
                {
                    if (_provider != null)
                    {
                        provider = _provider;
                    }
                }
            }

            if (provider == null)
            {
                string message = string.Format("目前無法使用指定簡訊供應商 {0} ", providerTypeName);

                this.logService.Error(message);

                // 取得DeliveryReport並沒有急迫性,等到簡訊供應商可供連線再取即可。
                // throw new Exception(message);
            }

            return(provider);
        }
コード例 #20
0
 public AuthService(ApplicationContext applicationContext, ISmsProvider smsProvider)
 {
     dbContext        = applicationContext;
     this.smsProvider = smsProvider;
 }
コード例 #21
0
ファイル: HttpSmsGateway.cs プロジェクト: jeden/unisms
 protected HttpSmsGateway(ISmsProvider smsProvider, EnRequestMethod requestMethod)
     : base(smsProvider)
 {
     KeepConnectionOpen = false;
     _requestMethod = requestMethod;
 }
コード例 #22
0
 public AuthService(ApplicationContext applicationContext, ISmsProvider smsProvider)
 {
     DbContext         = applicationContext;
     this.SmsProvider  = smsProvider;
     this.EmailService = new EmailService();
 }
コード例 #23
0
ファイル: SMSJob.cs プロジェクト: Bolde/AlarmWorkflow
        bool IJob.Initialize(IServiceProvider serviceProvider)
        {
            _settings = serviceProvider.GetService<ISettingsServiceInternal>();
            _addressing = serviceProvider.GetService<IAddressingServiceInternal>();

            _userName = _settings.GetSetting("SMSJob", "UserName").GetValue<string>();
            _password = _settings.GetSetting("SMSJob", "Password").GetValue<string>();
            _provider = ExportedTypeLibrary.Import<ISmsProvider>(_settings.GetSetting("SMSJob", "Provider").GetValue<string>());

            return true;
        }
コード例 #24
0
ファイル: ClickatellProvider.cs プロジェクト: jeden/unisms
 public ClickatellProvider(ISmsProvider provider)
     : base(provider)
 {
     IsConnected = false;
 }
コード例 #25
0
 public static SmsProviderModel ToModel(this ISmsProvider entity)
 {
     return(Mapper.Map <ISmsProvider, SmsProviderModel>(entity));
 }
コード例 #26
0
ファイル: SMSJob.cs プロジェクト: huoxudong125/AlarmWorkflow
        bool IJob.Initialize(IServiceProvider serviceProvider)
        {
            _settings = serviceProvider.GetService<ISettingsServiceInternal>();
            _addressing = serviceProvider.GetService<IAddressingServiceInternal>();

            _provider = ExportedTypeLibrary.Import<ISmsProvider>(_settings.GetSetting(SettingKeys.Provider).GetValue<string>());

            return true;
        }
コード例 #27
0
ファイル: AspsmsProvider.cs プロジェクト: jeden/unisms
 public AspsmsProvider(ISmsProvider smsProvider)
     : base(smsProvider)
 {
 }
コード例 #28
0
 public InvoiceProvider()
 {
     _obj          = new Object();
     _callProvider = GetContainer().Resolve <ICallProvider>();
     _smsProvider  = GetContainer().Resolve <ISmsProvider>();
 }
コード例 #29
0
 public AuthMessageSender(IEmailProvider emailProvider, ISmsProvider smsProvider)
 {
     _emailProvider = emailProvider;
     _smsProvider   = smsProvider;
 }
コード例 #30
0
 public SendController(ISmsProvider smsProvider)
 {
     _smsProvider = smsProvider;
 }
コード例 #31
0
ファイル: FakeProvider.cs プロジェクト: jeden/unisms
 public FakeProvider(ISmsProvider provider)
     : base(provider)
 {
 }
コード例 #32
0
 public AuthMessageSender(ILogger <AuthMessageSender> logger, IConfiguration configuration, ISmsProvider smsProvider)
 {
     _logger      = logger;
     _config      = configuration;
     _smsProvider = smsProvider;
 }
コード例 #33
0
 public void Initialise()
 {
     _smsProvider = new SmsProvider(_mockConfig.Object);
 }
 public NewTournamentAddedIntegrationEventHandler(ISmsProvider smsProvider, IPlayerRepository playerRepository)
 {
     _smsProvider      = smsProvider;
     _playerRepository = playerRepository;
 }