public void CacheSetTest() { try { var request = new OrderCountCacheRequest { ActivityId = "dde07654-f666-4648-9a26-bdfadb0166e5", UserId = "21fa116e-5aaf-4dd8-9ee0-c2d93cb026c7", UserTel = "13671714523", Pid = "LG-FT-503|11", PerSonalNum = 4, PlaceNum = 4 }; using (var client = new FlashSaleClient()) { var result = client.SetUserCreateFlashOrderCountCache(request); result.ThrowIfException(); Assert.IsNotNull(result.Result); } } catch (Exception e) { Console.WriteLine(e); throw; } }
public void CacheGetTest() { try { var request = new OrderCountCacheRequest { ActivityId = "89a02e1a-f560-4460-875a-98839c945954", UserId = "1AB0FA62-91BB-4FE7-8CF2-EB57367463D4", UserTel = "18890495250", Pid = "LG-FT-504-16-7001X|39", DeviceId = "8805a4237859e2f86d130e3933eb0ed0" }; using (var client = new FlashSaleClient()) { var result = client.GetUserCreateFlashOrderCountCache(request); result.ThrowIfException(); Assert.IsNotNull(result.Result); } } catch (Exception e) { Console.WriteLine(e); throw; } }
private static List <CountKeyModel> SetKeys(OrderCountCacheRequest request) { #region key var keyModels = new List <CountKeyModel>(); var keyrequest = new GenerateKeyRequest { DeviceId = request.DeviceId, UserId = request.UserId.ToString(), UserTel = request.UserTel, ActivityId = request.ActivityId.ToString(), Pid = request.Pid }; var countKey = new GenerateFlashSaleKey(keyrequest); keyModels.Add(new CountKeyModel { Key = countKey.PlacekeyUserId, Sort = 1, Type = KeyType.PlaceUserIdKey }); keyModels.Add(new CountKeyModel { Key = countKey.PlacekeyDeviceId, Sort = 2, Type = KeyType.PlaceDeviceIdKey }); keyModels.Add(new CountKeyModel { Key = countKey.PlacekeyUseTel, Sort = 3, Type = KeyType.PlaceUserTelKey }); keyModels.Add(new CountKeyModel { Key = countKey.PersonalkeyUserId, Sort = 4, Type = KeyType.PersonUserIdKey }); keyModels.Add(new CountKeyModel { Key = countKey.PersonalkeyDeviceId, Sort = 5, Type = KeyType.PersonDeviceIdKey }); keyModels.Add(new CountKeyModel { Key = countKey.PersonalkeyUseTel, Sort = 6, Type = KeyType.PersonUserTelKey }); return(keyModels); #endregion }
public static async Task <OrderCountResponse> SetUserCreateFlashOrderCountCacheAsync( OrderCountCacheRequest request) { var keyModels = SetKeys(request); var flashSale = await DalFlashSale.FetchFlashSaleProductModel(new OrderItems() { PID = request.Pid, ActivityId = new Guid(request.ActivityId) }); var response = new OrderCountResponse(); using (var client = CacheHelper.CreateCounterClient(ClientName)) { //Queryable<int> personSorts = new Queryable[4, 5, 6]; //个人限购 if (flashSale.MaxQuantity.HasValue) { foreach (var key in keyModels.OrderBy(r => r.Sort).Where(r => r.Sort == 4 || r.Sort == 5 || r.Sort == 6)) { response = await SetCountValue(response, key.Key, request.PerSonalNum, client); if (response.RedisField) { break; } } } //会场限购 if (flashSale.PlaceQuantity.HasValue && flashSale.PlaceQuantity.Value > 0) { var saleProducts = (await DalFlashSale.SelectFlashSaleFromDBAsync(new Guid(request.ActivityId))).Products.ToList(); var salePids = saleProducts.Where(r => r.IsJoinPlace).Select(r => r.PID).ToList(); if (salePids.Contains(request.Pid)) { foreach (var key in keyModels.OrderBy(r => r.Sort).Where(r => r.Sort == 1 || r.Sort == 2 || r.Sort == 3)) { response = await SetCountValue(response, key.Key, request.PlaceNum, client); if (response.RedisField) { break; } } } } } if (response.RedisField) { return(response); } return(await GetUserCreateFlashOrderCountCacheAsync(request)); }
public static async Task <OrderCountResponse> GetUserCreateFlashOrderCountCacheAsync( OrderCountCacheRequest request) { var responseModel = new OrderCountResponse(); var keyModels = SetKeys(request); using (var client = CacheHelper.CreateCounterClient(ClientName)) { foreach (var key in keyModels.OrderBy(r => r.Sort)) { await GetCountValue(responseModel, key.Type, key.Key, client); //if(result.RedisField) // break; } } var flashsale = (await DalFlashSale.SelectFlashSaleFromDBAsync(new Guid(request.ActivityId))); if (flashsale == null) { return(responseModel); } var saleProducts = flashsale.Products.ToList(); var salePids = saleProducts.Where(r => r.IsJoinPlace).Select(r => r.PID).ToList(); var saleproduct = saleProducts.FirstOrDefault(r => r.PID == request.Pid); var records = (await DalFlashSale.SelectOrderActivityProductOrderRecordsAsync( new Guid(request.UserId), request.DeviceId, new Guid(request.ActivityId), request.UserTel)).ToList(); var personQty = records?.Where(r => r.PID == request.Pid).Sum(r => r.Quantity) ?? 0; var placeQty = records.Where(r => salePids.Contains(r.PID)).Sum(r => r.Quantity); responseModel.UserDbPersonLimitQty = personQty; responseModel.UserDbPlaceLimitQty = placeQty; responseModel.PersonConfigLimitQty = saleproduct?.MaxQuantity; responseModel.PlaceConfigLimitQty = saleproduct?.PlaceQuantity; responseModel.TotalConfigQty = saleproduct?.TotalQuantity; return(responseModel); }
public async Task <OperationResult <OrderCountResponse> > SetUserCreateFlashOrderCountCacheAsync(OrderCountCacheRequest request) { return(OperationResult.FromResult(await FlashSaleManager.SetUserCreateFlashOrderCountCacheAsync(request))); }