/// <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)); } }
/// <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)); } }
/// <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)); } }
/// <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)); } }
/// <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)); } }
[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×tamp=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))); }