Esempio n. 1
0
        public XmlNode GetProductInfo()
        {
            XmlNode ProductInfoNode = xdoc.CreateElement("productinfo");

            //产品信息节点
            XmlNode ProductNode = XmlUtility.AddNewNode(ProductInfoNode, "product", null);

            DataTable dt = dal.GetProductInfo(Parameter.ProductID);

            if (dt == null || dt.Rows == null || dt.Rows.Count <= 0)
            {
                throw new PublishException("商品不存在");
            }
            if (Convert.ToInt32(dt.Rows[0]["status"]) != 1)
            {
                throw new PublishException("商品已下架");
            }

            DataRow row = dt.Rows[0];

            XmlUtility.AddNewNode(ProductNode, "productid", Convert.ToString(row["ProductId"]));
            XmlUtility.AddNewNode(ProductNode, "productname", Convert.ToString(row["ProductName"]));
            XmlUtility.AddNewNode(ProductNode, "productcode", Convert.ToString(row["ProductCode"]));
            XmlUtility.AddNewNode(ProductNode, "categorypath", Convert.ToString(row["CatePath"]));
            XmlUtility.AddNewNode(ProductNode, "categoryid", Convert.ToString(row["CateId"]));
            XmlUtility.AddNewNode(ProductNode, "tradeprice", Convert.ToString(row["TradePrice"]));
            XmlUtility.AddNewNode(ProductNode, "merchantprice", Convert.ToString(row["MerchantPrice"]));
            XmlUtility.AddNewNode(ProductNode, "actualprice", Convert.ToString(Convert.ToDecimal(row["MerchantPrice"]) - Convert.ToDecimal(row["reduceprice"])));
            XmlUtility.AddNewNode(ProductNode, "tradeprice", Convert.ToString(row["ReducePrice"]));
            XmlUtility.AddNewNode(ProductNode, "stock", Convert.ToString(row["Stock"]));
            XmlUtility.AddNewNode(ProductNode, "stocktip", Convert.ToString(row["stocktip"]));
            XmlUtility.AddNewNode(ProductNode, "smallimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["SmallImage"])));
            XmlUtility.AddNewNode(ProductNode, "mediumimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["MediumImage"])));
            XmlUtility.AddNewNode(ProductNode, "largeimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["LargeImage"])));
            XmlUtility.AddNewNode(ProductNode, "keywords", Convert.ToString(row["Keywords"]));
            XmlUtility.AddCDataNode(ProductNode, "brief", Convert.ToString(row["Brief"]));
            XmlUtility.AddNewNode(ProductNode, "pageview", Convert.ToString(row["PageView"]));
            XmlUtility.AddNewNode(ProductNode, "inserttime", Convert.ToString(row["InsertTime"]));
            XmlUtility.AddNewNode(ProductNode, "changetime", Convert.ToString(row["ChangeTime"]));
            XmlUtility.AddNewNode(ProductNode, "score", Convert.ToString(row["Score"]));

            XmlUtility.AddCDataNode(ProductNode, "specifications", Convert.ToString(row["specifications"]));
            XmlUtility.AddCDataNode(ProductNode, "packinglist", Convert.ToString(row["packinglist"]));
            XmlUtility.AddCDataNode(ProductNode, "saleservice", Convert.ToString(row["aftersaleservice"]));
            XmlUtility.AddCDataNode(ProductNode, "offerset", Convert.ToString(row["offerset"]));

            XmlNode MultiImagesNode = XmlUtility.AddNewNode(ProductNode, "multiimages", null);
            XmlNode MainImageNode   = XmlUtility.AddNewNode(MultiImagesNode, "image", null);

            XmlUtility.AddNewNode(MainImageNode, "smallimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["SmallImage"])));
            XmlUtility.AddNewNode(MainImageNode, "largeimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["MediumImage"])));
            XmlUtility.AddNewNode(MainImageNode, "originimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(row["LargeImage"])));

            foreach (DataRow imageRow in dal.GetProductMultiImage(Parameter.ProductID).Rows)
            {
                XmlNode MultiImageNode = XmlUtility.AddNewNode(MultiImagesNode, "image", null);

                XmlUtility.AddNewNode(MultiImageNode, "smallimage", ProductMultiImageRule.GetMultiImageUrl(Convert.ToString(imageRow["smallimage"])));
                XmlUtility.AddNewNode(MultiImageNode, "largeimage", ProductMultiImageRule.GetMultiImageUrl(Convert.ToString(imageRow["largeimage"])));
                XmlUtility.AddNewNode(MultiImageNode, "originimage", ProductMultiImageRule.GetMultiImageUrl(Convert.ToString(imageRow["originimage"])));
            }


            //相关产品节点
            XmlNode   RelatedProductNode  = XmlUtility.AddNewNode(ProductInfoNode, "relatedproducts", null);
            DataTable RelatedProductTable = dal.GetRelatedProduct(dt.Rows[0]["relateproducts"].ToString());

            if (RelatedProductTable.Rows.Count > 0)
            {
                foreach (DataRow RelatedProductRow in RelatedProductTable.Rows)
                {
                    XmlNode RelatedProduct = XmlUtility.AddNewNode(RelatedProductNode, "product", null);

                    XmlUtility.AddNewNode(RelatedProduct, "productid", Convert.ToString(RelatedProductRow["productid"]));
                    XmlUtility.AddNewNode(RelatedProduct, "productimage", ProductMainImageRule.GetMainImageUrl(Convert.ToString(RelatedProductRow["smallimage"])));
                    XmlUtility.AddNewNode(RelatedProduct, "productname", Convert.ToString(RelatedProductRow["productname"]));
                    XmlUtility.AddNewNode(RelatedProduct, "productnameshort", Convert.ToString(RelatedProductRow["productname"]).Length > 10 ? Convert.ToString(RelatedProductRow["productname"]).Substring(0, 10) + ".." : Convert.ToString(RelatedProductRow["productname"]));
                    XmlUtility.AddNewNode(RelatedProduct, "price", Convert.ToDecimal(Convert.ToDecimal(RelatedProductRow["MerchantPrice"]) - Convert.ToDecimal(RelatedProductRow["reduceprice"])).ToString("00"));
                }
            }

            //关联资讯节点
            XmlNode   RelatedNewsNode  = XmlUtility.AddNewNode(ProductInfoNode, "relatednews", null);
            DataTable RelatedNewsTable = dal.GetRelatedNewsInfo(Parameter.ProductID);

            if (RelatedNewsTable != null && RelatedNewsTable.Rows.Count > 0)
            {
                XmlNode NewsNode = XmlUtility.AddNewNode(RelatedNewsNode, "news", null);

                XmlUtility.AddNewNode(NewsNode, "newsid", RelatedNewsTable.Rows[0]["newsid"].ToString());
                XmlUtility.AddNewNode(NewsNode, "newscontent", RelatedNewsTable.Rows[0]["newscontent"].ToString());
            }

            return(ProductInfoNode);
        }