Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        public async Task <ActionObjectResult <bool> > SendAsync(string phone, string smsCode, int appId, string content, ValidationType type, string ip, int expiresMinute = 5)
        {
            var uniqueKey = GetSmsKey(phone);

            if (!await CheckOverLimit(phone))
            {
                return(ActionObject.Ok(false, -1, "请求频率过高,请稍后再试"));
            }

            var smsLimit = new SmsCache {
                Code = smsCode, StartTime = DateTime.Now, ValidateCount = 0, ExpiresMinute = expiresMinute
            };

            await _redisCache.AddAsync(uniqueKey, smsLimit, new TimeSpan(0, 0, expiresMinute * 60));

            if (!_appSettings.DeveloperMode)
            {
                var(code, msg, msgId) = await _passportClient.SendSms(phone, content, _smsServerOptions.SignatureCode);

                _backgroundRunService.Transfer <IValidationComponent>(x =>
                                                                      x.SaveLog(appId, content, type, phone, ip, code == "0", smsCode, expiresMinute, msgId, msg));
            }

            return(ActionObject.Ok(true));
        }
        public JsonResult ResetSystemData()
        {
            if (!SmsCache.UserContext.IsSystemAdmin)
            {
                return(Json(JsonModel.Create(false)));
            }

            SmsCache.ClearCache();
            return(Json(JsonModel.Create(true)));
        }
        public override ServiceResult <BranchDto> Save(BranchDto dto)
        {
            Branch branchToSave;

            if (dto.ID == 0)
            {
                branchToSave = new Branch();
                AssignBranchValues(dto, branchToSave);
                branchToSave.BranchInfo = new BranchInfo
                {
                    Branch = branchToSave
                };
                AssignBranchInfoValues(dto.BranchInfo, branchToSave.BranchInfo);
                Repository.Save(branchToSave);
            }
            else
            {
                branchToSave = Repository.GetByID(dto.ID);
                AssignBranchValues(dto, branchToSave);
                AssignBranchInfoValues(dto.BranchInfo, branchToSave.BranchInfo);
                Repository.Save(branchToSave);

                if (!branchToSave.UseKitchenFunction)
                {
                    var statuses = new List <OrderStatus> {
                        OrderStatus.SentToKitchen, OrderStatus.Ordered, OrderStatus.KitchenAccepted
                    };
                    Expression <Func <Order, bool> > predicate = x => x.OrderTables.Any(y => y.OrderDetails.Any(z => statuses.Contains(z.OrderStatus))) && x.Branch.ID == branchToSave.ID;

                    var ordersInKitchen = OrderRepository.List(predicate);
                    foreach (var order in ordersInKitchen)
                    {
                        order.OrderTables.Apply(x => x.OrderDetails.Apply(y => y.OrderStatus = OrderStatus.Done));
                        OrderRepository.Save(order);
                    }
                }
            }

            SmsCache.Reload(CacheKey.BranchConfig);

            return(ServiceResult <BranchDto> .CreateSuccessResult(Mapper.Map <BranchDto>(branchToSave)));
        }
Ejemplo n.º 4
0
        private SmsAnalyzer()
        {
            this.ExternalApiSmsService = ExternalApiSmsService.Instance;
            this.SmsRenderModelsCache  = new List <SmsRenderModel>();
            this.ProcessedSmsHashes    = new List <string>();

            ExternalApiSmsService.Publish += () =>
            {
                this.SmsCache = ExternalApiSmsService.GetAllSms().OrderBy(s => s.Value.Timestamp);
                var unprocessedSms = SmsCache.Except(SmsCache.Where(s => ProcessedSmsHashes.Contains(s.Key)));

                var smsRenderModels = ProcessSms(unprocessedSms);
                if (smsRenderModels.Any())
                {
                    ProcessedSmsHashes.AddRange(smsRenderModels.Select(s => s.Sms.Hash));
                    SmsRenderModelsCache.AddRange(smsRenderModels);

                    Publish.Invoke();
                }
            };
        }
        private void QueryExternalApi()
        {
            var mClient = new RestClient("https://mayhem-clockwork.herokuapp.com");

            var req = new RestRequest
            {
                Resource = "/",
                Method   = Method.GET
            };

            var resp = mClient.Execute(req);

            var content = resp.Content;

            var smsListJsonTokens = JArray.Parse(content);

            if (!smsListJsonTokens.Any())
            {
                return;
            }

            foreach (var smsJsonToken in smsListJsonTokens)
            {
                var sms = new SMS()
                {
                    FromNumber = (string)smsJsonToken.SelectToken("from"), ID = (string)smsJsonToken.SelectToken("id"), Text = (string)smsJsonToken.SelectToken("content"), Timestamp = (string)smsJsonToken.SelectToken("timestamp")
                };
                sms.Hash = ("" + sms.Timestamp + sms.Text + sms.FromNumber).ComputeHash(Hasher.eHashType.SHA1);
                if (!SmsCache.ContainsKey(sms.Hash))
                {
                    SmsCache.Add(sms.Hash, sms);
                }
            }

            Publish.Invoke();
        }