public int Deal(int player, List <string> hand, Round round, Game game) { var client = new RestClient(GetBaseUrl(game, player)); var result = new DealResponse { bid = 0 }; try { result = client.Post <DealResponse, dynamic>(new RestDataRequest <dynamic>("deal") { Data = new { hand = hand, round = round, game = game } }); } catch (ArgumentException ex) { // No response is required at this endpoint, SlimRest doesn't support responseless POST if (ex.Message != "Unrecognized Content-Type: ") { throw; } } return(result.bid); }
public void UpdateOrCreate(DealResponse deal) { if (deal.Deal != null) { var tableName = "Заявки"; var updating = deal.GetUpdatingRecord(); string newStatus; if (TryGetNewDealStatus(deal.Deal.Type, deal.Deal.Status, out newStatus)) { updating.fields.Add("Статус заявки", newStatus); } if (deal.Deal.ASSIGNED_BY_ID != null) { var assignUserID = GetFirstRecordID("Пользователи B24", "{ID B24}='" + deal.Deal.ASSIGNED_BY_ID + "'"); Log.Debug("Получение пользователя по ID " + deal.Deal.ASSIGNED_BY_ID); if (string.IsNullOrWhiteSpace(assignUserID)) { Log.Debug("Обновление справочника пользователей"); RefreshUsersDictionary(deal.Deal.AssignUser, out assignUserID); Log.Debug("Новый ID: " + assignUserID); } if (!string.IsNullOrWhiteSpace(assignUserID)) { updating.fields.Add("Ответственный New", new string[] { assignUserID }); } } var AtRecord_ID = GetFirstRecordID(tableName, $"Deal_ID='{deal.Deal.ID}'"); if (AtRecord_ID != null) { UpdateRecord(tableName, AtRecord_ID, updating); } else { updating.fields.Add("Deal_ID", deal.Deal.ID); lock (_dealLocker) { AtRecord_ID = GetFirstRecordID(tableName, $"Lead_ID='{deal.Deal.LEAD_ID}'"); if (AtRecord_ID != null) { UpdateRecord(tableName, AtRecord_ID, updating); } else { updating.fields.Add("Lead_ID", deal.Deal.LEAD_ID); CreateRecord(tableName, updating); } } } } }
public void TestListOrBoleanConverter() { string s = "{ \"result\": { \"UF_CRM_5BCF50BA94A18\": false, \"f\": 4 } }"; DealResponse r = JsonConvert.DeserializeObject <DealResponse>(s); Assert.IsNull(r.Deal.Type_IDs); s = JsonConvert.SerializeObject(r); s = "{ \"result\": { \"UF_CRM_5BCF50BA94A18\": [ 0, 75 ] } }"; r = JsonConvert.DeserializeObject <DealResponse>(s); Assert.AreEqual(r.Deal.Type_IDs[1], 75); s = JsonConvert.SerializeObject(r); }
private DealResponse GetDeal(string url) { DealResponse Deal = new DealResponse(); Synergy.Common.Request.WebClient client = new Synergy.Common.Request.WebClient(); HttpWebResponse response = client.Get(url, EnumUtilities.GetDescriptionFromEnumValue(ContentTypes.JSON), AuthorizationHeader.GetAuthorizationToken(_AccessToken.Accesstoken)); if (response.StatusCode == HttpStatusCode.OK) { var responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream); string rawResponse = streamReader.ReadToEnd(); Deal = JsonConvert.DeserializeObject <DealResponse>(rawResponse); } return(Deal); }
public void TestAirTableClientStringBuilding() { LeadResponse leadResponse = new LeadResponse(); Lead lead = new Lead(); leadResponse.Lead = lead; ContactResponse contactResponse = new ContactResponse(); Contact contact = new Contact(); contactResponse.Contact = contact; DealResponse dealResponse = new DealResponse(); Deal deal = new Deal(); dealResponse.Deal = deal; CompanyResponse companyResponse = new CompanyResponse(); Company company = new Company(); companyResponse.Company = company; Assert.IsTrue(string.IsNullOrEmpty(deal.AirTableClientString)); Assert.IsTrue(string.IsNullOrEmpty(lead.AirTableClientString)); lead.NAME = "Alex"; lead.PHONE = new List <PHONE> { new PHONE() { VALUE = "123" } }; Assert.AreEqual(lead.AirTableClientString, "Alex (123)"); deal.Contact = contactResponse; contact.NAME = "Alex"; contact.PHONE = new List <PHONE> { new PHONE { VALUE = "123" } }; Assert.AreEqual(deal.AirTableClientString, "Alex (123)"); deal.Company = companyResponse; company.TITLE = "Company"; Assert.AreEqual(deal.AirTableClientString, "Company Alex (123)"); }
public DealResponse GetDeal(string id) { DealResponse dealResponse = GetEntity <DealResponse>(BitrixSettings.GET_DEAL, id); if (dealResponse.Deal != null) { if (dealResponse.Deal.LEAD_ID != null && dealResponse.Deal.LEAD_ID != "0") { dealResponse.Deal.Lead = GetLead(dealResponse.Deal.LEAD_ID); } if (dealResponse.Deal.COMPANY_ID != null && dealResponse.Deal.COMPANY_ID != "0") { dealResponse.Deal.Company = GetCompany(dealResponse.Deal.COMPANY_ID); } dealResponse.Deal.TimeLine = GetTimeLine(id, "deal"); } return(dealResponse); }
public DealResponse Update(DealModelProperty model, long uid) { DealResponse Deal = new DealResponse(); string url = string.Format(GetUrl(UrlType.Deal, UrlSubType.DealById), uid); var request = new { properties = model.ToDealProperty() }; Synergy.Common.Request.WebClient client = new Synergy.Common.Request.WebClient(); HttpWebResponse response = client.Put(JsonConvert.SerializeObject(request), url, AuthorizationHeader.GetAuthorizationToken(_AccessToken.Accesstoken), EnumUtilities.GetDescriptionFromEnumValue(ContentTypes.JSON)); if (response.StatusCode == HttpStatusCode.OK) { var responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream); string rawResponse = streamReader.ReadToEnd(); Deal = JsonConvert.DeserializeObject <DealResponse>(rawResponse); } return(Deal); }
public ReturnResult SimulationMTGetDeal(string url, DealRequestBody body) { ReturnResult result = new ReturnResult { IsSuccess = false, }; try { DealRequest requestData = new DealRequest { partnerId = agentinfo.mt_partnerId, body = body }; var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData)); if (string.IsNullOrEmpty(responseStr)) { result.Message = "返回数据为空"; } else { DealResponse responseBody = (DealResponse)JsonConvert.DeserializeObject(responseStr, typeof(DealResponse)); if (responseBody.code == 200) { result.IsSuccess = true; result.Message = JsonConvert.SerializeObject(responseBody); } else { result.Message = responseBody.describe; } } } catch (Exception ex) { result.Message = "异常" + ex.Message; } return(result); }
private void CloseDeal(Deals DEAL) { if (!OSBlotter.IsLoaded) { return; } Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); var SETTINGS = OSBlotter.Get(DEAL.PRODUCT); string Rate; string BuySell; string PRODUCT = DEAL.PRODUCT; string Amount = Math.Abs(DEAL.CONTRACT).ToString(); int productsCount = ODBlotter.Count(PRODUCT); DealResponse INFO = null; if (DEAL.BUY) { BuySell = "S"; } else { BuySell = "B"; } int timeout = 0; Rates RATE = ORBlotter.Get(PRODUCT); do { timeout = 0; if (DEAL.BUY) { Rate = ABBREVIATIONS.ToString(RATE.BID, RATE.Decimals); //BID.ToString(); } else { Rate = ABBREVIATIONS.ToString(RATE.ASK, RATE.Decimals); //ASK.ToString(); } INFO = CEDT_TreadingService.InstantExecution(TOKEN, PRODUCT, BuySell, Amount, Rate, ACCOUNT.SqueringHazard); if (INFO.ErrorNo != "") { timeout = RATE.WaitForUpdate(2000); if (timeout < 0) { TsslInfo.Text = "Rate does not changed in 2s"; return; } else { TsslInfo.Text = "Time needed for rate to update: " + timeout + " [ms]"; } } } while (timeout != 0); double dPL = INFO.OutgoingMarginRealizedInBase; ACCOUNT.ClosedBalance += dPL; PLSum += dPL; Margin BALANCE = CEDT_TreadingService.GetMarginBlotter(TOKEN).Output[0]; TsslInfo.Text = "Profit Or Loss: Session [" + PLSum + "] USD | Current: Real " + (double.Parse(BALANCE.MarginBalance) - ACCOUNT.ClosedBalanceOld) + ", Predicted " + dPL; this.UpdateDeals(); DATABASE.Save_Account(ACCOUNT); this.UpdateAccount(); }
public void DeleteIfExist(DealResponse deal) { DeleteAllRecords("Заявки", $"Deal_ID='{deal.Deal.ID}'"); }
protected void Page_Load(object sender, EventArgs e) { #region 记入日志表Meituan_reqlog string reqip = CommonFunc.GetRealIP(); Meituan_reqlog mlog = new Meituan_reqlog { id = 0, reqstr = _requestParam, subtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), respstr = "", resptime = "", code = "", describe = "", req_type = "", sendip = reqip, stockagentcompanyid = 0 }; int logid = new Meituan_reqlogData().EditReqlog(mlog); mlog.id = logid; #endregion string date = System.Web.HttpContext.Current.Request.Headers.Get("Date"); string PartnerId = System.Web.HttpContext.Current.Request.Headers.Get("PartnerId"); string Authorization = System.Web.HttpContext.Current.Request.Headers.Get("Authorization"); string requestMethod = System.Web.HttpContext.Current.Request.HttpMethod; string URI = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath; //authorization 形式: "MWS" + " " + client + ":" + sign; string mtSign = Authorization.Substring(Authorization.IndexOf(":") + 1); mlog.req_type = URI; agentinfo = new AgentCompanyData().GetAgentCompanyByMeituanPartnerId(PartnerId); #region 验证是否已经配置美团合作商信息 if (agentinfo == null) { var response = new DealResponse(); response.partnerId = int.Parse(PartnerId); response.code = 300; response.describe = "分销尚未配置美团合作商信息(合作商PartnerId:" + PartnerId + ")"; string json = JsonConvert.SerializeObject(response); //把处理结果录入日志 mlog.respstr = mlog.respstr + json; mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mlog.code = response.code.ToString(); mlog.describe = response.describe; new Meituan_reqlogData().EditReqlog(mlog); LogHelper.RecordSelfLog("Error", "meituan", response.describe); Response.Write(json); return; } #endregion mlog.stockagentcompanyid = agentinfo.Id; #region 签名验证 string beforeSign = requestMethod + " " + URI + "\n" + date; string afterSign = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).GetSign(beforeSign); //判断签名是否正确 if (afterSign != mtSign) { var response = new DealResponse(); response.partnerId = int.Parse(PartnerId); response.code = 300; response.describe = "签名验证失败"; string json = JsonConvert.SerializeObject(response); //把处理结果录入日志 mlog.respstr = mlog.respstr + json; mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mlog.code = response.code.ToString(); mlog.describe = response.describe; new Meituan_reqlogData().EditReqlog(mlog); LogHelper.RecordSelfLog("Error", "meituan", "拉取产品 签名错误 mtSign-" + mtSign + " meSign-" + afterSign); Response.Write(json); return; } #endregion string actionResult = GetProductList(mlog); Response.Write(actionResult); }
/// 抓产品 public string GetProductList(Meituan_reqlog mlog) { var response = new DealResponse(); response.partnerId = agentinfo.mt_partnerId.ConvertTo <int>(0); try { var data = JsonConvert.DeserializeObject <DealRequest>(_requestParam); if (data.body == null) { response.code = 300; response.describe = "Body数据解析失败"; } else { DealRequestBody body = data.body; //todo 根据请求参数查询产品返回结果 if (body.method.Equals("multi", StringComparison.OrdinalIgnoreCase)) { #region 获取产品列表 int totalcount = 0; List <DealResponseBody> list = new DealResponseData().GetDealResponseBody(out totalcount, agentinfo, body.method, body.partnerDealIds); foreach (DealResponseBody rbody in list) { B2b_com_project pro_project = new B2b_com_projectData().GetProject(rbody.partnerPoiId.ConvertTo <int>(0)); if (pro_project != null) { List <ServicePhone> servicePhonelist = new List <ServicePhone>(); servicePhonelist.Add(new ServicePhone { phone = pro_project.Mobile.Split(' ')[0], startHour = "08", startMin = "00", endHour = "17", endMin = "00" }); //服务电话 rbody.servicePhones = servicePhonelist; //入园地址 rbody.getInAddresses = new string[] { pro_project.Address }; } //结算价 Agent_warrant warrant = new Agent_companyData().GetAgentWarrantInfo(agentinfo.Id, rbody.partnerDealId.ConvertTo <int>(0)); if (warrant != null) { rbody.settlementPrice = new B2bComProData().GetAgentPrice(rbody.partnerDealId.ConvertTo <int>(0), warrant.Warrant_level); } /******************************* * 产品图片(最多5张)=产品主图片+产品子图片(前4张) * ******************************/ List <DealImageInfo> imgs = rbody.dealImageInfos; int topnum = 4; List <int> childimgarr = new B2bComProData().GetProChildImgArr(rbody.partnerDealId.ConvertTo <int>(0), topnum); if (childimgarr.Count > 0) { foreach (int iimg in childimgarr) { imgs.Add(new DealImageInfo { imageName = "", imageUrl = iimg.ToString(), frontImage = false }); } } foreach (DealImageInfo iinfo in imgs) { var iimgurl = FileSerivce.GetImgUrl(iinfo.imageUrl.ConvertTo <int>(0)); iinfo.imageUrl = iimgurl; } rbody.dealImageInfos = imgs; } if (list.Count > 0) { response.code = 200; response.describe = "success"; response.partnerId = int.Parse(agentinfo.mt_partnerId); response.totalSize = totalcount; response.body = list; } else { response.code = 300; response.describe = "获取deal失败"; } #endregion } else if (body.method.Equals("page", StringComparison.OrdinalIgnoreCase)) { int pageindex = body.currentPage, pagesize = body.pageSize; if (pageindex <= 0) { pageindex = 1; } if (pagesize <= 0 || pagesize > 20) { pagesize = 20; } #region 获取产品列表 int totalcount = 0; List <DealResponseBody> list = new DealResponseData().GetDealResponseBody(out totalcount, agentinfo, body.method, body.partnerDealIds, pageindex, pagesize); foreach (DealResponseBody rbody in list) { B2b_com_project pro_project = new B2b_com_projectData().GetProject(rbody.partnerPoiId.ConvertTo <int>(0)); if (pro_project != null) { List <ServicePhone> servicePhonelist = new List <ServicePhone>(); servicePhonelist.Add(new ServicePhone { phone = pro_project.Mobile.Split(' ')[0], startHour = "08", startMin = "00", endHour = "17", endMin = "00" }); //服务电话 rbody.servicePhones = servicePhonelist; //入园地址 rbody.getInAddresses = new string[] { pro_project.Address }; } //结算价 Agent_warrant warrant = new Agent_companyData().GetAgentWarrantInfo(agentinfo.Id, rbody.partnerDealId.ConvertTo <int>(0)); if (warrant != null) { rbody.settlementPrice = new B2bComProData().GetAgentPrice(rbody.partnerDealId.ConvertTo <int>(0), warrant.Warrant_level); } /******************************* * 产品图片(最多5张)=产品主图片+产品子图片(前4张) * ******************************/ List <DealImageInfo> imgs = rbody.dealImageInfos; int topnum = 4; List <int> childimgarr = new B2bComProData().GetProChildImgArr(rbody.partnerDealId.ConvertTo <int>(0), topnum); if (childimgarr.Count > 0) { foreach (int iimg in childimgarr) { imgs.Add(new DealImageInfo { imageName = "", imageUrl = iimg.ToString(), frontImage = false }); } } foreach (DealImageInfo iinfo in imgs) { var iimgurl = FileSerivce.GetImgUrl(iinfo.imageUrl.ConvertTo <int>(0)); iinfo.imageUrl = iimgurl; } rbody.dealImageInfos = imgs; } if (list.Count > 0) { response.code = 200; response.describe = "success"; response.partnerId = int.Parse(agentinfo.mt_partnerId); response.totalSize = totalcount; //response.body = new List<DealResponseBody>(); response.body = list; } else { response.code = 300; response.describe = "获取deal为空"; } #endregion } else { response.code = 300; response.describe = "拉取方式(method:" + body.method + ")出错"; } } } catch (Exception ex) { response.code = 300; response.describe = "异常错误"; } string json = JsonConvert.SerializeObject(response); #region 把处理结果录入数据库 mlog.respstr = json; mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); mlog.code = response.code.ToString(); mlog.describe = response.describe; new Meituan_reqlogData().EditReqlog(mlog); #endregion return(json); }
/// <summary> /// This method tries to instantly execute passed request /// </summary> /// <param name="DRequest">DealRequest containing information how to communicate with server.</param> public void DealInstantExecute(DealRequest DRequest) { if (!IsReady) { return; } #region Liquidate All if (DRequest.LiquidateAll) { BlotterOfDealResponse blotter = CEDTS_TradingService.LiquidateAll(ForexAuthentication.Token); if (ServiceTrading.BlotterSuccess(blotter)) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion string product = DRequest.Product; if (!ForexRates.Data.ContainsKey(product)) { return; } #region Close Position if (DRequest.ClosePosition) { DealResponse DResponse = CEDTS_TradingService.ClosePosition(ForexAuthentication.Token, product); if (DResponse.success) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion int iDecimals = ForexConfiguration.GetDecimals(product);// ForexRates.Data[product].DECIMALS; string sRate = DRequest.Buy ? Doubles.ToString(DRequest.ASK, null, iDecimals, 0, double.MaxValue, '.') : Doubles.ToString(DRequest.BID, null, iDecimals, 0, double.MaxValue, '.'); string amount = DRequest.Amount.ToString(); #region Close if (DRequest.Close) { //double profit = this.GetLiveProfit(DRequest.ConfirmationNumber); DealResponse DResponse = CEDTS_TradingService.InstantExecution( ForexAuthentication.Token, product, DRequest.BuySell, amount, sRate, (int)DRequest.Tolerance); if (DResponse.success) { //Account.ClosedBalance += profit; DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion #region Buy Sell if (DRequest.Buy || DRequest.Sell) { DealResponse DResponse = CEDTS_TradingService.InstantExecution( ForexAuthentication.Token, product, DRequest.BuySell, amount, sRate, (int)DRequest.Tolerance); if (DResponse.success) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion throw new Exception("DealInstantExecute Undefined request !"); }