コード例 #1
0
ファイル: AjaxClient.cs プロジェクト: lukiffer/SpadesBot
        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);
        }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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)");
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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();
        }
コード例 #10
0
 public void DeleteIfExist(DealResponse deal)
 {
     DeleteAllRecords("Заявки", $"Deal_ID='{deal.Deal.ID}'");
 }
コード例 #11
0
ファイル: dealget.aspx.cs プロジェクト: radtek/etowncode
        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);
        }
コード例 #12
0
ファイル: dealget.aspx.cs プロジェクト: radtek/etowncode
        ///     抓产品
        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);
        }
コード例 #13
0
        /// <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 !");
        }