/// <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))); }
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(); }