Beispiel #1
0
        private void ReSetPriority(int PageType, int RefSysNo)
        {
            //所有置顶的商品
            List <TopItemInfo> all = ObjectFactory <ITopItemDA> .Instance.QueryTopItem(PageType, RefSysNo);

            //已经下架商品列表
            List <ProductInfo> products    = ExternalDomainBroker.GetProductInfoListByProductSysNoList(all.Select(p => p.ProductSysNo.Value).ToList <int>()).Where(p => p.ProductStatus == ProductStatus.InActive_Show).ToList();//原代码写的status=0
            List <TopItemInfo> removedList = new List <TopItemInfo>();

            products.ForEach(item =>
            {
                removedList.Add(new TopItemInfo()
                {
                    ProductSysNo = item.SysNo, CategorySysNo = RefSysNo, CategoryType = PageType
                });
            });
            CancleTopItem(removedList);
            all = ObjectFactory <ITopItemDA> .Instance.QueryTopItem(PageType, RefSysNo);

            for (int i = 0; i < all.Count; i++)
            {
                TopItemInfo entity = all[i];
                entity.Priority = i + 1;
                ObjectFactory <ITopItemDA> .Instance.UpdateTopItemPriority(entity);
            }
        }
        //加载
        public ComputerConfigMaster LoadComputerConfig(int sysNo)
        {
            var configItems = _configDA.GetComputerConfigItems(sysNo);
            var categories  = _configDA.GetAllComputerPartsCategory();
            //调用IM接口取得商品详细
            var productSysNoList = configItems.Where(item => item.ProductSysNo.HasValue).Select(item => item.ProductSysNo.Value).ToList();
            var productInfoList  = ExternalDomainBroker.GetProductInfoListByProductSysNoList(productSysNoList);
            //调用Inventory接口取得库存信息
            var inventoryInfoList = ExternalDomainBroker.GetProductInventoryInfoByProductSysNoList(productSysNoList);

            foreach (var item in configItems)
            {
                //填充商品详细
                var foundProduct = productInfoList.FirstOrDefault(product => product.SysNo == item.ProductSysNo);
                if (foundProduct != null)
                {
                    item.ProductID    = foundProduct.ProductID;
                    item.ProductName  = foundProduct.ProductName;
                    item.UnitCost     = foundProduct.ProductPriceInfo.UnitCost;
                    item.CurrentPrice = foundProduct.ProductPriceInfo.CurrentPrice;
                }
                //填充库存信息
                var foundInventory = inventoryInfoList.FirstOrDefault(inventory => inventory.ProductSysNo.Value == item.ProductSysNo);
                if (foundInventory != null)
                {
                    item.OnlineQty = foundInventory.OnlineQty;
                }
                item.PartsCategories = categories.FindAll(c => c.ComputerPartSysNo == item.ComputerPartSysNo);
            }
            //按优先级升序
            configItems.OrderBy(item => item.Priority);


            var master = _configDA.LoadMaster(sysNo);

            master.ConfigItemList = configItems;

            return(master);
        }
        /// <summary>
        /// 从IMDomain获取商品及赠品的商品信息,主要是状态信息。
        /// </summary>
        private void InitProductInfosFromIM(SaleGiftBatchInfo saleGiftBatchInfo)
        {
            List <int> productSysNos = new List <int>();

            if (saleGiftBatchInfo.ProductItems1 != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.ProductItems1)
                {
                    productSysNos.Add(item.ProductSysNo.Value);
                }
            }

            if (saleGiftBatchInfo.ProductItems2 != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.ProductItems2)
                {
                    productSysNos.Add(item.ProductSysNo.Value);
                }
            }

            if (saleGiftBatchInfo.Gifts != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.Gifts)
                {
                    productSysNos.Add(item.ProductSysNo.Value);
                }
            }

            List <ProductInfo> products = ExternalDomainBroker.GetProductInfoListByProductSysNoList(productSysNos);

            //将商品的相关信息,状态、价格信息等赋值给Item.
            RetryFunc <ProductItemInfo, int> copyItemInfo = (ProductItemInfo item) => {
                ProductInfo swapItem = products.Find(p => p.SysNo == item.ProductSysNo);
                if (swapItem != null)
                {
                    item.ProductStatus = swapItem.ProductStatus;
                    item.ProductID     = swapItem.ProductID;
                    item.ProductName   = swapItem.ProductName;
                    item.CurrentPrice  = swapItem.ProductPriceInfo.CurrentPrice.Value;
                    item.C3SysNo       = swapItem.ProductBasicInfo.ProductCategoryInfo.SysNo;
                    item.BrandSysNo    = swapItem.ProductBasicInfo.ProductBrandInfo.SysNo;
                }

                return(0);
            };



            if (saleGiftBatchInfo.ProductItems1 != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.ProductItems1)
                {
                    copyItemInfo(item);
                }
            }

            if (saleGiftBatchInfo.ProductItems2 != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.ProductItems2)
                {
                    copyItemInfo(item);
                }
            }

            if (saleGiftBatchInfo.Gifts != null)
            {
                foreach (ProductItemInfo item in saleGiftBatchInfo.Gifts)
                {
                    copyItemInfo(item);
                }
            }
        }