public void Update(ResDTO dto) { Balance = dto.balance; Level = dto.level; LevelPercent = dto.levelPercent == null ? 0 : dto.levelPercent.Value; GameLevel = dto.gameLevel; GameLevelPercent = dto.gameLevelPercent; }
public ActionResult QueryByYear(ReqDTO req) { if (!req.Year.HasValue || req.Month.HasValue) { return(Json(OperationResult.Error("参数错误"))); } var statMonthes = new List <Tuple <DateTime, DateTime> >(); DateTime monthStart = DateTime.Now; DateTime monthEnd = DateTime.Now; for (int i = 1; i <= 12; i++) { // 2017-04-01 monthStart = new DateTime(year: req.Year.Value, month: i, day: 1); // 2017-5-01-00:00:01 => 2017-04-30 23:59:59 monthEnd = monthStart.AddMonths(1).AddSeconds(-1); statMonthes.Add(Tuple.Create(monthStart, monthEnd)); } var startTime = statMonthes.First().Item1; var endTime = statMonthes.Last().Item2; var dataQuery = _statService.Entities.Where(s => !s.IsDeleted && s.IsEnabled) .Where(s => s.CreatedTime >= startTime && s.CreatedTime <= endTime) .ToList() //.Select(s => new { s.PartnerCount, s.OrderCount, s.OrderMoney, s.SaleCount, s.SaleMoney, s.MemberCount,s.CreatedTime }) .GroupBy(s => s.CreatedTime.Month) .ToList(); if (!dataQuery.Any()) { return(Json(OperationResult.Error("没有数据"), JsonRequestBehavior.AllowGet)); } List <ResDTO> monthlyData = new List <ResDTO>(); //按月份统计出当月数据 for (int i = 0; i < statMonthes.Count; i++) { var monthItem = statMonthes[i]; var groupItem = dataQuery.FirstOrDefault(g => g.Key == monthItem.Item1.Month); if (groupItem == null) { // 无信息 monthlyData.Add(new ResDTO() { IsAccumulate = req.IsAccumulate, Year = monthItem.Item1.Year, Month = monthItem.Item1.Month, BeginTime = monthItem.Item1.ToString("yyyy-MM-dd HH:mm:ss"), EndTime = monthItem.Item2.ToString("yyyy-MM-dd HH:mm:ss") }); } else { var statData = new ResDTO { IsAccumulate = req.IsAccumulate, Year = monthItem.Item1.Year, Month = monthItem.Item1.Month, BeginTime = monthItem.Item1.ToString("yyyy-MM-dd HH:mm:ss"), EndTime = monthItem.Item2.ToString("yyyy-MM-dd HH:mm:ss"), PartnerCount = groupItem.Sum(p => p.PartnerCount), MemberCount = groupItem.Sum(p => p.MemberCount), OrderCount = groupItem.Sum(p => p.OrderCount), OrderMoney = groupItem.Sum(p => (decimal)p.OrderMoney), SaleCount = groupItem.Sum(p => p.SaleCount), SaleMoney = groupItem.Sum(p => (decimal)p.SaleMoney), }; monthlyData.Add(statData); } } if (!req.IsAccumulate) { //非累加模式,返回每月的数据 return(Json(new OperationResult(OperationResultType.Success, string.Empty, monthlyData), JsonRequestBehavior.AllowGet)); } else //累加模式 { var orderedMonthData = monthlyData.OrderBy(r => r.Month).ToArray(); var accumalatedData = orderedMonthData.Select(i => { var query = orderedMonthData.Where(r => r.Month <= i.Month); return(new ResDTO() { IsAccumulate = i.IsAccumulate, BeginTime = i.BeginTime, EndTime = i.EndTime, Year = i.Year, Month = i.Month, MemberCount = query.Sum(q => q.MemberCount), OrderCount = query.Sum(q => q.OrderCount), OrderMoney = query.Sum(q => q.OrderMoney), PartnerCount = query.Sum(q => q.PartnerCount), SaleCount = query.Sum(q => q.SaleCount), SaleMoney = query.Sum(q => q.SaleMoney) }); }).ToList(); return(Json(new OperationResult(OperationResultType.Success, string.Empty, accumalatedData), JsonRequestBehavior.AllowGet)); } }