/// <summary> /// 插入授权关系信息 /// </summary> /// <param name="xml">XML格式的品牌数据.</param> /// <returns>大于0成功,否则失败</returns> /// <remarks> /// <list type="bullet"> /// </list> /// </remarks> public override int Insert(System.Xml.XmlDocument xml) { ClearCache(); int val = 0; ProductRelationEntity ent = new ProductRelationEntity(); ent.SetValues(xml); //检查信息是否存在 Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("UpConnectorId", ent.UpConnectorId); dic.Add("UpProductId", ent.UpProductId); dic.Add("UpGoodsId", ent.UpGoodsId); dic.Add("DownConnectorId", ent.DownConnectorId); dic.Add("DownProductId", ent.DownProductId); dic.Add("DownGoodsId", ent.DownGoodsId); ProductRelationEntity entAccount = DbAccess.GetEntity <ProductRelationEntity>(TableName, dic); if (entAccount != null) { return(-1); } val = DbAccess.ExecuteInsert(TableName, ent); return(val); }
public IResultResponse ImportProduct(int connectorId, int upConnectorId, int productId) { int val = 0; ConnectorEntity upConnector = (ConnectorEntity) new ConnectorBusiness(_dapperFactory).GetEntity("Id=" + upConnectorId); if (upConnector == null || upConnector.Id == null) { return(ResultResponse.ExceptionResult("上游不存在")); } GroupEntity upGroup = (GroupEntity) new GroupBusiness(_dapperFactory).GetEntity("Id=" + upConnector.GroupId); if (upGroup == null || upGroup.Id == null) { return(ResultResponse.ExceptionResult("上游不存在")); } ConnectorEntity connector = (ConnectorEntity) new ConnectorBusiness(_dapperFactory).GetEntity("Id=" + connectorId); if (connector == null || connector.Id == null) { return(ResultResponse.ExceptionResult("下游不存在")); } GroupEntity downGroup = (GroupEntity) new GroupBusiness(_dapperFactory).GetEntity("Id=" + connector.GroupId); if (downGroup == null || downGroup.Id == null) { return(ResultResponse.ExceptionResult("下游不存在")); } Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("FKId", upConnector.SellerId.ToString()); dic.Add("ProprietorId", upConnector.SellerId.ToString()); dic.Add("Proprietor", "2"); dic.Add("FKFlag", "2"); dic.Add("ProductId", productId.ToString()); string msg = ""; string datajson = ApiRequest.GetRemoteContent(upGroup.Domain + "/Route.axd", "mall.product.pullinfo", dic, out msg); if (string.IsNullOrEmpty(datajson)) { return(ResultResponse.ExceptionResult("拉取数据为空")); } var dict = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, object> >(datajson); if (!Utils.ToBool(dict["Success"])) { return(ResultResponse.ExceptionResult(Utils.ToString(dict["Message"])));; } #region 处理数据 Dictionary <string, object> content = dict["Content"] as Dictionary <string, object>; Dictionary <string, object> importData = new Dictionary <string, object>(); List <Dictionary <string, string> > picList = new List <Dictionary <string, string> >(); if (content.ContainsKey("Product")) { Dictionary <string, object> product = content["Product"] as Dictionary <string, object>; importData = product; int id = Utils.ToInt(product["ProductId"]); importData.Remove("ProductId"); importData.Add("ThirdId", id); importData["BrandId"] = 0; importData["CategoryId"] = 0; importData["TypeId"] = 0; importData.Add("Marketable", true); importData.Remove("FootIntro"); importData.Remove("HeadIntro"); importData.Remove("ShowstandIntro"); importData.Remove("DefaultUnitId"); importData.Add("DefaultSaleUnitId", 0); importData.Remove("BrandName"); importData.Remove("CustomCateId"); } ArrayList goods = new ArrayList(); if (content.ContainsKey("Goods")) { goods = content["Goods"] as ArrayList; foreach (Dictionary <string, object> item in goods) { int id = Utils.ToInt(item["GoodsId"]); item.Remove("GoodsId"); item.Remove("ProductId"); item.Add("ThirdId", id); string name = item["SpecValueText"].ToString(); item.Add("Name", name); item.Remove("SpecValueText"); if (item.ContainsKey("SpecValue")) { ArrayList specValue = item["SpecValue"] as ArrayList; foreach (Dictionary <string, object> specItem in specValue) { specItem["Id"] = 0; specItem.Add("Name", specItem["SpecName"].ToString()); specItem.Remove("SpecName"); string pic = specItem.ContainsKey("ImagePath") ? specItem["ImagePath"].ToString() : ""; if (pic.IndexOf("?") > -1) { pic = pic.Substring(0, pic.IndexOf("?")); } if (pic != "") { specItem["ImagePath"] = "/UserFiles/Supplier" + connector.SellerId + "/" + DateTime.Now.Date.ToString("yyyMMdd") + "/Images/" + Path.GetFileName(pic); Dictionary <string, string> pickv = new Dictionary <string, string>() { { "old", pic }, { "new", specItem["ImagePath"].ToString() } }; picList.Add(pickv); } specItem.Remove("SpecId"); } } if (item.ContainsKey("Pics")) { ArrayList pics = item["Pics"] as ArrayList; foreach (Dictionary <string, object> picItem in pics) { string pic = picItem.ContainsKey("VirtualPath") ? picItem["VirtualPath"].ToString() : ""; if (pic.IndexOf("?") > -1) { pic = pic.Substring(0, pic.IndexOf("?")); } if (pic != "") { picItem["ImagePath"] = "/UserFiles/Supplier" + connector.SellerId + "/" + DateTime.Now.Date.ToString("yyyMMdd") + "/Images/" + Path.GetFileName(pic); Dictionary <string, string> pickv = new Dictionary <string, string>() { { "old", pic }, { "new", picItem["ImagePath"].ToString() } }; picList.Add(pickv); } } } } } importData.Add("Goods", goods); ArrayList auxiliaryUnit = new ArrayList(); if (content.ContainsKey("AuxiliaryUnits")) { auxiliaryUnit = content["AuxiliaryUnits"] as ArrayList; foreach (Dictionary <string, object> unitItem in auxiliaryUnit) { unitItem["Id"] = 0; } } importData.Add("AuxiliaryUnit", auxiliaryUnit); importData.Add("ViceCatalogIds", content["ViceCatalogIds"]); ArrayList picsList = new ArrayList(); if (content.ContainsKey("Pics")) { picsList = content["Pics"] as ArrayList; foreach (Dictionary <string, object> picItem in picsList) { picItem.Remove("Id"); picItem.Remove("VirtualPath"); string picContent = picItem["Content"].ToString(); if (picContent.IndexOf("?") > -1) { picContent = picContent.Substring(0, picContent.IndexOf("?")); } if (picContent != "") { picItem["Content"] = "/UserFiles/Supplier" + connector.SellerId + "/" + DateTime.Now.Date.ToString("yyyMMdd") + "/Images/" + Path.GetFileName(picContent); Dictionary <string, string> pickv = new Dictionary <string, string>() { { "old", picContent }, { "new", picItem["Content"].ToString() } }; picList.Add(pickv); } } } importData.Add("Pics", picsList); if (content.ContainsKey("Video")) { Dictionary <string, object> video = content["Video"] as Dictionary <string, object>; video.Remove("Id"); video.Remove("GoodsId"); video.Remove("FileType"); video.Remove("Reorder"); video.Remove("HasVideo"); importData.Add("Video", video); } ArrayList specification = new ArrayList(); if (content.ContainsKey("Specification")) { specification = content["Specification"] as ArrayList; foreach (Dictionary <string, object> specItem in specification) { specItem["Id"] = 0; } } importData.Add("Specification", specification); importData.Add("Extends", content["Extends"]); importData.Add("Params", content["Params"]); importData.Add("SEO", content["SEO"]); #endregion List <Dictionary <string, object> > list = new List <Dictionary <string, object> >(); list.Add(importData); string data = JsonMapper.ToJson(list); IResultResponse result = ApiRequest.GetResponse(downGroup.Domain, "mall.product.push", new Dictionary <string, string>() { { "ProprietorId", connector.SellerId.ToString() }, { "FKId", connector.SellerId.ToString() }, { "FKFlag", "2" }, { "Products", HttpUtility.UrlEncode(data) }, }); if (result.Success) { DataTable dt = result.Content as DataTable; if (dt == null || dt.Rows.Count == 0) { return(ResultResponse.ExceptionResult("转换异常错误")); } StringBuilder sb = new StringBuilder(); string error = string.Empty; foreach (DataRow dr in dt.Rows) { var success = Utils.ToString(dr["Success"]) == "True"; if (!success) { error = (Utils.ToString(dt.Rows[0]["Message"])); continue; } Dictionary <string, object> output = dt.Rows[0]["Content"] as Dictionary <string, object>; if (output.ContainsKey("Goods")) { foreach (Object good in output["Goods"] as Object[]) { Dictionary <string, object> item = good as Dictionary <string, object>; ProductRelationEntity ent = new ProductRelationEntity(); ent.UpConnectorId = upConnectorId; ent.UpProductId = productId; ent.UpGoodsId = Utils.ToInt(item["ThirdId"]); ent.DownConnectorId = connectorId; ent.DownProductId = Utils.ToInt(output["Id"]); ent.DownGoodsId = Utils.ToInt(item["Id"]); sb.AppendLine(DbAccess.Provider.InsertCommandText(ent, TableName)); } } } if (sb.Length > 0) { val = DbAccess.ExecuteNonQuery(sb.ToString()); #region 导入图片数据 StringBuilder picsb = new StringBuilder(); foreach (Dictionary <string, string> item in picList) { if (item["old"].IndexOf("http://") > -1 || item["old"].IndexOf("https://") > -1) { picsb.Append(string.Format("<Image><Path>{0}</Path><Url>{1}</Url></Image>", item["new"], item["old"])); } else { picsb.Append(string.Format("<Image><Path>{0}</Path><Url>{2}{1}</Url></Image>", item["new"], item["old"], downGroup.ImageDomain)); } } Task.Run(() => { string bucketName = string.Empty; IResultResponse resBucket = ApiRequest.GetResponse(upGroup.Domain, "material.oss.bucket.name", new Dictionary <string, string>() { }); if (resBucket != null && resBucket.Success) { bucketName = Utils.ToString(resBucket.Content); } IResultResponse pic = ApiRequest.GetResponse(downGroup.Domain, "material.upload.saveremoteimage", new Dictionary <string, string>() { { "Module", "Product" }, { "FKId", connector.SellerId.ToString() }, { "FKFlag", "2" }, { "Images", (picsb.ToString()) }, { "BucketName", bucketName } }); }); #endregion } else { return(ResultResponse.ExceptionResult(error)); } return(ResultResponse.GetSuccessResult(val)); } else { return(result); } }