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