using System; using System.Collections.Generic; using Library; using System.Linq; using MySystem.MainModels; namespace MySystem { public class UserTradeStatDbconn { public readonly static UserTradeStatDbconn Instance = new UserTradeStatDbconn(); public UserTradeStatDbconn() { } #region 获取单个字段 //个人业绩 public UserTradeData GetTradeByDate(int UserId, string TradeDate, string kind = "self") { string key = "UserTradeAmt:" + UserId + ":" + TradeDate + ":" + kind; //总交易 if (kind == "team") { key = "Team" + key; } UserTradeData obj = RedisDbconn.Instance.Get(key); if (obj != null) { return obj; } obj = new UserTradeData(); WebCMSEntities db = new WebCMSEntities(); bool check = db.UserTradeDaySummary.Any(m => m.UserId == UserId && m.SeoTitle == kind); if (check) { List data = db.UserTradeDaySummary.Where(m => m.UserId == UserId && m.TradeDate == TradeDate && m.SeoTitle == kind).ToList(); if (kind == "self") { obj.TotalAmt = data.Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); if (data.Where(m => m.QueryCount == 0).Count() > 0) { obj.PosAmt = data.Where(m => m.QueryCount == 0).Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); } else if (data.Where(m => m.QueryCount == 1).Count() > 0) { obj.QrAmt = data.Where(m => m.QueryCount == 1).Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); } obj.Brands = new List(); foreach (UserTradeDaySummary sub in data.OrderBy(m => m.BrandId).ToList()) { if (obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId) == null) { obj.Brands.Add(new Brand() { Id = sub.BrandId, Amt = sub.DirectTradeAmt + sub.DirectDebitTradeAmt, }); } else { obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId).Amt += sub.DirectTradeAmt + sub.DirectDebitTradeAmt; } } } else if (kind == "team") { obj.TotalAmt = data.Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); if (data.Where(m => m.QueryCount == 0).Count() > 0) { obj.PosAmt = data.Where(m => m.QueryCount == 0).Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); } else if (data.Where(m => m.QueryCount == 1).Count() > 0) { obj.QrAmt = data.Where(m => m.QueryCount == 1).Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); } obj.Brands = new List(); foreach (UserTradeDaySummary sub in data.OrderBy(m => m.BrandId).ToList()) { if (obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId) == null) { obj.Brands.Add(new Brand() { Id = sub.BrandId, Amt = sub.NonDirectTradeAmt + sub.NonDirectDebitTradeAmt, }); } else { obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId).Amt += sub.NonDirectTradeAmt + sub.NonDirectDebitTradeAmt; } } } } RedisDbconn.Instance.Set(key, obj); db.Dispose(); return obj; } public UserTradeData GetTradeByMonth(int UserId, string TradeMonth, string kind = "self") { string key = "UserTradeAmt:" + UserId + ":" + TradeMonth + ":" + kind; //总交易 if (kind == "team") { key = "Team" + key; } UserTradeData obj = RedisDbconn.Instance.Get(key); if (obj != null) { return obj; } obj = new UserTradeData(); WebCMSEntities db = new WebCMSEntities(); bool check = db.UserTradeDaySummary.Any(m => m.UserId == UserId && m.SeoTitle == kind); if (check) { List data = db.UserTradeDaySummary.Where(m => m.UserId == UserId && m.TradeMonth == TradeMonth && m.SeoTitle == kind).ToList(); if (kind == "self") { obj.TotalAmt = data.Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); if (data.Where(m => m.QueryCount == 0).Count() > 0) { obj.PosAmt = data.Where(m => m.QueryCount == 0).Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); } else if (data.Where(m => m.QueryCount == 1).Count() > 0) { obj.QrAmt = data.Where(m => m.QueryCount == 1).Sum(m => m.DirectTradeAmt + m.DirectDebitTradeAmt); } obj.Brands = new List(); foreach (UserTradeDaySummary sub in data.OrderBy(m => m.BrandId).ToList()) { if (obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId) == null) { obj.Brands.Add(new Brand() { Id = sub.BrandId, Amt = sub.DirectTradeAmt + sub.DirectDebitTradeAmt, }); } else { obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId).Amt += sub.DirectTradeAmt + sub.DirectDebitTradeAmt; } } } else if (kind == "team") { obj.TotalAmt = data.Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); if (data.Where(m => m.QueryCount == 0).Count() > 0) { obj.PosAmt = data.Where(m => m.QueryCount == 0).Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); } else if (data.Where(m => m.QueryCount == 1).Count() > 0) { obj.QrAmt = data.Where(m => m.QueryCount == 1).Sum(m => m.NonDirectTradeAmt + m.NonDirectDebitTradeAmt); } obj.Brands = new List(); foreach (UserTradeDaySummary sub in data.OrderBy(m => m.BrandId).ToList()) { if (obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId) == null) { obj.Brands.Add(new Brand() { Id = sub.BrandId, Amt = sub.NonDirectTradeAmt + sub.NonDirectDebitTradeAmt, }); } else { obj.Brands.FirstOrDefault(m => m.Id == sub.BrandId).Amt += sub.NonDirectTradeAmt + sub.NonDirectDebitTradeAmt; } } } } RedisDbconn.Instance.Set(key, obj); db.Dispose(); return obj; } #endregion } }