private FavoriteCollectionResponse Get(float version, int userId, PagerRequest pagerRequest, CoordinateInfo coordinate, FavoriteSortOrder sortOrder, SourceType sourceType)
        {
           
                  FavoriteCollectionResponse response;
                  int totalCount;
                  if (version >= 2.1)
                  {
                      var entitys = _favoriteRepository.Get(userId, pagerRequest, out totalCount, sortOrder, sourceType);

                      var list = MappingManager.FavoriteCollectionResponseMapping(entitys, coordinate);

                      response = new FavoriteCollectionResponse(pagerRequest, totalCount) { Favorites = list };
                  }
                  else
                  {
                      var entitys = _favoriteRepository.GetPagedList(userId, pagerRequest, out totalCount, sortOrder, sourceType);

                      response = MappingManager.FavoriteCollectionResponseMapping(entitys, coordinate);
                      response.Index = pagerRequest.PageIndex;
                      response.Size = pagerRequest.PageSize;
                      response.TotalCount = totalCount;
                  }

                  return response;
        }
        public FavoriteCollectionResponse FavoriteCollectionResponseMapping(List<FavoriteEntity> source,
                                                                                   CoordinateInfo coordinateInfo)
        {
            if (source == null || source.Count == 0)
            {
                return new FavoriteCollectionResponse(new PagerRequest(1, 1)) { Favorites = new List<FavoriteInfoResponse>(0) };
            }

            //var storeids = source.Select(v => v.Store_Id).Distinct().Where(v => v != 0);
            //var dic = new Dictionary<int, List<int>>();
            var ms = source.Where(v => v.FavoriteSourceType == (int)SourceType.Promotion).Select(s => s.FavoriteSourceId).Distinct().ToList();
            var ps = source.Where(v => v.FavoriteSourceType == (int)SourceType.Product).Select(s => s.FavoriteSourceId).Distinct().ToList();

            //var stores = StoreResponseMapping(_storeRepository.GetListByIds(storeids.ToList()), coordinateInfo).ToList();
            var promotions = _promotionRepository.GetList(ms);
            var products = _productRepository.GetList(ps);

            var items = ItemsInfoResponseMapping(products, promotions).ToList();

            var t = new List<FavoriteInfoResponse>(items.Count);
            foreach (var i in items)
            {
                var a = Mapper.Map<ItemsInfoResponse, FavoriteInfoResponse>(i);
                a.FavoriteSourceId = i.Id;
                a.FavoriteSourceName = i.Name;
                a.FavoriteSourceType = i.SourceType;
                var r = source.FirstOrDefault(v => v.FavoriteSourceId == i.Id && v.FavoriteSourceType == i.SourceType);

                a.Id = r == null ? 0 : r.Id;
                a.StoreId = i.Store_Id;
                t.Add(a);
            }


            //TODO: 产品这个需要优化
            var result = new FavoriteCollectionResponse(new PagerRequest(1, source.Count), source.Count)
            {
                Favorites = t
            };

            return result;

            ////pp rs

            //var productResource = ResourceInfoResponsesMapping(GetListResourceEntities(SourceType.Product, ps)).ToList();
            //var msresource = ResourceInfoResponsesMapping(GetListResourceEntities(SourceType.Promotion, ms)).ToList();

            ////TODO: 产品这个需要优化
            //var result = new FavoriteCollectionResponse(new PagerRequest(1, source.Count), source.Count)
            //{
            //    Favorites = new List<FavoriteInfoResponse>(source.Count)
            //};
            //foreach (var s in source)
            //{
            //    //var n = String.Empty;
            //    FavoriteInfoResponse response = null;
            //    switch (s.FavoriteSourceType)
            //    {
            //        case (int)SourceType.Promotion:
            //            var p = promotions.FirstOrDefault(v => v.Id == s.FavoriteSourceId);
            //            response = FavoriteInfoResponseMapping(s, p);

            //            response.Resources = p == null ? new List<ResourceInfoResponse>(0) : msresource.Where(v => v.SourceId == p.Id && v.SourceType == (int)SourceType.Promotion).ToList();
            //            break;
            //        case (int)SourceType.Product:
            //            var t = products.FirstOrDefault(v => v.Id == s.FavoriteSourceId);
            //            response = FavoriteInfoResponseMapping(s, t);

            //            response.Resources = t == null ? new List<ResourceInfoResponse>(0) :
            //                productResource.Where(v => v.SourceId == t.Id && v.SourceType == (int)SourceType.Product).ToList();

            //            break;
            //    }

            //    if (response != null)
            //    {
            //        var store = stores.SingleOrDefault(v => v.Id == s.Store_Id);
            //        response.Store = store;
            //        response.StoreId = store == null ? 0 : store.Id;

            //        result.Favorites.Add(response);
            //    }
            //}

            //return result;
        }