Exemple #1
0
        /// <summary>
        /// 解析阿里巴巴数据中的规格信息,对比现有规格,有则增加
        /// </summary>
        /// <returns>The deserial.</returns>
        /// <param name="dr">阿里巴巴数据集</param>
        /// <param name="instance">实例化api</param>
        /// <param name="cat_id">商品类型</param>
        public Dictionary <string, entity.Attribute> Deserial(string spec, SyncAPIClient instance, int cat_id)
        {
            JObject spsm = (JObject)JsonConvert.DeserializeObject(spec);
            Dictionary <string, List <string> > specdic = new Dictionary <string, List <string> >();

            if (spsm != null)
            {
                JToken skuList = spsm["skuList"];
                //解析出来的规格和值

                foreach (JToken j in skuList.Children())
                {
                    JToken jc = j["attributeModelList"];
                    foreach (JToken jcc in jc)
                    {
                        string key = "";
                        string val = "";
                        if (jcc["sourceAttributeValue"] != null && jcc["sourceAttributeName"].ToString() != "")
                        {
                            key = jcc["sourceAttributeName"].ToString();
                            val = jcc["sourceAttributeValue"].ToString();
                        }
                        else if (jcc["targetAttributeValue"] != null && jcc["targetAttributeValue"].ToString() != "")
                        {
                            key = jcc["targetAttributeName"].ToString();
                            val = jcc["targetAttributeValue"].ToString();
                        }

                        if (specdic.ContainsKey(key))
                        {
                            if (!specdic[key].Contains(val))
                            {
                                specdic[key].Add(val);
                            }
                        }
                        else
                        {
                            List <string> lt = new List <string>();
                            lt.Add(val);
                            specdic.Add(key, lt);
                        }
                    }
                }
            }

            AttributeList al = new AttributeList();

            al.setcat_id(cat_id);
            al.setattr_type(1);
            string  alobj = instance.send <string>(al);
            JObject alsm  = (JObject)JsonConvert.DeserializeObject(alobj);
            //现有规格属性
            JToken list = alsm["info"]["list"];

            //相同规格属性值对比,现有值中没有则增加
            Dictionary <string, entity.Attribute> reloadspec = new Dictionary <string, entity.Attribute>();

            foreach (KeyValuePair <string, List <string> > att in specdic)
            {
                //bool flag = true;
                //foreach(JToken attr in list.Children())
                //{
                //    entity.Attribute ae = new entity.Attribute();
                //    List<string> att_val = att.Value;
                //    //属性存在
                //    if (att.Key == attr["attr_name"].ToString())
                //    {
                //        //现有规格值中是以字符串形式保存规格值,将其转换成数组
                //        List<string> attr_values = new List<string>(attr["attr_values"].ToString().Split(new string[] { "\r\n" }, StringSplitOptions.None));

                //        ae.attr_id = int.Parse(attr["attr_id"].ToString());
                //        ae.cat_id = int.Parse(attr["cat_id"].ToString());
                //        ae.attr_name = attr["attr_name"].ToString();
                //        ae.attr_cat_type = int.Parse(attr["attr_cat_type"].ToString());
                //        ae.attr_input_type = int.Parse(attr["attr_input_type"].ToString());
                //        ae.attr_type = int.Parse(attr["attr_type"].ToString());
                //        ae.attr_values = attr["attr_values"].ToString();
                //        ae.attr_index = int.Parse(attr["attr_index"].ToString());
                //        ae.sort_order = int.Parse(attr["sort_order"].ToString());
                //        ae.is_linked = int.Parse(attr["is_linked"].ToString());
                //        foreach (string v in att_val)
                //        {
                //            if (!attr_values.Contains(v))
                //            {
                //                if (ae.attr_values.Trim() == "")
                //                {
                //                    ae.attr_values = v;
                //                }
                //                else
                //                {
                //                    ae.attr_values += "\r\n" + v;
                //                }
                //            }
                //        }

                //        dscapi.dsc.goods.Attributeupdate attu = new Attributeupdate(ae.attr_id.ToString());
                //        attu.setcat_id(ae.cat_id);
                //        attu.setattr_name(ae.attr_name);
                //        attu.setattr_cat_type(ae.attr_cat_type);
                //        attu.setattr_input_type(ae.attr_input_type);
                //        attu.setattr_type(ae.attr_type);
                //        attu.setattr_values(ae.attr_values);
                //        string result = instance.send<string>(attu);
                //        JObject re = (JObject)JsonConvert.DeserializeObject(result);
                //        reloadspec.Add(att.Key, ae);
                //        flag = false;
                //    }
                //}
                ////属性不存在

                //if (flag)
                //{
                dscapi.dsc.goods.Attribute at = new dscapi.dsc.goods.Attribute();
                at.setcat_id(cat_id);
                at.setattr_name(att.Key);
                //if(att.Key=="颜色")
                //{
                //    at.setattr_cat_type(1);
                //}else{
                at.setattr_cat_type(0);
                //}
                at.setattr_input_type(1);
                at.setattr_type(1);
                string sval = "";
                foreach (string v in att.Value)
                {
                    if (sval.Trim() == "")
                    {
                        sval = v;
                    }
                    else
                    {
                        sval += "\r\n" + v;
                    }
                }
                at.setattr_values(sval);
                string           result = instance.send <string>(at);
                JObject          obj    = (JObject)JsonConvert.DeserializeObject(result);
                entity.Attribute ae     = new entity.Attribute();
                ae.attr_id         = int.Parse(obj["id"].ToString());
                ae.cat_id          = cat_id;
                ae.attr_name       = att.Key;
                ae.attr_cat_type   = 0;
                ae.attr_input_type = 1;
                ae.attr_type       = 1;
                ae.attr_values     = sval;
                ae.attr_index      = 0;
                ae.sort_order      = 0;
                ae.is_linked       = 0;
                reloadspec.Add(att.Key, ae);
                //}
            }
            return(reloadspec);
        }
Exemple #2
0
 public DeserialSpec(SyncAPIClient instance, string alistr)
 {
     this.instance = instance;
     this.alistr   = alistr;
 }