public PrdProductModel GetProduct(string storeId, string productId) { //先从缓存信息读取商品信息 PrdProductModel prdProductByCache = RedisHashUtil.Get <PrdProductModel>(redis_key_product_info, productId); //如商品信息从缓存取不到,读取数据库信息加载 if (prdProductByCache == null) { var prdProductByDb = CurrentDb.PrdProduct.Where(m => m.Id == productId).FirstOrDefault(); if (prdProductByDb == null) { return(null); } var prdProductRefSkuByDb = CurrentDb.PrdProductSku.Where(m => m.PrdProductId == prdProductByDb.Id && m.IsRef == true).FirstOrDefault(); if (prdProductRefSkuByDb == null) { return(null); } prdProductByCache = new PrdProductModel(); prdProductByCache.Id = prdProductByDb.Id; prdProductByCache.Name = prdProductByDb.Name; prdProductByCache.DispalyImgUrls = prdProductByDb.DispalyImgUrls.ToJsonObject <List <ImgSet> >(); prdProductByCache.MainImgUrl = ImgSet.GetMain(prdProductByDb.DispalyImgUrls); prdProductByCache.DetailsDes = prdProductByDb.DetailsDes; prdProductByCache.BriefDes = prdProductByDb.BriefDes; prdProductByCache.RefSku = new PrdProductModel.RefSkuModel { Id = prdProductRefSkuByDb.Id, SalePrice = prdProductRefSkuByDb.SalePrice, SpecDes = prdProductRefSkuByDb.SpecDes }; RedisManager.Db.HashSetAsync(redis_key_product_info, prdProductByCache.Id, Newtonsoft.Json.JsonConvert.SerializeObject(prdProductByCache), StackExchange.Redis.When.Always); } if (prdProductByCache.RefSku == null) { return(null); } //从缓存中取店铺的商品库存信息 var refSkuStock = CacheServiceFactory.StoreSellChannelStock.GetStock(storeId, prdProductByCache.RefSku.Id); if (refSkuStock == null) { LogUtil.Info(string.Format("库存,Product,StoreId:{0},SkuId:{1},数据为NULL", storeId, prdProductByCache.RefSku.Id)); } else { if (refSkuStock.Stocks == null || refSkuStock.Stocks.Count == 0) { LogUtil.Info(string.Format("库存,Product,StoreId:{0},SkuId:{1},Stocks为NULL", storeId, prdProductByCache.RefSku.Id)); } else { prdProductByCache.RefSku.ReceptionMode = Entity.E_ReceptionMode.Machine; prdProductByCache.RefSku.SumQuantity = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.SumQuantity); prdProductByCache.RefSku.LockQuantity = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.LockQuantity); prdProductByCache.RefSku.SellQuantity = refSkuStock.Stocks.Where(m => m.RefType == Entity.E_StoreSellChannelRefType.Machine).Sum(m => m.SellQuantity); prdProductByCache.RefSku.SalePrice = refSkuStock.Stocks[0].SalePrice; prdProductByCache.RefSku.SalePriceByVip = refSkuStock.Stocks[0].SalePriceByVip; prdProductByCache.RefSku.IsOffSell = refSkuStock.Stocks[0].IsOffSell; } } prdProductByCache.BriefDes = prdProductByCache.BriefDes.NullToEmpty(); return(prdProductByCache); }
public PrdProductSkuModel GetProductSku(string storeId, string productSkuId) { var prdProductSkuByCache = RedisHashUtil.Get <PrdProductSkuModel>(redis_key_productSku_info, productSkuId); //如商品信息从缓存取不到,读取数据库信息加载 if (prdProductSkuByCache == null) { var prdProductRefSkuByDb = CurrentDb.PrdProductSku.Where(m => m.Id == productSkuId).FirstOrDefault(); if (prdProductRefSkuByDb == null) { return(null); } var prdProduct = GetProduct(storeId, prdProductRefSkuByDb.PrdProductId); if (prdProduct == null) { return(null); } prdProductSkuByCache = new PrdProductSkuModel(); prdProductSkuByCache.Id = prdProductRefSkuByDb.Id; prdProductSkuByCache.Name = prdProductRefSkuByDb.Name; prdProductSkuByCache.DispalyImgUrls = prdProduct.DispalyImgUrls; prdProductSkuByCache.MainImgUrl = prdProduct.MainImgUrl; prdProductSkuByCache.DetailsDes = prdProduct.DetailsDes; prdProductSkuByCache.BriefDes = prdProduct.BriefDes; prdProductSkuByCache.SpecDes = prdProductRefSkuByDb.SpecDes; RedisManager.Db.HashSetAsync(redis_key_productSku_info, productSkuId, Newtonsoft.Json.JsonConvert.SerializeObject(prdProductSkuByCache), StackExchange.Redis.When.Always); } var skuStock = CacheServiceFactory.StoreSellChannelStock.GetStock(storeId, productSkuId); if (skuStock == null) { LogUtil.Info(string.Format("库存,ProductSku,StoreId:{0},SkuId:{1},数据为NULL", storeId, productSkuId)); } else { if (skuStock.Stocks == null || skuStock.Stocks.Count == 0) { LogUtil.Info(string.Format("库存,ProductSku,StoreId:{0},SkuId:{1},Stocks为NULL", storeId, productSkuId)); } else { prdProductSkuByCache.SalePrice = skuStock.Stocks[0].SalePrice; prdProductSkuByCache.SalePriceByVip = skuStock.Stocks[0].SalePriceByVip; prdProductSkuByCache.IsOffSell = skuStock.Stocks[0].IsOffSell; foreach (var stock in skuStock.Stocks) { var l_stock = new PrdProductSkuModel.Stock(); l_stock.RefId = stock.RefId; l_stock.RefType = stock.RefType; l_stock.SlotId = stock.SlotId; l_stock.SumQuantity = stock.SumQuantity; l_stock.SellQuantity = stock.SellQuantity; l_stock.LockQuantity = stock.LockQuantity; if (prdProductSkuByCache.Stocks == null) { prdProductSkuByCache.Stocks = new List <PrdProductSkuModel.Stock>(); } prdProductSkuByCache.Stocks.Add(l_stock); } } } prdProductSkuByCache.BriefDes = prdProductSkuByCache.BriefDes.NullToEmpty(); return(prdProductSkuByCache); }