private void UpdateShopVisti(OrderRefundInfo refund, DateTime payDate) { ShopVistiInfo shopVistiInfo = context.ShopVistiInfo.FindBy((ShopVistiInfo item) => item.ShopId == refund.ShopId && (item.Date == payDate.Date)).FirstOrDefault(); if (shopVistiInfo != null) { if (refund.RefundMode == OrderRefundInfo.OrderRefundMode.OrderRefund) { List <OrderItemInfo> list = ( from d in context.OrderItemInfo where d.OrderId == refund.OrderId select d).ToList(); foreach (OrderItemInfo orderItemInfo in list) { ShopVistiInfo saleCounts = shopVistiInfo; saleCounts.SaleCounts = saleCounts.SaleCounts - orderItemInfo.Quantity; } } else if (refund.IsReturn) { ShopVistiInfo saleCounts1 = shopVistiInfo; saleCounts1.SaleCounts = saleCounts1.SaleCounts - refund.OrderItemInfo.ReturnQuantity; } ShopVistiInfo saleAmounts = shopVistiInfo; saleAmounts.SaleAmounts = saleAmounts.SaleAmounts - refund.Amount; context.SaveChanges(); } }
public void LogShopVisti(long shopId) { DateTime now = DateTime.Now; ShopVistiInfo shopVistiInfo = context.ShopVistiInfo.FirstOrDefault((ShopVistiInfo s) => s.ShopId.Equals(shopId) && s.Date.Year.Equals(now.Year) && s.Date.Month.Equals(now.Month) && s.Date.Day.Equals(now.Day)); if (shopVistiInfo == null || !shopVistiInfo.ShopId.Equals(shopId)) { DbSet <ShopVistiInfo> shopVistiInfos = context.ShopVistiInfo; ShopVistiInfo shopVistiInfo1 = new ShopVistiInfo() { ShopId = shopId, Date = DateTime.Now, VistiCounts = 1, SaleAmounts = new decimal(0), SaleCounts = 0 }; shopVistiInfos.Add(shopVistiInfo1); } else { ShopVistiInfo vistiCounts = shopVistiInfo; vistiCounts.VistiCounts = vistiCounts.VistiCounts + 1; } context.SaveChanges(); }
void StatisticCreateOrder(DateTime statisticStartDate, DateTime statisticEndDate) { Entity.Entities entity = new Entity.Entities(); //时间段内所有订单(下单数据统计) var orders = entity.OrderInfo.Where(e => e.OrderDate >= statisticStartDate && e.OrderDate < statisticEndDate).ToList(); var orderGroups = orders.GroupBy(e => e.ShopId); //已存在的店铺统计 var shopids = orderGroups.Select(e => e.Key).Distinct(); var shopVisitInfos = entity.ShopVistiInfo.Where(e => shopids.Contains(e.ShopId) && e.Date == statisticStartDate).ToList(); List <ShopVistiInfo> shopVisitRange = new List <ShopVistiInfo>(); foreach (var g in orderGroups) { ShopVistiInfo shopVisit = shopVisitInfos.FirstOrDefault(e => e.ShopId == g.Key); if (shopVisit == null) { shopVisit = new ShopVistiInfo(); shopVisitRange.Add(shopVisit); } shopVisit.Date = statisticStartDate; shopVisit.ShopId = g.Key; shopVisit.OrderCount = g.Count(); shopVisit.OrderAmount = g.Sum(e => e.TotalAmount); shopVisit.OrderUserCount = g.Select(e => e.UserId).Distinct().Count(); shopVisit.OrderProductCount = g.Sum(e => e.OrderProductQuantity); shopVisit.StatisticFlag = true; } //将没有订单记录的统计信息,统一修改为已统计 var noOrdersStatistic = shopVisitInfos.Where(e => !shopids.Any(p => p == e.ShopId)); foreach (var v in noOrdersStatistic) { v.StatisticFlag = true; } entity.ShopVistiInfo.AddRange(shopVisitRange); entity.SaveChanges(); //时间段内已支付订单(付款数据统计) var payOrders = entity.OrderInfo.Where(e => e.PayDate.HasValue && e.PayDate.Value >= statisticStartDate && e.PayDate.Value < statisticEndDate).ToList(); var payOrderGroups = payOrders.GroupBy(e => e.ShopId); //已存在的店铺统计 shopids = payOrderGroups.Select(e => e.Key).Distinct(); shopVisitInfos = entity.ShopVistiInfo.Where(e => shopids.Contains(e.ShopId) && e.Date == statisticStartDate).ToList(); shopVisitRange = new List <ShopVistiInfo>(); foreach (var g in payOrderGroups) { ShopVistiInfo shopVisit = shopVisitInfos.FirstOrDefault(e => e.ShopId == g.Key); if (shopVisit == null) { shopVisit = new ShopVistiInfo(); shopVisitRange.Add(shopVisit); } shopVisit.Date = statisticStartDate; shopVisit.ShopId = g.Key; shopVisit.OrderPayCount = g.Count(); shopVisit.OrderPayUserCount = g.Select(e => e.UserId).Distinct().Count(); shopVisit.SaleAmounts = g.Sum(e => e.TotalAmount); shopVisit.SaleCounts = g.Sum(e => e.OrderProductQuantity); shopVisit.StatisticFlag = true; } //将没有订单记录的统计信息,统一修改为已统计 var noPayOrdersStatistic = shopVisitInfos.Where(e => !shopids.Any(p => p == e.ShopId)); foreach (var v in noPayOrdersStatistic) { v.StatisticFlag = true; } entity.ShopVistiInfo.AddRange(shopVisitRange); //平台统计 PlatVisitsInfo platVisit = entity.PlatVisitsInfo.FirstOrDefault(e => e.Date == statisticStartDate); if (platVisit == null) { platVisit = new PlatVisitsInfo(); //添加 entity.PlatVisitsInfo.Add(platVisit); } platVisit.Date = statisticStartDate; platVisit.OrderCount = orders.Count(); platVisit.OrderAmount = orders.Sum(e => e.TotalAmount); platVisit.OrderUserCount = orders.Select(e => e.UserId).Distinct().Count(); platVisit.OrderProductCount = orders.Sum(e => e.OrderProductQuantity); //已支付订单 platVisit.OrderPayCount = payOrders.Count(); platVisit.OrderPayUserCount = payOrders.Select(e => e.UserId).Distinct().Count(); platVisit.SaleAmounts = payOrders.Sum(e => e.TotalAmount); platVisit.SaleCounts = payOrders.Sum(e => e.OrderProductQuantity); platVisit.StatisticFlag = true; entity.SaveChanges(); }