/// <summary> /// type: 1行情,5评论 /// </summary> /// <param name="mobile"></param> /// <param name="type"></param> /// <returns></returns> private List <MarketVM> GetMyOrderMarkets(string mobile, int type, Dictionary <int, IEnumerable <Weixin_Pinglun> > threePl) { var list = new List <MarketVM>(); List <int> xhmarketIds = new List <int>(); var xhMarkets = new Dictionary <int, string>(); using (var ctx = new ShtxSms2008Entities()) { //change:// //var groups = ctx.XHMarketGroups.Where(o => (o.Flag == type) && o.IsForApp).ToList(); var groups = CacheService.GetMarketGroupForApp(type); CustomerBase cb = ctx.CustomerBases.FirstOrDefault(o => o.Tel.Contains(mobile) && o.SendInterFace == 102); if (cb != null) { mobile = cb.Tel; foreach (var group in groups) { //change:// //var markets = ctx.Markets.Where(o => o.GroupID == group.GroupID).ToList(); var markets = CacheService.GetMarketByGroupId(group.GroupID); foreach (var m in markets) { xhmarketIds.Add(m.MarketId); xhMarkets.Add(m.MarketId, group.GroupName + " - " + m.MarketName); } } var marketIds = ctx.Gps.Where(o => o.Tel == mobile && xhmarketIds.Contains(o.MarketID.Value)).Select(o => o.MarketID.Value).Distinct().ToList(); //评论,显示三条,价格不显示 if (type == (int)EnumMarketFlag.WXMarket) { var orderProducts = ctx.Gps.Where(o => o.Tel == mobile).Select(o => o.ProductID).Distinct().ToList(); foreach (var marketId in marketIds) { MarketVM order = new MarketVM(); order.Id = marketId; order.Name = xhMarkets[marketId]; //change:// //var hasProducts = ctx.SmsProducts.Where(o => o.MarketId == marketId && orderProducts.Contains(o.ProductId)).Select(o => o.ProductId).ToList(); //var pls = ctx.Weixin_Pinglun.OrderByDescending(o => o.create).Where(o => hasProducts.Contains(o.productId)).Take(3).ToList(); var hasProducts = CacheService.GetProductByMarketId(marketId).Where(o => orderProducts.Contains(o.ProductId)).Select(o => o.ProductId).ToList(); var pls = threePl.Where(o => hasProducts.Contains(o.Key)).SelectMany(o => o.Value).OrderByDescending(o => o.create).Take(3).ToList(); List <OrderPLVM> orderPls = new List <OrderPLVM>(); foreach (var pl in pls) { OrderPLVM vm = new OrderPLVM(); vm.Id = pl.id; vm.Title = pl.title; vm.Date = pl.date.ToString("yyyy-MM-dd"); vm.Url = "http://app.shtx.com.cn/StaticHtml/WeixinPingLun.html?mobile=" + mobile + "&id=" + pl.id; orderPls.Add(vm); } order.OrderPL = orderPls; list.Add(order); } } else { foreach (var marketId in marketIds) { MarketVM order = new MarketVM(); order.Id = marketId; order.Name = xhMarkets[marketId]; list.Add(order); } } } } return(list); }
public List <MarketGroupVM> GetMarkets(string mobile, int flag) { var list = new List <MarketGroupVM>(); var listOrder = new List <int>(); var defaultOrder = new List <int>(); //var threePl = TakeNPLEachGroup(3); var threePl = new Dictionary <int, IEnumerable <Weixin_Pinglun> >(); //判断是否是评论或价格 if (flag == (int)EnumMarketFlag.WXMarket) { threePl = TakeNPLEachGroup(3); } using (var ctx = new ShtxSms2008Entities()) { if (!string.IsNullOrWhiteSpace(mobile)) { listOrder.AddRange(ctx.MyAppGroups.Where(o => o.tel == mobile && o.Flag == flag).OrderByDescending(o => o.DisplayOrder).Select(o => o.GroupID)); if (listOrder.Count == 0) { //change:// //defaultOrder.AddRange(ctx.XHMarketGroups.Where(o => o.Flag == flag && o.IsForApp && (o.IsDefault ?? false)).Select(o => o.GroupID)); defaultOrder.AddRange(CacheService.GetGroupsForApp(flag)); } } //change:// //var groups = ctx.XHMarketGroups.Where(o => o.Flag == flag && o.IsForApp); var groups = CacheService.GetMarketGroupForApp(flag); foreach (var group in groups) { var groupId = group.GroupID; var vm = new MarketGroupVM() { Id = groupId, Name = group.GroupName }; //change:// //var markets = ctx.Markets.Where(o => o.GroupID == groupId).Select(o => new MarketVM { Id = o.MarketId, Name = o.MarketName, Order = (int)o.DisplayOrder }).OrderBy(o => o.Order).ToList(); var markets = CacheService.GetMarketByGroupId(groupId).Select(o => new MarketVM { Id = o.MarketId, Name = o.MarketName, Order = (int)o.DisplayOrder }).OrderBy(o => o.Order).ToList(); //评论显示,显示三条最新的。 if (flag == (int)EnumMarketFlag.WXMarket) { foreach (var market in markets) { //change:// //var hasProducts = ctx.SmsProducts.Where(o => o.MarketId == market.Id).Select(o => o.ProductId).ToList(); //var pls = ctx.Weixin_Pinglun.OrderByDescending(o => o.create).Where(o => hasProducts.Contains(o.productId)).Take(3).ToList(); var hasProducts = CacheService.GetProductByMarketId(market.Id).Select(o => o.ProductId).ToList(); var pls = threePl.Where(o => hasProducts.Contains(o.Key)).SelectMany(o => o.Value).OrderByDescending(o => o.create).Take(3).ToList(); List <OrderPLVM> orderPls = new List <OrderPLVM>(); foreach (var pl in pls) { OrderPLVM orderPlVM = new OrderPLVM(); orderPlVM.Id = pl.id; orderPlVM.Title = pl.title; orderPlVM.Date = pl.date.ToString("yyyy-MM-dd"); orderPlVM.Url = "http://app.shtx.com.cn/StaticHtml/WeixinPingLun.html?mobile=" + mobile + "&id=" + pl.id; orderPls.Add(orderPlVM); } market.OrderPL = orderPls; } } vm.Market = markets; vm.inBucket = "false"; if (string.IsNullOrWhiteSpace(mobile)) { vm.inBucket = "true"; } else { if (listOrder.Count == 0 && defaultOrder.Count == 0) { vm.inBucket = "true"; list.Add(vm); continue; } if (listOrder.Count != 0) { if (listOrder.Contains(groupId)) { vm.inBucket = "true"; list.Add(vm); continue; } } else { if (defaultOrder.Count != 0) { if (defaultOrder.Contains(groupId)) { vm.inBucket = "true"; } } } } list.Add(vm); } if (listOrder.Count != 0) { //排序订阅的 for (int i = 0; i < listOrder.Count; i++) { var group = list.FirstOrDefault(o => o.Id == listOrder[i]); if (group != null) { list.Remove(group); list.Insert(0, group); } } } } if (!string.IsNullOrWhiteSpace(mobile)) { //插入我的关注 MarketGroupVM root = new MarketGroupVM(); root.Id = 0; root.Name = "我的关注"; root.inBucket = "true"; var myOrder = GetMyOrderMarkets(mobile, flag, threePl); root.Market = myOrder; list.Insert(0, root); } return(list); }