Ejemplo n.º 1
0
        /// <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));
            }
        }
Ejemplo n.º 2
0
        /// <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));
            }
        }
Ejemplo n.º 3
0
        public int Insert(Sdk.AccessToken accessToken)
        {
            CloneResultEntity cloneResultEntity = new CloneResultEntity()
            {
                UpConnectorId   = accessToken.UpConnectorId,
                DownConnectorId = accessToken.Id,
                DownSellerId    = accessToken.SellerId,
                UpSellerId      = 0,
                Status          = 0
            };

            return(DbAccess.ExecuteInsert(TableName, cloneResultEntity));
        }
Ejemplo n.º 4
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));
            }
        }
Ejemplo n.º 5
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));
            }
        }
Ejemplo n.º 6
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));
            }
        }
Ejemplo n.º 7
0
 public DataTable GetCloneData(Sdk.AccessToken accessToken)
 {
     return(DbAccess.GetDataTable(TableName, "DownSellerId,CloneResult,Status", $"UpConnectorId={accessToken.UpConnectorId} and DownConnectorId={accessToken.Id} and Status=1", "Id desc", 1));
 }