public void AddFlashSale(FlashSaleModel model) { CheckFlashSale(model); var product = DbFactory.Default.Get <ProductInfo>().Where(p => p.Id == model.ProductId).FirstOrDefault(); DbFactory.Default.InTransaction(() => { FlashSaleInfo flashSale = new FlashSaleInfo(); flashSale.Title = model.Title; flashSale.ShopId = model.ShopId; flashSale.ProductId = model.ProductId; flashSale.Status = model.Status; flashSale.BeginDate = DateTime.Parse(model.BeginDate); flashSale.EndDate = DateTime.Parse(model.EndDate); flashSale.CategoryName = model.CategoryName; flashSale.LimitCountOfThePeople = model.LimitCountOfThePeople; flashSale.SaleCount = model.SaleCount; flashSale.ImagePath = product.RelativePath; flashSale.MinPrice = model.Details.Min(p => p.Price); DbFactory.Default.Add(flashSale); foreach (var detail in model.Details) { FlashSaleDetailInfo fsd = new FlashSaleDetailInfo(); fsd.FlashSaleId = flashSale.Id; fsd.ProductId = flashSale.ProductId; fsd.SkuId = detail.SkuId; fsd.Price = detail.Price; fsd.TotalCount = detail.TotalCount; DbFactory.Default.Add(fsd); } }); }
/// <summary> /// 根据商品Id获取一个限时购的详细信息 /// </summary> /// <param name="pid"></param> /// <returns></returns> public FlashSaleInfo GetLimitTimeMarketItemByProductId(long pid) { if (pid <= 0) { throw new MallException("商品Id不能识别"); } FlashSaleInfo result = null; var now = DateTime.Now; //var sql = new Sql("SELECT * FROM Mall_flashsale WHERE ProductId=@0 AND Status=@1 AND BeginDate<=@2 AND EndDate > @3", pid, FlashSaleInfo.FlashSaleStatus.Ongoing.GetHashCode(), now, now); result = DbFactory.Default.Get <FlashSaleInfo>().Where(e => e.ProductId == pid && e.Status == FlashSaleInfo.FlashSaleStatus.Ongoing && e.BeginDate <= now && e.EndDate > now).FirstOrDefault(); //在一个事务中,不能使用多个连接 //result = DbFactory.Default.FirstOrDefault<FlashSaleInfo>(sql);//, new { ProductId = pid, Status = FlashSaleInfo.FlashSaleStatus.Ongoing, BeginDate = now, EndDate = now }); return(result); }
public void UpdateFlashSale(FlashSaleModel model) { CheckFlashSale(model); FlashSaleInfo flashSale = DbFactory.Default.Get <FlashSaleInfo>().Where(p => p.Id == model.Id).FirstOrDefault(); if (flashSale == null) { throw new MallException("此活动已被删除"); } DbFactory.Default.InTransaction(() => { DbFactory.Default.Del <FlashSaleDetailInfo>().Where(p => p.ProductId == model.ProductId).Succeed(); if (flashSale.Status == FlashSaleInfo.FlashSaleStatus.WaitForAuditing) { if (flashSale.ProductId != model.ProductId) { var product = DbFactory.Default.Get <ProductInfo>().Where(p => p.Id == model.ProductId).FirstOrDefault(); flashSale.ImagePath = product.RelativePath; } flashSale.Title = model.Title; flashSale.ShopId = model.ShopId; flashSale.ProductId = model.ProductId; flashSale.BeginDate = DateTime.Parse(model.BeginDate); flashSale.CategoryName = model.CategoryName; flashSale.EndDate = DateTime.Parse(model.EndDate); flashSale.LimitCountOfThePeople = model.LimitCountOfThePeople; flashSale.MinPrice = model.Details.Min(p => p.Price); if (model.Status == FlashSaleInfo.FlashSaleStatus.WaitForAuditing) { flashSale.Status = FlashSaleInfo.FlashSaleStatus.WaitForAuditing; } DbFactory.Default.Update(flashSale); foreach (var detail in model.Details) { FlashSaleDetailInfo fsd = new FlashSaleDetailInfo(); fsd.ProductId = flashSale.ProductId; fsd.SkuId = detail.SkuId; fsd.Price = detail.Price; fsd.TotalCount = detail.TotalCount; fsd.FlashSaleId = flashSale.Id; DbFactory.Default.Add(fsd); } } else if (flashSale.Status == FlashSaleInfo.FlashSaleStatus.Ongoing) { flashSale.Title = model.Title; flashSale.CategoryName = model.CategoryName; flashSale.LimitCountOfThePeople = model.LimitCountOfThePeople; flashSale.EndDate = DateTime.Parse(model.EndDate); flashSale.MinPrice = model.Details.Min(p => p.Price); if (model.Status == FlashSaleInfo.FlashSaleStatus.WaitForAuditing) { flashSale.Status = FlashSaleInfo.FlashSaleStatus.WaitForAuditing; } DbFactory.Default.Update(flashSale); foreach (var detail in model.Details) { FlashSaleDetailInfo fsd = new FlashSaleDetailInfo(); fsd.ProductId = flashSale.ProductId; fsd.SkuId = detail.SkuId; fsd.Price = detail.Price; fsd.TotalCount = detail.TotalCount; fsd.FlashSaleId = flashSale.Id; DbFactory.Default.Add(fsd); } } }); }