示例#1
0
        /// <summary>
        /// 获取二级分类下的子分类(获取三级)
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="cats"></param>
        /// <returns></returns>
        private List <TempCategory> GetChildTempCategoryList(TempCategory parent, CategoryItem[] cats, IEnumerable <TempCategory> location)
        {
            if (cats == null)
            {
                return(null);
            }

            List <TempCategory> list = new List <TempCategory>();

            foreach (var cat in cats)
            {
                //本地数据库中副本
                var dbItem = location.FirstOrDefault(p => p.Name.Equals(cat.Text, StringComparison.OrdinalIgnoreCase));

                long newCatId = dbItem != null ? dbItem.CategoryId : Tools.NewId();

                TempCategory category = new TempCategory
                {
                    Link       = cat.Link,
                    SiteCatId  = cat.CatId,
                    Layer      = parent.Layer + "," + newCatId.ToString(),
                    Name       = cat.Text,
                    CategoryId = newCatId,
                    ParentId   = parent.CategoryId,
                    Type       = collectorType
                };

                list.Add(category);
            }

            return(list);
        }
        public TempMonitor GetTempMonitor(TempCategory tempCategory)
        {
            return(tempCategory switch
            {
                TempCategory.Warm => new TempMonitor(30, 45),
                TempCategory.Fresh => new TempMonitor(16, 30),
                TempCategory.Cold => new TempMonitor(6, 15),
                TempCategory.Freezing => new TempMonitor(0, 5),

                _ => throw new ArgumentOutOfRangeException(message: "Invalid Temperature Expresion", paramName: nameof(tempCategory)),
            });
示例#3
0
        public IEnumerable <TempCategory> UpdateCategories()
        {
            List <TempCategory> categories = new List <TempCategory>();

            //本地数据库存储的商品分类
            var locationCategories = GetLocationCategories();

            //一级分类
            var first = GetFirstCategoryResult();

            foreach (var cat in first.Data)
            {
                //本地数据库中副本
                var dbItem = locationCategories.FirstOrDefault(p => p.Name.Equals(cat.Name, StringComparison.OrdinalIgnoreCase));

                long newCatId = dbItem != null ? dbItem.CategoryId : Tools.NewId();

                TempCategory category = new TempCategory
                {
                    Link       = cat.Link,
                    SiteCatId  = cat.CatId,
                    Layer      = newCatId.ToString(),
                    Name       = cat.Name,
                    CategoryId = newCatId,
                    ParentId   = 0,
                    Type       = collectorType
                };

                var childUrl = categoryOption.ChildCategoriesDataUrl.Replace("#wh_id#", cat.Id);

                var childData = GetChildCategoryResult(childUrl);

                if (childData != null && childData.Data != null)
                {
                    var child = GetChildTempCategoryList(category, childData.Data.Cats, locationCategories);

                    category.Child = child.ToArray();
                }

                categories.Add(category);
            }

            //更新本地商品分类
            new DataService().UpdateCategories(categories);

            return(categories);
        }
示例#4
0
        /// <summary>
        /// 这是专门为寻找分类准备的
        /// </summary>
        /// <param name="categoryId"></param>
        /// <returns></returns>
        TempCategory findTempCategory(long categoryId)
        {
            //定义查找方法
            var find = Tools.Fix <TempCategory, TempCategory>(f => (cat) =>
            {
                TempCategory temp = null;

                if (cat.CategoryId == categoryId)
                {
                    temp = cat;
                }
                else if (cat.Child != null)
                {
                    foreach (var c in cat.Child)
                    {
                        temp = f(c);
                        if (temp != null)
                        {
                            break;
                        }
                    }
                }

                return(temp);
            });

            TempCategory result = null;

            foreach (var cat in Categories)
            {
                result = find(cat);
                if (result != null)
                {
                    break;
                }
            }

            return(result);
        }