コード例 #1
0
ファイル: Connector.cs プロジェクト: tynr426/ict
        /// <summary>
        /// 获取上游供应商的首页
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static IResultResponse GetUpDefalutUrl(SysParameter para)
        {
            IResultResponse resultResponse = OpsUtil.VerifyAccessToken(para);

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

            Sdk.AccessToken accessToken = resultResponse.Content as Sdk.AccessToken;
            try
            {
                ConnectorRelation connectorRelation = new ConnectorBusiness(para.dapperFactory).GetUpConnector(Utils.ToInt(accessToken.Id));
                if (connectorRelation.VirtualDir != null)
                {
                    Dictionary <string, string> dic = new Dictionary <string, string>()
                    {
                        { "method", "linker.login" },
                        { "userId", "0" },
                        { "storeId", connectorRelation.UpBuyerId.ToString() },
                        { "virtualdir", connectorRelation.VirtualDir },
                    };
                    var param = ApiRequest.GetPaySign(dic);
                    return(ResultResponse.GetSuccessResult($"{connectorRelation.Domain}/linker.axd?{param}"));
                }
                return(ResultResponse.ExceptionResult("你没有上游供应商"));
            }
            catch (Exception ex)
            {
                return(ResultResponse.ExceptionResult(ex, 500));
            }
        }
コード例 #2
0
ファイル: Connector.cs プロジェクト: tynr426/ict
        /// <summary>
        /// 推送克隆命令
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static IResultResponse PushCloneCommand(SysParameter para)
        {
            IResultResponse resultResponse = OpsUtil.VerifyAccessToken(para);

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

            Sdk.AccessToken accessToken = resultResponse.Content as Sdk.AccessToken;
            if (accessToken.UpConnectorId == 0)
            {
                return(ResultResponse.ExceptionResult("上下游关系没生效,请重新登录!"));
            }
            try
            {
                string key = accessToken.Id + "_" + accessToken.UpConnectorId;

                if (!IsSendCmd(key))
                {
                    return(ResultResponse.ExceptionResult("三分钟之内发送次过多"));
                }
                //克隆权限
                var cloneAuthority = new ProductRelationBusiness(para.dapperFactory).CloneAuthority(accessToken.Id, accessToken.UpConnectorId);
                if (!cloneAuthority)
                {
                    return(ResultResponse.ExceptionResult("你已经克隆过了!"));
                }
                long re = DistributePubSub.RedisPub("product_clone", new Dictionary <string, int>()
                {
                    { "upId", accessToken.UpConnectorId },
                    { "downId", accessToken.Id },
                });
                //bool sendCmd = WebSocketClient.SendCommand("Clone", "data.clone.push.command", new object[] { accessToken.Id, accessToken.UpConnectorId }, true);
                if (re == -1)
                {
                    return(ResultResponse.ExceptionResult("命令已发送失败!"));
                }

                //插入发送记录
                new CloneResultBusiness(para.dapperFactory).Insert(accessToken);

                //设置发送时间
                SetSendCmd(key);

                return(ResultResponse.GetSuccessResult("命令已发送成功,请稍后!"));
            }
            catch (Exception ex)
            {
                new Exceptions(ex, "clone");
                return(ResultResponse.ExceptionResult(ex.Message));
            }
        }
コード例 #3
0
ファイル: Connector.cs プロジェクト: tynr426/ict
        /// <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));
            }
        }
コード例 #4
0
ファイル: Connector.cs プロジェクト: tynr426/ict
        /// <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));
            }
        }
コード例 #5
0
ファイル: Connector.cs プロジェクト: tynr426/ict
        /// <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));
            }
        }
コード例 #6
0
ファイル: RouterController.cs プロジェクト: tynr426/ict
        [Route("/route.axd")]//根目录
        public async Task <string> ProcessRequest()
        {
            var context = _accessor.HttpContext;

            var requestString = await GetRequestString(context);

            if (string.IsNullOrEmpty(requestString))
            {
                return(ResultResponse.ExceptionResult("请求参数错误,缺少接口必须参数。", "", 4001).ToJson());
            }

            //解析请求参数 sign=4CB5E563FCC6E102DD7AD2DD178BC7BF&timestamp=2014-01-14+15%3A15%3A22&v=2.0&app_key=1012129701&method=taobao.user.seller.get&partner_id=top-apitools&format=xml
            SysParameter para = OpsUtil.ParseOpenApiParameter(requestString);

            para.RequestContent = requestString;
            // RequestParameter = para;
            // 参数有效性校验
            string msg = "";

            if (!ValidateRequest.ValidParameter(para, out msg))
            {
                return(ResultResponse.ExceptionResult(msg, "", 4001).ToJson());
            }

            // 对时间戳进行验证
            //if (!ValidateRequest.ValidTimestamp(para))
            //{
            //    return ResultResponse.ExceptionResult("接口调用时间戳有误。", "", 4002);
            //}

            ////验证签名,防止参数被修改
            //if (!ValidateRequest.ValidSign(para))
            //{
            //    return ResultResponse.ExceptionResult("签名信息不正确。", "", 4003);
            //}
            para.dapperFactory = _dapperFactory;
            //分发API请求
            return(Newtonsoft.Json.JsonConvert.SerializeObject(Distribute(para)));
        }