Beispiel #1
0
 public static IResultResponse OrderList(SysParameter para)
 {
     try
     {
         PagingQuery  query       = para.ToPagingQuery();
         int          connectorId = para.ToInt("ConnectorId");
         int          status      = para.ToInt("Status", 0);
         PagingResult result      = new OrderRelationBusiness(para.dapperFactory).GetOrderList(query, connectorId, status);
         return(ResultResponse.GetSuccessResult(result));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex, 500));
     }
 }
Beispiel #2
0
 public static IResultResponse GetProductList(SysParameter para)
 {
     try
     {
         PagingQuery  query       = para.ToPagingQuery();
         int          connectorId = para.ToInt("ConnectorId", 0);
         bool         auth        = para.ToBool("Auth");
         PagingResult result      = new AuthProductBusiness(para.dapperFactory).GetAuthProductList(query, connectorId, auth);
         return(ResultResponse.GetSuccessResult(result));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex, 500));
     }
 }
Beispiel #3
0
        /// <summary>
        /// 订单确认中转
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse OrderReceive(SysParameter para)
        {
            IResultResponse result     = null;
            int             sellerId   = para.ToInt("FKId");
            int             dbId       = para.ToInt("DBId");
            int             orderId    = para.ToInt("OrderId");
            string          oddNumber  = para.ToValue("OddNumber");
            int             dispatchId = para.ToInt("DispatchId");

            try
            {
                RelationMappingEntity relationMappingEntity = new ProductRelationBusiness(para.dapperFactory).GetUpMappingEntity(sellerId, dbId);
                if (relationMappingEntity.GoodsMapping.Count == 0)
                {
                    return(ResultResponse.ExceptionResult("没有找到商品映射关系"));
                }

                RelationMappingEntity orderMappingEntity = new OrderRelationBusiness(para.dapperFactory).GetUpOrder(sellerId, dbId, orderId);
                int replaceDispatchId = 0;
                if (dispatchId != 0)
                {
                    if (!orderMappingEntity.DispatchMapping.ContainsKey(dispatchId))
                    {
                        return(ResultResponse.GetSuccessResult("没有找到发货单id"));
                    }
                    replaceDispatchId = orderMappingEntity.DispatchMapping[dispatchId];
                }
                //发送
                result = ApiRequest.GetResponse(relationMappingEntity.ConnectorEntity.Domain, "order.dropshippingreceive.submit", new Dictionary <string, string>()
                {
                    { "DispatchId", replaceDispatchId.ToString() },
                    { "OddNumber", orderMappingEntity.OrderOddNumberMapping[oddNumber] },
                    { "OrderId", orderMappingEntity.OrderMapping[orderId].ToString() }
                });
                if (result.Success)
                {
                    return(ResultResponse.GetSuccessResult(dispatchId));
                }
                else
                {
                    return(result);
                }
            }
            catch (Exception ex)
            {
                return(ResultResponse.ExceptionResult(ex));
            }
        }
Beispiel #4
0
 public static IResultResponse ImportAuthPage(SysParameter para)
 {
     try
     {
         int siteType      = para.ToInt("PageType", 1);
         int pageId        = para.ToInt("PageId", 1);
         int connectorId   = para.ToInt("ConnectorId");
         int upConnectorId = para.ToInt("UpConnectorId");
         int result        = new AuthSiteBusiness(para.dapperFactory).ImportPage(connectorId, upConnectorId, siteType, pageId);
         return(ResultResponse.GetSuccessResult(result));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex, 500));
     }
 }
Beispiel #5
0
        /// <summary>
        /// 入驻
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public IResultResponse Join(Dictionary <string, object> dic)
        {
            if (dic == null)
            {
                return(ResultResponse.ExceptionResult("对像为空"));
            }
            ConnectorEntity entity = new ConnectorEntity();

            entity.SetValues(dic);
            entity.Status  = 1;
            entity.AddTime = DateTime.Now;
            GroupEntity groupEntity = new GroupEntity();

            groupEntity.SetValues(dic);
            groupEntity.Status  = 1;
            groupEntity.AddTime = DateTime.Now;
            IResultResponse resultResponse = null;

            using (IDTService dbHandler = DbAccess.DtService)
            {
                try
                {
                    dbHandler.BeginTransaction();
                    //保存主表
                    int id = Utils.ToInt(dbHandler.ExecuteScalar(DbProvider.InsertCommandText(groupEntity, GroupBusiness._TableName)));

                    if (id == 0)
                    {
                        throw new Exception("操作失败");
                    }

                    entity.GroupId = id;

                    dbHandler.ExecuteScalar(DbProvider.InsertCommandText(entity, TableName));

                    dbHandler.CommitTransaction();
                    resultResponse = ResultResponse.GetSuccessResult(1);
                }
                catch (Exception ex)
                {
                    dbHandler.RollbackTransaction();
                    resultResponse = ResultResponse.ExceptionResult(ex.Message);
                }
            }
            return(resultResponse);
        }
Beispiel #6
0
        /// <summary>
        /// 清除克隆数据
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse ClearCloneData(SysParameter para)
        {
            IResultResponse resultResponse = OpsUtil.VerifyAccessToken(para);

            if (!resultResponse.Success)
            {
                return(resultResponse);
            }

            Sdk.AccessToken accessToken = resultResponse.Content as Sdk.AccessToken;
            string          key         = accessToken.Id + "_" + accessToken.UpConnectorId;

            try
            {
                DataTable dt = new CloneResultBusiness(para.dapperFactory).GetCloneData(accessToken);
                if (dt == null || dt.Rows.Count == 0)
                {
                    return(ResultResponse.ExceptionResult("没有数据可清理"));
                }
                //清缓存
                ClearCmd(key);
                string domain  = accessToken.Domain;
                string content = Utils.ToString(dt.Rows[0]["CloneResult"]);
                resultResponse = ApiRequest.GetResponse(domain, "mall.data.clone.clear", new Dictionary <string, string>()
                {
                    { "FKId", accessToken.SellerId.ToString() },
                    { "FKFlag", "2" },
                    { "Content", HttpUtility.UrlEncode(content) }
                });

                if (resultResponse.Success)
                {
                    //删除连接器中
                    new ProductRelationBusiness(para.dapperFactory).DeleteData(accessToken.Id, accessToken.UpConnectorId);

                    return(ResultResponse.GetSuccessResult("删除成功"));
                }
                return(ResultResponse.ExceptionResult("删除失败"));
            }
            catch (Exception ex)
            {
                new Exceptions(ex, "clone");
                return(ResultResponse.ExceptionResult(ex.Message));
            }
        }
Beispiel #7
0
 public static IResultResponse GetCategoryList(SysParameter para)
 {
     try
     {
         int       connectorId = para.ToInt("ConnectorId", 0);
         bool      showAll     = para.ToBool("ShowAll");
         ArrayList result      = new AuthCategoryBusiness(para.dapperFactory).GetAuthCategoryList(connectorId, showAll);
         if (result == null)
         {
             return(ResultResponse.GetSuccessResult(new ArrayList()));
         }
         return(ResultResponse.GetSuccessResult(result));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex, 500));
     }
 }
Beispiel #8
0
        /// <summary>
        /// 获得二维码内容
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse GetConnectorByQr(SysParameter para)
        {
            string qr = para.ToValue("qr");
            string s  = ECF.Security.AES.Decode(qr);

            if (string.IsNullOrEmpty(s))
            {
                return(ResultResponse.ExceptionResult("该二维码无效"));
            }
            int connectorId = Utils.ToInt(s);

            Dictionary <string, object> dicInfo = new ConnectorBusiness(para.dapperFactory).GetConnectorById(connectorId);

            if (dicInfo == null || dicInfo.Count == 0)
            {
                return(ResultResponse.ExceptionResult("不存在该连接器对象"));
            }
            return(ResultResponse.GetSuccessResult(dicInfo));
        }
Beispiel #9
0
        public static IResultResponse GetAuthSiteById(SysParameter para)
        {
            try
            {
                int siteType    = para.ToInt("PageType", 1);
                int connectorId = para.ToInt("ConnectorId");

                ArrayList result = new AuthSiteBusiness(para.dapperFactory).GetAuthSiteById(connectorId, siteType);
                if (result == null)
                {
                    return(ResultResponse.GetSuccessResult(new ArrayList()));
                }
                return(ResultResponse.GetSuccessResult(result));
            }
            catch (Exception ex)
            {
                return(ResultResponse.ExceptionResult(ex, 500));
            }
        }
Beispiel #10
0
        /// <summary>
        /// 克隆权限
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse CloneAuthority(SysParameter para)
        {
            IResultResponse resultResponse = OpsUtil.VerifyAccessToken(para);

            if (!resultResponse.Success)
            {
                return(resultResponse);
            }

            Sdk.AccessToken accessToken = resultResponse.Content as Sdk.AccessToken;

            try
            {
                var       cloneAuthority = new ProductRelationBusiness(para.dapperFactory).CloneAuthority(accessToken.Id, accessToken.UpConnectorId);
                DataTable dt             = new CloneResultBusiness(para.dapperFactory).GetCloneData(accessToken);
                if (dt == null || dt.Rows.Count == 0)
                {
                    return(ResultResponse.GetSuccessResult(1));
                }
                int status = Utils.ToInt(dt.Rows[0]["Status"]);
                if (cloneAuthority)
                {
                    return(ResultResponse.GetSuccessResult(1));
                }
                else
                {
                    if (status == -1)
                    {
                        return(ResultResponse.ExceptionResult("清除克隆失败数据"));
                    }
                    else
                    {
                        return(ResultResponse.ExceptionResult("清除克隆成功数据"));
                    }
                }
            }
            catch (Exception ex)
            {
                new Exceptions(ex, "clone");
                return(ResultResponse.ExceptionResult(ex.Message));
            }
        }
Beispiel #11
0
        //public static Dictionary<string, object> GetRemoteDictionary(string path, Dictionary<string, object> dic, out string msg)
        //{
        //    string json = ApiRequest.GetRemoteContent(path, dic, out msg);
        //    if (!json.IsNullOrEmpty())
        //    {
        //        object x = JSON.JsonTObject(json);
        //        Dictionary<string, object> dicx = x as Dictionary<string, object>;
        //    }

        //    return null;
        //}

        /// <summary>
        /// 解析返回数据
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static IResultResponse ParseResponseData(string content)
        {
            IResultResponse result = null;

            var dic = JSON.Json2Dictionary(content);

            if (!dic.ContainsKey("Success"))
            {
                return(ResultResponse.ExceptionResult("不是有效对象"));
            }
            string message = dic["Message"].ToString();
            int    code    = Utils.ToInt(dic["Code"]);

            if (Utils.ToBool(dic["Success"]))
            {
                string name = dic["Content"].GetType().Name;

                if (dic["Content"] == null)
                {
                    result = ResultResponse.GetSuccessResult("", message);
                }

                else if (name == "Object[]")
                {
                    result = ResultResponse.GetSuccessResult(ConvertToDataTable(dic["Content"] as object[]), message);
                }

                else if (name == "Dictionary`2")
                {
                    result = ResultResponse.GetSuccessResult(ConvertToDictionary(dic["Content"]), message);
                }
                else
                {
                    result = ResultResponse.GetSuccessResult(dic["Content"].ToString(), message);
                }
            }
            else
            {
                result = ResultResponse.ExceptionResult(message, null, code);
            }
            return(result);
        }
Beispiel #12
0
        /// <summary>
        /// 获得下游列表
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse GetDownList(SysParameter para)
        {
            IResultResponse resultResponse = OpsUtil.VerifyAccessToken(para);

            if (!resultResponse.Success)
            {
                return(resultResponse);
            }

            Sdk.AccessToken accessToken = resultResponse.Content as Sdk.AccessToken;
            try
            {
                DataTable dt = new ConnectorBusiness(para.dapperFactory).GetDownList(accessToken.Id);
                return(ResultResponse.GetSuccessResult(dt));
            }
            catch (Exception ex)
            {
                return(ResultResponse.ExceptionResult(ex, 500));
            }
        }
Beispiel #13
0
 public static IResultResponse GetBrandList(SysParameter para)
 {
     try
     {
         int       connectorId = para.ToInt("ConnectorId", 0);
         string    firstSpell  = para.ToValue("FirstSpell");
         bool      showAll     = para.ToBool("ShowAll");
         string    keyword     = para.ToValue("KeyWord");
         ArrayList result      = new AuthBrandBusiness(para.dapperFactory).GetAuthBrandList(connectorId, firstSpell, keyword, showAll);
         if (result == null)
         {
             return(ResultResponse.GetSuccessResult(new ArrayList()));
         }
         return(ResultResponse.GetSuccessResult(result));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex, 500));
     }
 }
Beispiel #14
0
        /// <summary>
        /// 通过下游卖家mobile获取信息
        /// </summary>
        /// <param name="mobile">卖家mobile</param>
        /// <returns>大于0成功,否则失败</returns>
        /// <remarks>
        /// <list type="bullet">
        /// <item></item>
        /// </list>
        /// </remarks>
        public IResultResponse CheckDownConnector(string mobile, int upConnectorId)
        {
            //检查信息是否存在
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic.Add("Mobile", mobile);
            List <ConnectorEntity> entConnectors = DbAccess.GetEntity <List <ConnectorEntity> >(ConnectorBusiness._TableName, dic);

            if (entConnectors == null || entConnectors.Count == 0)
            {
                return(ResultResponse.ExceptionResult("您尚未成为连接器合作商"));
            }
            IResultResponse resultResponse = null;

            foreach (ConnectorEntity entConnector in entConnectors)
            {
                Dictionary <string, object> dic2 = new Dictionary <string, object>();
                dic2.Add("DownConnectorId", entConnector.Id);
                dic2.Add("Status", 1);
                RelationEntity relate = DbAccess.GetEntity <RelationEntity>(TableName, dic2);
                if (relate != null && relate.Id > 0)
                {
                    if (relate.UpConnectorId == upConnectorId)
                    {
                        resultResponse = ResultResponse.ExceptionResult("您已成为该合作商的下游合作商");
                    }
                    else
                    {
                        resultResponse = ResultResponse.ExceptionResult("您已拥有上游合作商,不能再添加");
                    }
                    continue;
                }
                GroupEntity group = (GroupEntity) new GroupBusiness(_dapperFactory).GetEntity("Id=" + entConnector.GroupId);
                Dictionary <string, object> result = new Dictionary <string, object>();
                result.Add("Id", entConnector.Id);
                result.Add("Domain", group.Domain);
                resultResponse = ResultResponse.GetSuccessResult(result.ToJson());
                break;
            }
            return(resultResponse);
        }
Beispiel #15
0
        public IResultResponse ValidateCode(int connectorId, int upConnectorId, string validateCode)
        {
            ConnectorEntity connector = (ConnectorEntity) new ConnectorBusiness().GetEntity("Id=" + connectorId);

            if (connector == null || connector.Id == null || connector.Id < 1)
            {
                return(ResultResponse.ExceptionResult("您尚未成为连接器合作商"));
            }
            string mobile = DES.Encode(string.Format("{0}|{1}|{2}|{3}|{4}|{5}", connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile));

            GroupEntity     group = (GroupEntity) new GroupBusiness().GetEntity("Id=" + connector.GroupId);
            IResultResponse res   = ApiRequest.GetResponse(group.Domain, "vast.account.supplier.validatecode.validate", new Dictionary <string, string>()
            {
                { "Mobile", mobile },
                { "ValidateCode", validateCode },
                { "ProprietorId", connector.SellerId.ToString() },
            });

            if (res.Success)
            {
                ConnectorEntity upConnector = (ConnectorEntity) new ConnectorBusiness().GetEntity("Id=" + upConnectorId);
                RelationEntity  ent         = new RelationEntity();
                ent.UpConnectorId   = upConnectorId;
                ent.UpBuyerId       = 0;
                ent.DownConnectorId = connectorId;
                ent.Status          = 0;//0待处理
                ent.AddTime         = DateTime.Now;
                ent.UpdateTime      = DateTime.Now;
                ent.InvitedFrom     = 0;
                int val = DbAccess.ExecuteInsert(TableName, ent);
                if (val > 0)
                {
                    return(ResultResponse.GetSuccessResult("您已成功申请成为该商家的下游合作商,请等待审核"));
                }
            }
            return(ResultResponse.ExceptionResult(res.Message));
        }
Beispiel #16
0
        public IResultResponse GetValidateCode(int connectorId, string codeToken, string verifyCode)
        {
            ConnectorEntity connector = (ConnectorEntity) new ConnectorBusiness(_dapperFactory).GetEntity("Id=" + connectorId);

            if (connector == null || connector.Id == null || connector.Id < 1)
            {
                return(ResultResponse.ExceptionResult("您尚未成为连接器合作商"));
            }
            GroupEntity     group  = (GroupEntity) new GroupBusiness(_dapperFactory).GetEntity("Id=" + connector.GroupId);
            string          mobile = DES.Encode(string.Format("{0}|{1}|{2}|{3}|{4}|{5}", connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile, connector.Mobile));
            IResultResponse res    = ApiRequest.GetResponse(group.Domain, "vast.account.supplier.validatecode.get", new Dictionary <string, string>()
            {
                { "mobile", mobile },
                { "VerifyCode", verifyCode },
                { "CodeToken", codeToken },
                { "ProprietorId", connector.SellerId.ToString() },
            });

            if (res.Success)
            {
                return(ResultResponse.GetSuccessResult(1));
            }
            return(ResultResponse.ExceptionResult(res.Message));
        }
Beispiel #17
0
        public static IResultResponse VerifyAccessToken(SysParameter para)
        {
            string token = para.ToValue("AccessToken");

            //解析Token
            AccessToken tokenEnt = AccessToken.ParseToken(token);


            if (tokenEnt == null || tokenEnt.SellerId <= 0 || tokenEnt.DBId <= 0
                )
            {
                return(ResultResponse.ExceptionResult("Token无效", "", 4004));
            }


            // 判断token有效期
            if (Utils.ToUnixTime(DateTime.Now) > tokenEnt.Expired)
            {
                return(ResultResponse.ExceptionResult("Token已过期", "", 4004));
            }


            return(ResultResponse.GetSuccessResult(tokenEnt));
        }
Beispiel #18
0
 public IResultResponse BatchImportProduct(int connectorId, int upConnectorId, string productIds)
 {
     if (string.IsNullOrWhiteSpace(productIds))
     {
         return(ResultResponse.ExceptionResult("请选择上货商品"));
     }
     string[] arrIds = productIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
     try
     {
         foreach (string id in arrIds)
         {
             int productId = Utils.ToInt(id);
             if (productId > 0)
             {
                 ImportProduct(connectorId, upConnectorId, productId);
             }
         }
         return(ResultResponse.GetSuccessResult("导入商品完毕"));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult("导入商品失败:" + ex.Message));
     }
 }
Beispiel #19
0
 public IResultResponse CheckUpConnector(int downConnectorId, int id, int status)
 {
     try
     {
         ClearCache();
         int             val           = 0;
         ConnectorEntity downConnector = (ConnectorEntity) new ConnectorBusiness(_dapperFactory).GetEntity("Id=" + downConnectorId);
         if (downConnector == null || Utils.ToInt(downConnector.Id) == 0)
         {
             return(ResultResponse.ExceptionResult("不存在该下游"));
         }
         RelationEntity entRelation = (RelationEntity) new RelationBusiness(_dapperFactory).GetEntity("Id=" + id + " and DownConnectorId=" + downConnectorId);
         if (entRelation == null || Utils.ToInt(entRelation.Id) == 0)
         {
             return(ResultResponse.ExceptionResult("不存在合作关系"));
         }
         ConnectorEntity connector = (ConnectorEntity) new ConnectorBusiness(_dapperFactory).GetEntity("Id=" + entRelation.UpConnectorId);
         if (connector == null || Utils.ToInt(connector.Id) == 0)
         {
             return(ResultResponse.ExceptionResult("不存在该上游"));
         }
         GroupEntity group = (GroupEntity) new GroupBusiness(_dapperFactory).GetEntity("Id=" + connector.GroupId);
         if (group == null || Utils.ToInt(group.Id) == 0)
         {
             return(ResultResponse.ExceptionResult("不存在该上游机组"));
         }
         if (status == 1 && entRelation.UpBuyerId == 0)
         {
             DataTable allRecord = DBTable("DownConnectorId=" + downConnectorId + " and Status=1");
             if (allRecord != null && allRecord.Rows.Count > 0)
             {
                 return(ResultResponse.ExceptionResult("已存在上游合作商"));
             }
             //快马上游插入下游客户账户
             long ts = Utils.ToUnixTime(DateTime.Now.AddMinutes(1));
             Dictionary <string, string> dic = new Dictionary <string, string>()
             {
                 { "fk_id", connector.SellerId.ToString() },
                 { "expire", ts.ToString() },
                 { "mobile", downConnector.Mobile }
             };
             string          json   = dic.ToJson();
             string          token  = ECF.Security.AES.Encode(json);
             IResultResponse result = ApiRequest.GetResponse(group.Domain, "account.add.downconnector", new Dictionary <string, string>()
             {
                 { "exchange_token", HttpUtility.UrlEncode(token) },
             });
             if (result.Success)
             {
                 Dictionary <string, object> content = result.Content as Dictionary <string, object>;
                 int storeId = content.ToInt("StoreId", 0);
                 entRelation.IsDefault = 1;
                 entRelation.UpBuyerId = storeId;
             }
             else
             {
                 return(ResultResponse.ExceptionResult("上游零售商关联失败,请稍后在试"));
             }
         }
         entRelation.IsDefault  = 1;
         entRelation.Status     = status;
         entRelation.UpdateTime = DateTime.Now;
         val = DbAccess.ExecuteUpdate(TableName, entRelation, new string[] { "Id" });
         if (val > 0)
         {
             return(ResultResponse.GetSuccessResult(1));
         }
         return(ResultResponse.ExceptionResult("接受邀请失败"));
     }
     catch (Exception ex)
     {
         return(ResultResponse.ExceptionResult(ex));
     }
 }
Beispiel #20
0
        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);
            }
        }