Beispiel #1
0
        /// <summary>
        /// 添加SKU
        /// </summary>
        /// <param name="productInfo">商品信息</param>
        /// <param name="productSKUItemList">商品SKU项列表</param>
        public static void AddSKU(ProductInfo productInfo, List <ProductSKUItemInfo> productSKUItemList)
        {
            List <ProductSKUItemInfo> attrList      = new List <ProductSKUItemInfo>();
            List <ProductSKUItemInfo> attrValueList = new List <ProductSKUItemInfo>();

            foreach (ProductSKUItemInfo productSKUItemInfo in productSKUItemList)
            {
                if (attrValueList.Find(x => x.AttrValueId == productSKUItemInfo.AttrValueId) == null)
                {
                    attrValueList.Add(productSKUItemInfo);
                }
            }
            foreach (ProductSKUItemInfo productSKUItemInfo in attrValueList)
            {
                if (attrList.Find(x => x.AttrId == productSKUItemInfo.AttrId) == null)
                {
                    attrList.Add(productSKUItemInfo);
                }
            }

            //sku数量
            int skuCount = 1;

            for (var i = 0; i < attrList.Count; i++)
            {
                skuCount = skuCount * attrValueList.FindAll(x => x.AttrId == attrList[i].AttrId).Count;
            }


            //sku项数量
            int skuItemCount = productSKUItemList.Count / skuCount;

            //sku组id
            int skuGid = TypeHelper.StringToInt(Randoms.CreateRandomValue(8));

            while (IsExistSKUGid(skuGid))
            {
                skuGid = TypeHelper.StringToInt(Randoms.CreateRandomValue(8));
            }
            productInfo.SKUGid = skuGid;

            //商品原始名称
            string oName = productInfo.Name;

            //循环创建商品,商品属性,商品sku项s
            for (int i = 0; i < skuCount; i++)
            {
                //格式化商品名称
                StringBuilder pName = new StringBuilder(oName);
                for (int j = skuItemCount * i; j < skuItemCount * (i + 1); j++)
                {
                    AttributeValueInfo attributeValueInfo = AdminCategories.GetAttributeValueById(productSKUItemList[j].AttrValueId);
                    if (attributeValueInfo.IsInput == 0)
                    {
                        pName.AppendFormat(" {0}", attributeValueInfo.AttrValue);
                    }
                    else
                    {
                        pName.AppendFormat(" {0}", productSKUItemList[j].InputValue);
                    }
                }
                productInfo.Name = pName.ToString();
                int pid = AddProduct(productInfo, 0, 0, null, string.Empty, string.Empty);//创建商品及其属性
                if (pid > 0)
                {
                    //创建商品sku项
                    for (int j = skuItemCount * i; j < skuItemCount * (i + 1); j++)
                    {
                        productSKUItemList[j].Pid    = pid;
                        productSKUItemList[j].SKUGid = skuGid;
                        CreateProductSKUItem(productSKUItemList[j]);
                    }
                }
            }
        }